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

こちらもご覧ください

IWDFDeviceInitialize2::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType