次の方法で共有


BUS_INTERFACE_REFERENCE構造体 (ks.h)

ソフトウェア デバイス列挙子は、このインターフェイスをエクスポートして、ドライバーがカウント物理デバイス オブジェクト (PDO) を参照できるようにします。これにより、デバイスは使用中にアクティブなままになり、使用されていないときにアンロードされます。

構文

typedef struct {
  INTERFACE                  Interface;
  PFNREFERENCEDEVICEOBJECT   ReferenceDeviceObject;
  PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject;
  PFNQUERYREFERENCESTRING    QueryReferenceString;
} BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE;

メンバーズ

Interface

エクスポートされた INTERFACEを指定します。

ReferenceDeviceObject

ドライバーによって提供される KStrReferenceDeviceObject ルーチンへのポインター。

DereferenceDeviceObject

ドライバーによって提供される KStrDereferenceDeviceObject ルーチンへのポインター。

QueryReferenceString

ドライバーが提供する KStrQueryReferenceString ルーチン へのポインター。

備考

ドライバーは、IRP_MN_QUERY_INTERFACE マイナー関数コードを指定するIRP_MJ_PNP要求を作成して送信することによって、BUS_INTERFACE_REFERENCE インターフェイスを取得します。 これを行うには、ドライバーは次のことを行う必要があります。

  • ページングされたメモリ プールからBUS_INTERFACE_REFERENCE構造体を割り当て、ゼロフィルします。
  • クエリ インターフェイス要求用の IRP を作成し、新しい IRP の次のスタックの場所を取得します。
  • 新しいスタックの場所で、Parameters.QueryInterface.Interface メンバーの新しいBUS_INTERFACE_REFERENCE構造体へのポインターを指定します。
  • 完了ルーチンを設定し、ドライバー スタックに要求を送信します。
  • 要求が成功した場合、システムは parameters.QueryInterface.Interface によって指されるBUS_INTERFACE_REFERENCE構造体入力します。

必要条件

要件 価値
ヘッダー ks.h (Ks.h を含む)