IWDFIoRequest2::RetrieveInputBuffer 메서드(wudfddi.h)

[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에는 새로운 기능이 추가되지 않으며 최신 버전의 Windows 10에서는 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF시작 .]을 참조하세요.

RequestRetrieveInputBuffer 메서드는 I/O 요청의 입력 버퍼를 검색합니다.

통사론

HRESULT RetrieveInputBuffer(
  [in]            SIZE_T MinimumRequiredCb,
  [out]           PVOID  *Buffer,
  [out, optional] SIZE_T *BufferCb
);

매개 변수

[in] MinimumRequiredCb

드라이버가 I/O 요청을 처리하는 데 필요한 최소 버퍼 크기(바이트)입니다. 최소 버퍼 크기가 없는 경우 이 값은 0일 수 있습니다.

[out] Buffer

버퍼의 주소를 받는 위치에 대한 포인터입니다.

[out, optional] BufferCb

버퍼의 크기를 받는 위치에 대한 포인터(바이트)입니다. 이 매개 변수는 선택 사항이며 NULL 수 있습니다.

반환 값

RequestRetrieveInputBuffer 작업이 성공하면 S_OK 반환합니다. 그렇지 않으면 이 메서드는 다음 값을 반환할 수 있습니다.

반환 코드 묘사
HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
I/O 요청이 입력 버퍼를 제공하지 않았거나 입력 버퍼의 크기가 minimumRequiredCb 지정한 최소 크기보다.
E_OUTOFMEMORY
메모리가 부족하여 버퍼를 검색할 수 없습니다. 드라이버는 오류 상태 값으로 요청을 완료해야 합니다.
 

이 메서드는 Winerror.h에 포함된 다른 값 중 하나를 반환할 수 있습니다.

발언

요청의 입력 버퍼에는 요청의 생성자가 제공한 디스크에 쓸 데이터와 같은 정보가 포함됩니다. 드라이버는 RequestRetrieveInputBuffer 호출하여 쓰기 요청 또는 디바이스 I/O 제어 요청에 대한 입력 버퍼를 가져올 수 있지만 읽기 요청은 입력 데이터를 제공하지 않기 때문에 읽기 요청에 대해서는 가져올 수 없습니다.

RequestRetrieveInputBuffer 메서드는 버퍼링된 I/O 사용하거나 데이터 버퍼에 액세스하기 위해 직접 I/O 메서드를 I/O 요청에 대한 입력 버퍼를 검색합니다.

RequestRetrieveInputBuffer S_OK 반환하면 드라이버는 주소와 입력 버퍼의 크기를 선택적으로 받습니다.

드라이버는 I/O 요청 완료될 때까지 검색된 버퍼에 액세스할 수 있습니다.

드라이버는 RequestRetrieveInputBuffer호출하는 대신 IWDFIoRequest2::RetrieveInputMemory호출하여 버퍼를 나타내는 프레임워크 메모리 개체를 만들 수 있습니다.

I/O 요청의 데이터 버퍼에 액세스하는 방법에 대한 자세한 내용은 UMDF-Based 드라이버 데이터 버퍼에 액세스하는참조하세요.

예제

다음 코드 예제에서는 직렬 포트 드라이버의 IQueueCallbackDeviceIoControl::OnDeviceIoControl 콜백 함수의 세그먼트를 보여줍니다. I/O 요청의 입력 버퍼에서 코드 세그먼트는 디바이스에 대해 설정해야 하는 전송 속도를 가져옵니다.

VOID
STDMETHODCALLTYPE
  CMyQueue::OnDeviceIoControl(
    __in IWDFIoQueue*  FxQueue,
    __in IWDFIoRequest*  FxRequest,
    __in ULONG  ControlCode,
    __in SIZE_T  InputBufferCb,
    __in SIZE_T  OutputBufferCb
    )
{
    PBYTE buffer;
    SIZE_T bufferSize;
    HRESULT hr;
    //
    // Declare an IWDFIoRequest2 interface pointer and obtain the
    // IWDFIoRequest2 interface from the IWDFIoRequest interface.
    //
    CComQIPtr<IWDFIoRequest2> r2 = FxRequest;

    switch (ControlCode)
    {
        case IOCTL_SERIAL_SET_BAUD_RATE: 
        {
            //
            // Obtain the baud rate from the write request's input buffer.
            //
            hr = r2->RetrieveInputBuffer(sizeof(SERIAL_BAUD_RATE),
                                         (PVOID*) &buffer, 
                                         &bufferSize);
...
        }
    }
}

요구 사항

요구
지원 종료 UMDF 2.0 이상에서는 사용할 수 없습니다.
대상 플랫폼 바탕 화면
최소 UMDF 버전 1.9
헤더 wudfddi.h(Wudfddi.h 포함)
DLL WUDFx.dll

참고 항목

IWDFIoRequest2

IWDFIoRequest2::RetrieveInputMemory

IWDFIoRequest2::RetrieveOutputBuffer

IWDFIoRequest2::RetrieveOutputMemory

IWDFIoRequest::GetInputMemory

IWDFIoRequest::GetOutputMemory