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 にすることができます

戻り値

なし

解説

ドライバーは GetQueryInformationParameters を 呼び出して、要求の種類が WdfRequestQueryInformation の場合、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
Header wudfddi.h (Wudfddi.h を含む)
[DLL] WUDFx.dll

こちらもご覧ください

IWDFIoRequest2

IWDFIoRequest2::GetSetInformationParameters