다음을 통해 공유


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의 다른 값 중 하나를 반환할 수 있습니다.

설명

계산된 파일 이름은 종결 NULL 외에 포함된 NULL('\0') 문자를 포함할 수 있는 문자열입니다. NULL 문자가 포함되지 않은 이름 문자열을 가져오려면 드라이버는 IWDFFile::RetrieveFileName을 호출할 수 있습니다.

일반적으로 드라이버는 다음 단계를 사용하여 RetrieveCountedFileName 을 두 번 호출합니다.

  1. 드라이버는 pCountedFileName 매개 변수가 NULL로 설정된 RetrieveCountedFileName을 호출하여 필요한 버퍼 길이를 가져옵니다.
  2. 드라이버는 필요한 크기의 버퍼를 할당합니다.
  3. 드라이버는 RetrieveCountedFileName을 다시 호출하여 파일 이름 문자열을 가져옵니다.

예제

다음 코드 예제에서는 드라이버의 IQueueCallbackCreate::OnCreateFile 콜백 함수가 수신하는 IWDFFile 인터페이스에서 IWDFFile2 인터페이스를 가져옵니다. 이 예제에서는 RetrieveCountedFileName을 두 번 호출합니다. 한 번은 파일 이름의 길이를 가져오고 한 번은 파일 이름 문자열을 검색합니다.

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

추가 정보