次の方法で共有


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

関連項目

IWDFDeviceInitialize2::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType