次の方法で共有


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

こちらもご覧ください

IWDFDeviceInitialize2

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE (UMDF)

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx