次の方法で共有


IWDFFile2::RetrieveCountedFileName メソッド (wudfddi.h)

警告

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

RetrieveCountedFileName メソッドは、デバイスに関連付けられているファイルのカウントされた完全なファイル名を取得します。

構文

HRESULT RetrieveCountedFileName(
  [out]     WCHAR *pCountedFileName,
  [in, out] DWORD *pdwCountedFileNameLengthInChars
);

パラメーター

[out] pCountedFileName

呼び出し元によって割り当てられたバッファーへのポインター。 このバッファーは、デバイスに関連付けられているファイルの完全な名前を表す、NULL 終了文字列を受け取ります。 ポインターが NULL 場合、RetrieveCountedFileName は文字列の長さのみを取得します。

[in, out] pdwCountedFileNameLengthInChars

呼び出し元によって割り当てられた変数へのポインター。 入力時に、ドライバーは、pdwCountedFileNameLengthInChars ポイントするバッファーの長さ (文字数) に変数を設定します。 出力時に、フレームワークは変数をバッファーに配置した文字列の長さ (終端 NULL 文字を含む) に設定します。 カウントされたファイル名が存在しない場合、フレームワークは変数を 0 に設定します。

戻り値

RetrieveCountedFileName は、操作が成功した場合にS_OKを返します。 それ以外の場合、メソッドは次のいずれかの値を返す可能性があります。

リターン コード 形容
E_POINTER pdwCountedFileNameLength ポインターは NULL です。
HRESULT_FROM_WIN32 (ERROR_INVALID_PARAMETER) カウントされたファイル名が無効です。
E_NOT_SUFFICIENT_BUFFER pCountedFileName が指 バッファーが小さすぎます。

このメソッドは、Winerror.h の他の値の 1 つを返す場合があります。

備考

カウントされたファイル名は、NULL の終端に加えて、埋め込み NULL ('\0') 文字を含めることができる文字列です。 NULL 文字 埋め込まない名前文字列を取得するには、ドライバーは IWDFFile::RetrieveFileName 呼び出すことができます。

通常、ドライバーは次の手順 使用して、RetrieveCountedFileName を 2 回呼び出します。

  1. ドライバーは、pCountedFileName パラメーター null に設定された RetrieveCountedFileName を呼び出して、必要なバッファー長を取得します。
  2. ドライバーは、必要なサイズのバッファーを割り当てます。
  3. ドライバーは、RetrieveCountedFileName を再度呼び出して、ファイル名の文字列を取得します。

次のコード例では、ドライバーの IQueueCallbackCreate::OnCreateFile コールバック関数が受け取る IWDFFile インターフェイスから、IWDFFile2 インターフェイスを取得します。 この例では、RetrieveCountedFileName を 2 回呼び出します。ファイル名の長さを取得するには 1 回、ファイル名の文字列を取得するには 1 回。

VOID
STDMETHODCALLTYPE
CMyQueue::OnCreateFile(
    __in IWDFIoQueue *pWdfQueue,
    __in IWDFIoRequest *pWdfRequest,
    __in IWDFFile*  pWdfFileObject
    )
 ...
    IWDFFile2*  pWdfFileObject2 = NULL;
    WCHAR*  countedFileName = NULL;
    DWORD  countedFileNameCch = 0;
    HRESULT  hr = S_OK;
 
    //
    // Obtain IWDFFile2 interface from IWDFFile.
    //
    hr = pWdfFileObject->QueryInterface(IID_PPV_ARGS(&pWdfFileObject2));
    if (!SUCCEEDED(hr))
    {
        goto Done;
    }
    //
    // Get length of counted filename.
    //
    hr = pWdfFileObject2->RetrieveCountedFileName(NULL,
                                                  &countedFileNameCch);
    if (!SUCCEEDED(hr))
    {
        goto Done;
    }
    if (countedFileNameCch != 0)
    {
        //
        // Allocate a buffer.
        //
        countedFileName = new WCHAR[countedFileNameCch];
        if (countedFileName == NULL)
        {
            hr = E_OUTOFMEMORY;
            goto Done;
        }
        //
        // Get counted file name.
        //
        hr = pWdfFileObject2->RetrieveCountedFileName(countedFileName, 
                                                      &countedFileNameCch);
        if (!SUCCEEDED(hr))
        {
            goto Done;
        }
    }
    ...

必要条件

要件 価値
サポート終了 UMDF 2.0 以降では使用できません。
ターゲット プラットフォーム デスクトップ
UMDF の最小バージョン する 1.9
ヘッダー wudfddi.h (Wudfddi.h を含む)
DLL WUDFx.dll

関連項目