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는 RetrievalMode 매개 변수를 WdfDeviceIoBufferRetrievalCopyImmediately로 설정하고 읽기, 쓰기 및 디바이스 I/O 제어 요청을 위해 버퍼 액세스 메서드를 WdfDeviceIoBuffered 로 설정합니다.

UMDF는 SetIoTypePreference를 호출할 때 드라이버가 지정하는 기본 설정을 사용하지 않을 수 있습니다. UMDF가 검색 모드 및 버퍼 액세스 방법을 선택하는 방법에 대한 자세한 내용은 버퍼 검색 모드 지정UMDF가 I/O 요청에 대한 버퍼 액세스 방법을 선택하는 방법을 참조하세요.

또한 RetrievalMode 매개 변수를 WdfDeviceIoBufferRetrievalDeferred로 설정하지 않는 한 드라이버는 버퍼 액세스 메서드를 WdfDeviceIoDirect 또는 WdfDeviceIoBufferedOrDirect로 설정할 수 없습니다.

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
머리글 wudfddi.h(Wudfddi.h 포함)
DLL WUDFx.dll

추가 정보

IWDFDeviceInitialize2

IWDFIoRequest2::GetEffectiveIoType

WDF_DEVICE_IO_BUFFER_RETRIEVAL

WDF_DEVICE_IO_TYPE(UMDF)

WdfDeviceInitSetIoType

WdfDeviceInitSetIoTypeEx