WdfDeviceCreateDeviceInterface 関数 (wdfdevice.h)
[KMDF と UMDF に適用]
WdfDeviceCreateDeviceInterface メソッドは、指定されたデバイスのデバイス インターフェイスを作成します。
構文
NTSTATUS WdfDeviceCreateDeviceInterface(
[in] WDFDEVICE Device,
[in] const GUID *InterfaceClassGUID,
[in, optional] PCUNICODE_STRING ReferenceString
);
パラメーター
[in] Device
フレームワーク デバイス オブジェクトへのハンドル。
[in] InterfaceClassGUID
デバイス インターフェイス クラスを識別する GUID へのポインター。
[in, optional] ReferenceString
デバイス インターフェイスの参照文字列を記述する UNICODE_STRING 構造体へのポインター。 文字列には、パス区切り文字 ("/" または "\") を含めてはなりません。 このパラメーターは省略可能であり、 NULL にすることができます。 詳細については、「解説」を参照してください。
戻り値
操作が成功した場合、WdfDeviceCreateDeviceInterface はSTATUS_SUCCESSを返します。
WdfDeviceCreateDeviceInterface が返すことができるその他の戻り値の一覧については、「フレームワーク オブジェクト作成エラー」を参照してください。
メソッドは、他の NTSTATUS 値を返す場合があります。
ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。
注釈
ドライバーは、EVT_WDF_DRIVER_DEVICE_ADDから、またはデバイスの起動後に WdfDeviceCreateDeviceInterface を呼び出すことができます。
ドライバーは、 そのEVT_WDF_DRIVER_DEVICE_ADD コールバック関数からこの関数を呼び出す場合、デバイスが起動し、デバイスが停止したときに無効にすると、インターフェイスが自動的に有効になります。 自動有効化を防ぐために、ドライバーは IsInterfaceEnabled パラメーターを FALSE に設定して WdfDeviceSetDeviceInterfaceStateEx を呼び出すことができます。
デバイスが既に起動した後にドライバーがこの関数を呼び出した場合、インターフェイスは無効のままです。 ドライバーは、必要に応じて WdfDeviceSetDeviceInterfaceState を 呼び出すことができます。
ドライバーでは、 ReferenceString パラメーターを使用して、1 つのインターフェイスのさまざまなインスタンスを区別できます。 つまり、ドライバーが同じデバイス インターフェイス クラスに対して WdfDeviceCreateDeviceInterface を 2 回呼び出す場合、ドライバーは毎回異なる ReferenceString パラメーターを 指定できます。 インターフェイスのインスタンスを開くと、I/O マネージャーはインスタンスの参照文字列をドライバーに渡します。 参照文字列は、インターフェイス インスタンスの名前のパス コンポーネントに追加されます。 ドライバーは、参照文字列を使用して、開いているデバイス インターフェイス クラスのインスタンスを決定できます。
デバイス インターフェイスと WdfDeviceCreateDeviceInterface メソッドの詳細については、「 デバイス インターフェイスの使用」を参照してください。
例
次の例では、デバイスの COM ポート インターフェイス クラスを登録します。
NTSTATUS status;
status = WdfDeviceCreateDeviceInterface(
Device,
(LPGUID) &GUID_DEVINTERFACE_COMPORT,
NULL
);
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
最小 UMDF バージョン | 2.0 |
Header | wdfdevice.h (Wdf.h を含む) |
Library | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf) |