IWDFDeviceInitialize2::SetIoTypePreference メソッド (wudfddi.h)
[警告: UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、新しいバージョンのWindows 10では UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。 詳細については、「UMDF を使用したはじめに」を参照してください。
SetIoTypePreference メソッドは、UMDF とドライバーがデバイスの I/O 要求のデータ バッファーにアクセスする方法の基本設定を指定します。
構文
void SetIoTypePreference(
[in] WDF_DEVICE_IO_BUFFER_RETRIEVAL RetrievalMode,
[in] WDF_DEVICE_IO_TYPE ReadWritePreference,
[in] WDF_DEVICE_IO_TYPE IoControlPreference
);
パラメーター
[in] RetrievalMode
ドライバーで I/O 要求のバッファーを使用できるようにするために UMDF を使用するバッファー取得モードを指定する、 WDF_DEVICE_IO_BUFFER_RETRIEVAL型指定された値。
[in] ReadWritePreference
読み取り要求と書き込み要求のデータ バッファーに UMDF を使用するバッファー アクセス方法を指定する、 WDF_DEVICE_IO_TYPE型指定された値。
[in] IoControlPreference
デバイス I/O 制御要求のデータ バッファーに UMDF を使用するバッファー アクセス方法を指定する、WDF_DEVICE_IO_TYPE型指定された値。
戻り値
なし
解説
ドライバーがデバイスの SetIoTypePreference を呼び出す場合は、ドライバーが IWDFDriver::CreateDevice を呼び出す前に、その IDriverEntry::OnDeviceAdd コールバック関数から呼び出す必要があります。
ドライバーが SetIoTypePreference を呼び出さない場合、UMDF は 、取得モード パラメーターを WdfDeviceIoBufferRetrievalCopyImmediately に 設定し、読み取り、書き込み、およびデバイスの I/O 制御要求に対してバッファー アクセス メソッド を WdfDeviceIoBuffered に設定します。
UMDF は、 SetIoTypePreference を呼び出すときにドライバーが指定する基本設定を使用しない可能性があります。 UMDF が取得モードとバッファー アクセス方法を選択する方法の詳細については、「バッファー取得モードの指定」および「UMDF が I/O 要求のバッファー アクセス方法を選択する方法」を参照してください。
ドライバーは、バッファー アクセス メソッドを WdfDeviceIoDirect または WdfDeviceIoBufferedOrDirect に設定できません。ただし、 また、RetrievalMode パラメーターも WdfDeviceIoBufferRetrievalDeferred に設定されている場合を除きます。
I/O 要求のデータ バッファーへのアクセスの詳細については、「 UMDF-Based ドライバーでのデータ バッファーへのアクセス」を参照してください。
例
次のコード例は、ドライバーの IDriverEntry::OnDeviceAdd コールバック関数のセグメントを示しています。 セグメントは IWDFDeviceInitialize2 インターフェイスを取得し、 SetIoTypePreference を呼び出します。
HRESULT
CMyDriver::OnDeviceAdd(
__in IWDFDriver *FxWdfDriver,
__in IWDFDeviceInitialize *FxDeviceInit
)
{
...
//
// Declare an IWDFDeviceInitialize2 interface pointer and obtain the
// IWDFDeviceInitialize2 interface from the IWDFDeviceInitialize interface.
//
CComQIPtr<IWDFDeviceInitialize2> di2 = FxDeviceInit;
//
// For this device, set the retrieval mode to deferred, set
// the access method to buffered for read and write requests,
// and set the access mode to direct for device I/O control requests.
//
di2->SetIoTypePreference(WdfDeviceIoBufferRetrievalDeferred,
WdfDeviceIoBuffered,
WdfDeviceIoDirect);
...
}
要件
要件 | 値 |
---|---|
サポート終了 | UMDF 2.0 以降では使用できません。 |
対象プラットフォーム | デスクトップ |
最小 UMDF バージョン | 1.9 |
Header | wudfddi.h (Wudfddi.h を含む) |
[DLL] | WUDFx.dll |
こちらもご覧ください
IWDFIoRequest2::GetEffectiveIoType