다음을 통해 공유


IWDFIoTarget2::FormatRequestForQueryInformation 메서드(wudfddi.h)

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

FormatRequestForQueryInformation 메서드는 파일에 대한 정보를 얻기 위해 I/O 요청의 형식을 지정하지만 I/O 대상에 요청을 보내지는 않습니다.

구문

HRESULT FormatRequestForQueryInformation(
  [in]           IWDFIoRequest              *pRequest,
  [in]           WDF_FILE_INFORMATION_CLASS InformationClass,
  [in, optional] IWDFFile                   *pFile,
  [in, optional] IWDFMemory                 *pInformationMemory,
  [in, optional] PWDFMEMORY_OFFSET          pInformationMemoryOffset
);

매개 변수

[in] pRequest

I/O 요청을 나타내는 요청 개체의 IWDFIoRequest 인터페이스에 대한 포인터입니다.

[in] InformationClass

가져올 정보의 형식을 지정하는 WDF_FILE_INFORMATION_CLASS 형식의 값입니다.

[in, optional] pFile

I/O 요청과 연결된 파일 개체의 IWDFFile 인터페이스에 대한 포인터입니다. 이 매개 변수는 로컬 및 원격 I/O 대상에 필요하며 파일 핸들 I/O 대상의 경우 선택 사항( NULL일 수 있음)입니다.

[in, optional] pInformationMemory

메모리 개체의 IWDFMemory 인터페이스에 대한 포인터입니다. 이 개체는 InformationClass 매개 변수가 지정하는 파일 정보를 수신하는 출력 버퍼를 나타냅니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

[in, optional] pInformationMemoryOffset

선택적 바이트 오프셋 및 길이 값을 제공하는 WDFMEMORY_OFFSET 구조체에 대한 포인터입니다. 프레임워크는 이러한 값을 사용하여 데이터 전송에 대한 출력 버퍼 내의 시작 주소와 길이를 결정합니다. 이 포인터가 NULL이면 출력 버퍼의 시작 부분에서 데이터 전송이 시작되고 전송 크기는 버퍼 크기입니다.

반환 값

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

반환 코드 설명
E_OUTOFMEMORY
프레임워크에서 메모리를 할당할 수 없습니다.
 

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

설명

FormatRequestForQueryInformation 메서드와 IWDFIoRequest::Send 메서드를 사용하여 I/O 대상에 동기 또는 비동기적으로 요청을 보냅니다.

예제

다음 코드 예제는 IQueueCallbackDefaultIoHandler::OnDefaultIoHandler 콜백 함수의 일부입니다. 콜백 함수가 쿼리 정보 요청을 받으면 디바이스의 기본 I/O 대상에 요청을 보냅니다.

void
CMyQueue::OnDefaultIoHandler(
 IWDFIoQueue*  pQueue,
 IWDFIoRequest*  pRequest
    )
{
    HRESULT hr;
    IWDFDevice *pDevice;
    IWDFIoTarget *pTarget;
    IWDFFile *pFile;
    IWDFMemory *pOutMemory;
    WDF_FILE_INFORMATION_CLASS infoClass;

    //
    // Obtain the device, default I/O target, and file object.
    //
    pQueue->GetDevice(&pDevice);
    pDevice->GetDefaultIoTarget(&pTarget);
    pRequest->GetFileObject(&pFile);

    if (WdfRequestQueryInformation==pRequest->GetType())
    {
        //
        // Declare an IWDFIoRequest2 interface pointer and obtain the
        // IWDFIoRequest2 interface from the IWDFIoRequest interface.
        //
        CComQIPtr<IWDFIoRequest2> r2 = pRequest;

        // 
        // Declare an IWDFIoTarget2 interface pointer and obtain the
        // IWDFIoTarget2 interface from the IWDFIoTarget interface.
        //
        CComQIPtr<IWDFIoTarget2> target2(pTarget);

        // 
        // Get the I/O request's output buffer.
        // 
        hr = pWdfRequest2->RetrieveOutputMemory(&pOutMemory);
        if (!SUCCEEDED(hr)) goto Error;

        // 
        // Get the I/O request's parameters.
        // 
        hr = pWdfRequest2->GetQueryInformationParameters(&infoClass,
                                                         NULL);
        if (!SUCCEEDED(hr)) goto Error;

        //
        // Format a query information request and send it to the I/O target.
        //
        hr = target2->FormatRequestForQueryInformation(pRequest,
                                                       infoClass,
                                                       pFile,
                                                       pOutMemory,
                                                       NULL);
        if (!SUCCEEDED(hr)) goto Error;
        hr = pRequest->Send(pTarget,
                            WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
                            0);
    }
...
Error;
    //
    // Release objects.
    //
    SAFE_RELEASE(pDevice);
    SAFE_RELEASE(pTarget);
    SAFE_RELEASE(pFile);
    SAFE_RELEASE(pOutMemory);
}

요구 사항

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

추가 정보

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForSetInformation