IWDFIoRequest2::GetSetInformationParameters メソッド (wudfddi.h)

[警告: UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、新しいバージョンのWindows 10では UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは UMDF 2 を使用する必要があります。 詳細については、「UMDF を使用したはじめに」を参照してください。

GetSetInformationParameters メソッドは、WdfRequestSetInformation 型の I/O 要求に関連付けられているパラメーターを取得します。

構文

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

パラメーター

[out, optional] pInformationClass

WDF_FILE_INFORMATION_CLASS型の値を受け取るドライバーによって割り当てられた変数へのポインター。 このポインターは省略可能であり、 NULL にすることができます。

[out, optional] pSizeInBytes

ファイル情報のサイズ (バイト単位) を受け取るドライバーによって割り当てられた変数へのポインター。 このポインターは省略可能であり、 NULL にすることができます。

戻り値

なし

解説

ドライバーは GetSetInformationParameters を呼び出して、要求の種類が WdfRequestSetInformation の場合、I/O 要求に関連付けられているパラメーターを取得できます。 pInformationClass パラメーターは、ドライバーが設定する必要があるファイル情報の種類を識別し、pSizeInBytes パラメーターは、情報を含むバッファーのサイズを指定します。 ドライバーは IWDFIoRequest2::RetrieveInputBuffer を呼び出してバッファー アドレスを取得できます。

ドライバーは、指定したバッファー サイズが、ドライバーが設定する必要があるファイル情報を格納するのに十分な大きさであることを確認する必要があります。

次のコード例は、 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->GetSetInformationParameters(&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 input buffer.
        // 
 hr = r2->RetrieveInputBuffer(sizeof(FILE_BASIC_INFORMATION), 
                              (PVOID*) &buffer,
                              &bufferCb);
 if (SUCCEEDED(hr))
        {
            // 
            // Copy file information from input buffer.
            // 
            CopyMemory(&g_FileInfo,
                       buffer,
                       sizeof(FILE_BASIC_INFORMATION));
        }
 ...
    }
...
exit:
...
}

要件

要件
サポート終了 UMDF 2.0 以降では使用できません。
対象プラットフォーム デスクトップ
最小 UMDF バージョン 1.9
Header wudfddi.h (Wudfddi.h を含む)
[DLL] WUDFx.dll

こちらもご覧ください

IWDFIoRequest2

IWDFIoRequest2::GetQueryInformationParameters