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 制御要求の基本設定を登録 。 WdfDeviceInitSetIoTypeEx を するために UMDF ドライバーが提供する値は、単に基本設定であり、フレームワークで使用されることは保証されません。 ドライバーは、WdfDeviceGetDeviceStackIoType を呼び出して、UMDF がデバイスの読み取り/書き込み要求と I/O 制御要求に割り当てたバッファー アクセス メソッドを決定できます。 I/O 制御要求の場合、フレームワークが使用するアクセス方法は、IOCTL で指定されたアクセス方法と、ドライバーによって要求されたアクセス方法とは異なる場合があります。
ドライバーが WdfDeviceInitSetIoTypeEx 呼び出す場合は、WdfDeviceCreateを呼び出す前に呼び出す必要があります。
ドライバーが WdfDeviceInitSetIoTypeEx 呼び出さない場合、フレームワークは、指定されたデバイスの WdfDeviceIoBuffered をするようにドライバーのバッファー アクセス メソッドを設定します。
KMDF フィルター ドライバーから WdfDeviceInitSetIoTypeEx 呼び出しても効果はありません。 KMDF フィルター ドライバーの場合、フレームワークは、ドライバー スタック内の次の下位ドライバーが指定する I/O 型を使用します。
ただし、UMDF フィルター ドライバーは、WdfDeviceInitSetIoTypeExを呼び出すことによって、バッファー アクセス メソッドの基本設定を登録できます。
ドライバー スタック内のすべての 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 |
ヘッダー | wdfdevice.h (Wdf.h を含む) |
ライブラリ | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |