WdfDeviceMiniportCreate 関数 (wdfminiport.h)
[KMDF にのみ適用]
WdfDeviceMiniportCreate メソッドは、ミニポート ドライバーが使用できるフレームワーク デバイス オブジェクトを作成します。
構文
NTSTATUS WdfDeviceMiniportCreate(
[in] WDFDRIVER Driver,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[in] PDEVICE_OBJECT DeviceObject,
[in, optional] PDEVICE_OBJECT AttachedDeviceObject,
[in, optional] PDEVICE_OBJECT Pdo,
[out] WDFDEVICE *Device
);
パラメーター
[in] Driver
WdfDriverCreate の以前の呼び出しによって取得された、ドライバーのフレームワーク ドライバー オブジェクトへのハンドル。
[in, optional] Attributes
新しいオブジェクトの属性を含む呼び出し元によって割り当てられた WDF_OBJECT_ATTRIBUTES 構造体へのポインター。 このパラメーターは省略可能であり、WDF_NO_OBJECT_ATTRIBUTESできます。
[in] DeviceObject
ミニポート ドライバーの機能デバイス オブジェクト (FDO) を表す WDM DEVICE_OBJECT 構造体へのポインター。
[in, optional] AttachedDeviceObject
デバイス スタック内の次の下位デバイス オブジェクトを表す WDM DEVICE_OBJECT 構造体へのポインター。
[in, optional] Pdo
デバイスの物理デバイス オブジェクト (PDO) を表す WDM DEVICE_OBJECT 構造体へのポインター。
[out] Device
新しいフレームワーク デバイス オブジェクトへのハンドルを受け取る場所へのポインター。
戻り値
WdfDeviceMiniportCreate メソッドでエラーが発生しない場合は、STATUS_SUCCESSを返します。 その他の戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
デバイス オブジェクトを割り当てませんでした。 |
WdfDeviceMiniportCreate が返すことができるその他の戻り値の一覧については、「Framework オブジェクト作成エラー」を参照してください。
メソッドは、他の NTSTATUS 値を返す場合があります。
ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。
注釈
ミニポート ドライバーがフレームワークを使用する場合、ミニポート ドライバーは、デバイスが使用可能であることを通知するときに WdfDeviceMiniportCreate を呼び出す必要があります。 ミニポート ドライバーは WdfDeviceCreate を呼び出しません。
ミニポート ドライバーは、 そのポート ドライバーから DeviceObject、 AttachedDeviceObject、および PDO ポインターを受け取る可能性があります。 たとえば、NDIS ミニポート ドライバーは、 NdisMGetDeviceProperty を呼び出すことによって、これらのポインターを取得できます。
WdfDeviceMiniportCreate を呼び出してミニポート ドライバーが取得するフレームワーク デバイス オブジェクトには、次の制限が適用されます。
- デバイス オブジェクトが表すデバイスは、プラグ アンド プレイをサポートする必要があります。
- デバイス オブジェクトは、デバイス オブジェクトのイベント コールバック関数をサポートしていません。 そのため、ポート ドライバーは、すべてのプラグ アンド プレイ (PnP) と電源管理操作を処理する必要があります。
- デバイス オブジェクト ハンドルを WdfWmiProviderCreate に渡すことができないので、ポート ドライバーは Windows Management Instrumentation (WMI) に必要なサポートを提供する必要があります。
- デバイス オブジェクト ハンドルを WdfIoQueueCreate に渡すことができないので、フレームワークはミニポート ドライバーの I/O キューをサポートしていません。
- デバイス オブジェクト ハンドルを WdfInterruptCreate に渡すことができないので、フレームワークはミニポート ドライバーの割り込みオブジェクトをサポートしていません。
- デバイス オブジェクト ハンドルは、WdfDeviceGetIoTarget、WdfDeviceWdmGetDeviceObject、WdfDeviceWdmGetAttachedDevice、WdfDeviceWdmGetPhysicalDevice を除く、一般的なフレームワーク デバイス オブジェクト メソッドには渡すことができません。
- デバイス オブジェクト ハンドルを WdfFdoQueryForInterface 以外のフレームワーク FDO メソッドに渡すことはできません。
- デバイス オブジェクト ハンドルは、 どのフレームワーク PDO メソッド にも WdfChildListCreate にも渡すことができないため、ミニポート ドライバーをバス ドライバーにすることはできません。
- ドライバーは最終的に WdfObjectDelete を呼び出して 、WdfDeviceMiniportCreate によって作成されるデバイス オブジェクトを削除する必要があります。
I/O 要求を I/O ターゲットに送信するために、ミニポート ドライバーはデバイス オブジェクト ハンドルを WdfDeviceGetIoTarget、 WdfIoTargetCreate、または WdfUsbTargetDeviceCreateWithParameters に渡す場合があります。
デバイスが DMA 操作をサポートしている場合、ミニポート ドライバーは WdfDmaEnablerCreate にデバイス オブジェクト ハンドルを渡すことができます。
ミニポート ドライバーの詳細については、「ミニポート ドライバー での Kernel-Mode ドライバー フレームワークの使用」を参照してください。
例
次のコード例では 、NdisMGetDeviceProperty を呼び出して 、DeviceObject、 AttachedDeviceObject、 および PDO ポインターを取得します。は、デバイス オブジェクトのコンテキスト空間を初期化し、ミニポート デバイス オブジェクトを作成します。
WDF_OBJECT_ATTRIBUTES ObjectAttributes;
NdisMGetDeviceProperty(
MiniportAdapterHandle,
&Adapter->Pdo,
&Adapter->Fdo,
&Adapter->NextDeviceObject,
NULL,
NULL
);
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
&ObjectAttributes,
WDF_DEVICE_INFO
);
ntStatus = WdfDeviceMiniportCreate(
WdfGetDriver(),
&ObjectAttributes,
Adapter->Fdo,
Adapter->NextDeviceObject,
Adapter->Pdo,
&Adapter->WdfDevice
);
if (!NT_SUCCESS (ntStatus)) {
Status = NDIS_STATUS_FAILURE;
break;
}
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
Header | wdfminiport.h (Wdfminiport.h を含む) |
Library | Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。 |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf) |