다음을 통해 공유


IWDFDevice::CreateRequest 메서드(wudfddi.h)

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

CreateRequest 메서드는 서식이 지정되지 않은 요청 개체를 만듭니다.

구문

HRESULT CreateRequest(
  [in, optional] IUnknown      *pCallbackInterface,
  [in, optional] IWDFObject    *pParentObject,
  [out]          IWDFIoRequest **ppRequest
);

매개 변수

[in, optional] pCallbackInterface

프레임워크가 드라이버가 새로 만든 요청 개체에서 구독하는 개체 관련 이벤트 콜백 함수를 결정하는 데 사용하는 IUnknown 인터페이스에 대한 포인터입니다. 이 매개 변수는 선택적 요소입니다. 드라이버에 알림이 필요하지 않은 경우 드라이버가 NULL 을 전달할 수 있습니다. 드라이버가 유효한 포인터를 전달하는 경우 프레임워크는 IObjectCleanup 인터페이스에 대한 IUnknown 인터페이스에서 QueryInterface를 호출합니다. 프레임워크가 드라이버의 IObjectCleanup 인터페이스를 가져오는 경우 프레임워크는 이후에 드라이버의 IObjectCleanup::OnCleanup 메서드를 호출하여 요청 개체가 정리되었음을 드라이버에 알릴 수 있습니다.

[in, optional] pParentObject

만든 I/O 요청 개체의 부모 개체에 대한 IWDFObject 인터페이스에 대한 포인터입니다. NULL이면 디바이스 개체가 기본 부모가 됩니다.

[out] ppRequest

새 요청 개체에 대한 IWDFIoRequest 인터페이스에 대한 포인터를 수신하는 변수에 대한 포인터입니다.

반환 값

CreateRequest 는 작업이 성공하면 S_OK 반환합니다. 그렇지 않으면 이 메서드는 Winerror.h에 정의된 오류 코드 중 하나를 반환합니다.

설명

UMDF 드라이버가 CreateRequest 에서 만드는 요청 개체를 사용하기 전에 드라이버는 요청 개체의 형식을 지정해야 합니다. I/O 요청 개체의 형식을 지정하기 위해 드라이버는 다음 메서드 중 하나를 호출합니다.

드라이버가 CreateRequest 를 호출하여 요청 개체를 만드는 경우 요청 개체에 대해 IWDFIoRequest::Complete 를 호출하면 안됩니다. 대신 드라이버가 요청 개체 사용을 마쳤을 때 IWDFObject::D eleteWdfObject 를 호출해야 합니다. 자세한 내용은 I/O 요청 완료를 참조하세요.

pParentObject 매개 변수에 NULL을 지정하면 디바이스 개체가 새로 만든 I/O 요청 개체의 기본 부모 개체가 됩니다. UMDF 드라이버가 드라이버가 특정 I/O 큐 개체 또는 다른 I/O 요청 개체와 함께 사용하는 I/O 요청 개체를 만드는 경우 드라이버는 해당 큐 또는 요청 개체를 만든 요청 개체의 부모 개체로 설정해야 합니다. 부모 개체가 삭제되면 생성된 요청 개체가 삭제됩니다.

예제

다음 코드 예제에서는 요청을 만들고, 읽기 요청의 형식을 지정하고, 요청을 보내는 방법을 보여줍니다.

HRESULT
CUmdfHidDevice::SendInterruptPipeRead(
    VOID
    )
{
    CComPtr<IWDFDevice> wdfDevice;

    HRESULT hr;

    IWDFFile *pTargetFile = NULL;

    // Allocate a new WDF request to send on the interrupt pipe.
    GetWdfDevice(&wdfDevice);
    hr = wdfDevice->CreateRequest(
                                  static_cast<IObjectCleanup*>(this), 
                                  wdfDevice, 
                                  &m_InterruptReadRequest
                                  );

    if (SUCCEEDED(hr))
    {
        m_InterruptPipe->GetTargetFile(&pTargetFile);
        hr = m_InterruptPipe->FormatRequestForRead(
                                                   m_InterruptReadRequest,
                                                   pTargetFile,
                                                   m_ReadMemory,
                                                   NULL,
                                                   NULL
                                                   );
    }

    // Issue the read to the pipe.
    if (SUCCEEDED(hr))
    {
        hr = m_InterruptReadRequest->Send(m_InterruptPipe, 0, 0);
    }

    return hr;
}

요구 사항

요구 사항
지원 종료 UMDF 2.0 이상에서는 사용할 수 없습니다.
대상 플랫폼 데스크톱
최소 UMDF 버전 1.5
머리글 wudfddi.h(Wudfddi.h 포함)
DLL WUDFx.dll

추가 정보

IWDFDevice

IWDFIoRequest

IWDFIoTarget::FormatRequestForIoctl

IWDFIoTarget::FormatRequestForRead

IWDFIoTarget::FormatRequestForWrite

IWDFObject