다음을 통해 공유


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

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

GetQueryInformationParameters 메서드는 WdfRequestQueryInformation 형식 I/O 요청과 연결된 매개 변수를 검색합니다.

구문

void GetQueryInformationParameters(
  [out, optional] WDF_FILE_INFORMATION_CLASS *pInformationClass,
  [out, optional] SIZE_T                     *pSizeInBytes
);

매개 변수

[out, optional] pInformationClass

WDF_FILE_INFORMATION_CLASS 형식의 값을 수신하는 드라이버 할당 변수에 대한 포인터입니다. 이 포인터는 선택 사항이며 NULL일 수 있습니다.

[out, optional] pSizeInBytes

파일 정보의 크기(바이트)를 수신하는 드라이버 할당 변수에 대한 포인터입니다. 이 포인터는 선택 사항이며 NULL일 수 있습니다.

반환 값

없음

설명

요청 유형이 WdfRequestQueryInformation인 경우 드라이버는 GetQueryInformationParameters를 호출하여 I/O 요청과 연결된 매개 변수를 가져올 수 있습니다. pInformationClass 매개 변수는 드라이버가 제공해야 하는 파일 정보의 형식을 식별하고 pSizeInBytes 매개 변수는 정보를 받을 버퍼의 크기를 지정합니다. 드라이버는 IWDFIoRequest2::RetrieveOutputBuffer 를 호출하여 버퍼 주소를 가져올 수 있습니다.

드라이버는 요청된 파일 정보를 받을 수 있을 만큼 지정된 버퍼 크기가 큰지 확인해야 합니다.

예제

다음 코드 예제는 IQueueCallbackDefaultIoHandler::OnDefaultIoHandler 콜백 함수의 일부입니다. 콜백 함수가 쿼리 정보 요청을 받으면 요청의 매개 변수를 검색합니다. 드라이버가 지정된 유형의 정보를 지원하는 경우 요청의 출력 버퍼에 정보를 복사합니다.

void
CMyQueue::OnDefaultIoHandler(
    IWDFIoQueue*  pQueue,
    IWDFIoRequest*  pRequest
    )
{
    HRESULT hr;
    WDF_FILE_INFORMATION_CLASS infoClass;
    SIZE_T bufSize;
    PFILE_BASIC_INFORMATION buffer;

 if (WdfRequestQueryInformation==pRequest->GetType())
    {
        //
        // Declare an IWDFIoRequest2 interface pointer and obtain the
        // IWDFIoRequest2 interface from the IWDFIoRequest interface.
        //
        CComQIPtr<IWDFIoRequest2> r2 = pRequest;
        // 
        // Get the I/O request's parameters.
        // 
        r2->GetQueryInformationParameters(&infoClass,
                                          &bufSize);
        // 
        // This driver supports only FileBasicInformation.
        // 
        if (infoClass != FileBasicInformation)
        {
            hr = HRESULT_FROM_NT(STATUS_NOT_SUPPORTED);
            goto exit;
        }
        // 
        // Validate buffer size.
        // 
        if (bufferCb != sizeof(FILE_BASIC_INFORMATION))
        {
            hr = HRESULT_FROM_NT(STATUS_BUFFER_TOO_SMALL);
            goto exit;
        }
        // 
        // Get output buffer.
        // 
        hr = r2->RetrieveOutputBuffer(sizeof(FILE_BASIC_INFORMATION), 
                                      (PVOID*) &buffer,
                                      &bufferCb);
        if (SUCCEEDED(hr))
        {
            // 
            // Copy file information to output buffer.
            // 
            CopyMemory(buffer,
                       &g_FileInfo,
                       sizeof(FILE_BASIC_INFORMATION));
            r2->SetInformation(sizeof(FILE_BASIC_INFORMATION));
        }
 ...
    }
...
exit:
...
}

요구 사항

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

추가 정보

IWDFIoRequest2

IWDFIoRequest2::GetSetInformationParameters