WdfDeviceInitSetIoTypeEx 関数 (wdfdevice.h)
[KMDF と UMDF に適用]
WdfDeviceInitSetIoTypeEx メソッドは、ドライバーが読み取り要求と書き込み要求に含まれるデータ バッファーにアクセスする方法と、指定したデバイスのデバイス I/O 制御要求に対して、メソッドまたはユーザー設定を設定します。
構文
void WdfDeviceInitSetIoTypeEx(
[in] PWDFDEVICE_INIT DeviceInit,
[in] PWDF_IO_TYPE_CONFIG IoTypeConfig
);
パラメーター
[in] DeviceInit
WDFDEVICE_INIT構造体へのポインター。
[in] IoTypeConfig
WDF_IO_TYPE_CONFIG_INIT マクロ を 使用して初期化WDF_IO_TYPE_CONFIG構造体へのポインター。
戻り値
なし
解説
KMDF バージョン 1.11 以前を使用してドライバーを作成する場合は、代わりに WdfDeviceInitSetIoType を使用する必要があります。
Kmdf KMDF ドライバーは WdfDeviceInitSetIoTypeEx を呼び出して、読み取り要求と書き込み要求のバッファー アクセス メソッドを設定します。 デバイス I/O 制御要求の場合、フレームワークは I/O 制御コード (IOCTL) でエンコードされたバッファーの種類を使用します。
Umdf UMDF ドライバーは WdfDeviceInitSetIoTypeEx を呼び出して、読み取り要求と書き込み要求、およびデバイス I/O 制御要求の基本設定を登録します。 UMDF ドライバーが WdfDeviceInitSetIoTypeEx に提供する値は設定のみであり、フレームワークで使用される保証はありません。 ドライバーは WdfDeviceGetDeviceStackIoType を呼び出して、UMDF がデバイスの読み取り/書き込み要求と I/O 制御要求に割り当てたバッファー アクセス メソッドを決定できます。 I/O 制御要求の場合、フレームワークが使用するアクセス方法は、IOCTL で指定されたアクセス方法と、ドライバーによって要求されるアクセス メソッドとは異なる場合があります。
ドライバーが WdfDeviceInitSetIoTypeEx を呼び出す場合は、 WdfDeviceCreate を呼び出す前に呼び出す必要があります。
ドライバーが WdfDeviceInitSetIoTypeEx を呼び出さない場合、フレームワークは、指定されたデバイスに対してドライバーのバッファー アクセス メソッドを WdfDeviceIoBuffered に設定します。
KMDF フィルター ドライバーから WdfDeviceInitSetIoTypeEx を 呼び出しても効果はありません。 KMDF フィルター ドライバーの場合、フレームワークは、ドライバー スタック内の次の下位ドライバーが指定する I/O 型を使用します。
ただし、UMDF フィルター ドライバーでは、 WdfDeviceInitSetIoTypeEx を呼び出すことによって、バッファー アクセス メソッドの設定を登録できます。
ドライバー スタック内のすべての UMDF ドライバーは、デバイスのバッファーにアクセスするために同じメソッドを使用する必要があります。 UMDF で、一部のドライバーがバッファーされた I/O またはダイレクト I/O をデバイスに対して優先し、他のドライバーがデバイスにバッファーされた I/O のみを使用すると判断した場合、UMDF はすべてのドライバーにバッファーされた I/O を使用します。 1 つ以上のスタックのドライバーがバッファーされた I/O のみを優先し、他のドライバーが直接 I/O のみを好む場合、UMDF はイベントをシステム イベント ログに記録し、ドライバー スタックを起動しません。
バッファー アクセスメソッドの詳細については、「 データ バッファーへのアクセス」を参照してください。
このメソッドは、 IWDFDeviceInitialize2::SetIoTypePreference に相当する UMDF 2.0 です。
例
次のコード例では、 WDF_IO_TYPE_CONFIG 構造体を初期化し、ドライバーのバッファー アクセス設定をダイレクト I/O に設定し、32 KB 未満の転送でバッファー I/O を使用するように指定し、 WdfDeviceInitSetIoTypeEx を呼び出します。
WDF_IO_TYPE_CONFIG ioConfig;
WDF_IO_TYPE_CONFIG_INIT(&ioConfig);
ioConfig.ReadWriteIoType = WdfDeviceIoDirect;
ioConfig.DeviceControlIoType = WdfDeviceIoDirect;
ioConfig.DirectTransferThreshold = 32;
WdfDeviceInitSetIoTypeEx(DeviceInit, &ioConfig);
}
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.13 |
最小 UMDF バージョン | 2.0 |
Header | wdfdevice.h (Wdf.h を含む) |
Library | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |