IShellFolder::P arseDisplayName 메서드(shobjidl_core.h)

파일 개체 또는 폴더의 표시 이름을 항목 식별자 목록으로 변환합니다.

구문

HRESULT ParseDisplayName(
  [in]      HWND             hwnd,
  [in]      IBindCtx         *pbc,
  [in]      LPWSTR           pszDisplayName,
  [out]     ULONG            *pchEaten,
  [out]     PIDLIST_RELATIVE *ppidl,
  [in, out] ULONG            *pdwAttributes
);

매개 변수

[in] hwnd

형식: HWND

창 핸들입니다. 클라이언트는 대화 상자나 메시지 상자를 표시하는 경우 창 핸들을 제공해야 합니다. 그렇지 않으면 hwnd를NULL로 설정합니다.

[in] pbc

형식: IBindCtx*

선택 사항입니다. 매개 변수를 구문 분석 함수에 입력 및 출력으로 전달하는 데 사용되는 바인딩 컨텍스트에 대한 포인터입니다. 이러한 전달된 매개 변수는 종종 데이터 원본과 관련이 있으며 데이터 원본 소유자가 문서화합니다. 예를 들어 파일 시스템 데이터 원본은 STR_FILE_SYS_BIND_DATA 바인딩 컨텍스트 매개 변수를 사용하여 구문 분석되는 이름을 WIN32_FIND_DATA 구조로 허용합니다. 가능한 경우 파일 시스템 데이터 원본을 사용하여 URL을 구문 분석함을 나타내기 위해 STR_PARSE_PREFER_FOLDER_BROWSING 전달할 수 있습니다. CreateBindCtx를 사용하여 바인딩 컨텍스트 개체를 생성하고 IBindCtx::RegisterObjectParam을 사용하여 값을 채웁다. 전체 목록은 컨텍스트 문자열 키 바인딩 을 참조하세요.

구문 분석 함수에 전달되거나 수신되는 데이터가 없는 경우 이 값은 NULL일 수 있습니다.

[in] pszDisplayName

형식: LPWSTR

표시 이름을 가진 null로 끝나는 유니코드 문자열입니다. 각 Shell 폴더는 자체 구문 분석 구문을 정의하므로 이 문자열에서 사용할 수 있는 형식은 다를 수 있습니다. 데스크톱 폴더는 instance "C:\My Docs\My File.txt"과 같은 경로를 허용합니다. 또한 "::{GUID}" 구문을 사용하여 GUID가 연결된 네임스페이스의 항목에 대한 참조를 수락합니다. 예를 들어 데스크톱 폴더에서 제어판에 대한 정규화된 식별자 목록을 검색하려면 다음을 사용할 수 있습니다.

::{CLSID for Control Panel}\::{CLSID for printers folder}

[out] pchEaten

형식: ULONG*

구문 분석된 표시 이름의 문자 수를 받는 ULONG 값에 대한 포인터입니다. 애플리케이션에 이 정보가 필요하지 않은 경우 pchEatenNULL로 설정하면 값이 반환되지 않습니다.

[out] ppidl

형식: PIDLIST_RELATIVE*

이 메서드가 반환되면 개체의 PIDL에 대한 포인터가 포함됩니다. 반환된 항목 식별자 목록은 구문 분석 폴더를 기준으로 항목을 지정합니다. pszDisplayName과 연결된 개체가 구문 분석 폴더 내에 있는 경우 반환된 항목 식별자 목록에는 하나의 SHITEMID 구조만 포함됩니다. 개체가 구문 분석 폴더의 하위 폴더에 있는 경우 반환된 항목 식별자 목록에는 여러 SHITEMID 구조가 포함됩니다. 오류가 발생하면 이 주소에 NULL 이 반환됩니다.

더 이상 필요하지 않은 경우 호출자는 CoTaskMemFree를 호출하여 이 리소스를 해제해야 합니다.

[in, out] pdwAttributes

형식: ULONG*

파일 특성을 쿼리하는 데 사용되는 값입니다. 사용하지 않으면 NULL로 설정해야 합니다. 하나 이상의 특성을 쿼리하려면 관심 있는 특성을 나타내는 SFGAO 플래그를 사용하여 이 매개 변수를 초기화합니다. 반환 시 true 이고 요청된 특성이 설정됩니다.

반환 값

형식: HRESULT

메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

일부 Shell 폴더는 IShellFolder::P ArseDisplayName을 구현하지 않을 수 있습니다. 수행하는 각 폴더는 자체 구문 분석 구문을 정의합니다.

ParseDisplayName 은 상대 경로 또는 부모 폴더 표시기("." 또는 "..")를 처리할 것으로 예상되지 않습니다. 이를 적절하게 제거하는 것은 호출자에게 달려 있습니다.

pdwAttributes에서 SFGAO_VALIDATE 플래그를 사용하여 이름이 구문 분석되는 항목의 존재를 확인하지 마세요. IShellFolder::P arseDisplayName 은 특수 바인딩 컨텍스트 매개 변수로 해당 동작을 재정의하지 않는 한 항목의 존재 유효성을 암시적으로 확인합니다.

일부 특성에 대한 쿼리는 상대적으로 느리고 상당한 양의 메모리를 사용할 수 있습니다. 예를 들어 파일이 공유되는지 확인하기 위해 셸은 네트워크 구성 요소를 로드합니다. 이 절차를 수행하려면 여러 DLL을 로드해야 할 수 있습니다. pdwAttributes의 목적은 쿼리를 필요한 정보로만 제한할 수 있도록 하는 것입니다. 다음 코드 조각에서는 파일이 압축되었는지 확인하는 방법을 보여 줍니다.

LPITEMIDLIST pidl;
ULONG cbEaten;
DWORD dwAttribs = SFGAO_COMPRESSED;

hres = psf->ParseDisplayName(NULL,
                             NULL,
                             lpwszDisplayName,
                             &cbEaten,  // This can be NULL
                             &pidl,
                             &dwAttribs);

if(dwAttribs & SFGAO_COMPRESSED)
{
    // Do something with the compressed file
}

pdwAttributes는 in/out 매개 변수이므로 항상 초기화해야 합니다. 초기화되지 않은 값을 전달하면 일부 비트가 실수로 설정될 수 있습니다. 그런 다음 IShellFolder::P arseDisplayName 은 해당 특성을 쿼리하므로 바람직하지 않은 지연 또는 메모리 요구가 발생할 수 있습니다. 특성을 쿼리하지 않으려면 pdwAttributesNULL 로 설정하여 예측할 수 없는 동작을 방지합니다.

이 메서드는 IParseDisplayName::P arseDisplayName 메서드와 유사합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 shobjidl_core.h(Shobjidl.h 포함)
DLL Shell32.dll(버전 4.0 이상)

추가 정보

IShellFolder

IShellFolder2

IShellFolder::GetAttributesOf

IShellLink