다음을 통해 공유


SHLoadIndirectString 함수(shlwapi.h)

간접 문자열('@' 기호로 시작하는 문자열)의 형태로 해당 리소스를 지정하면 지정된 텍스트 리소스를 추출합니다.

구문

LWSTDAPI SHLoadIndirectString(
  [in]  PCWSTR pszSource,
  [out] PWSTR  pszOutBuf,
  [in]  UINT   cchOutBuf,
        void   **ppvReserved
);

매개 변수

[in] pszSource

형식: PCWSTR

리소스를 검색할 간접 문자열을 포함하는 버퍼에 대한 포인터입니다. 이 문자열은 '@' 기호로 시작하고 설명 섹션에 설명된 양식 중 하나를 사용해야 합니다. 이 함수는 '@' 기호로 시작하지 않는 문자열을 성공적으로 수락하지만 문자열은 pszOutBuf에 변경되지 않고 전달됩니다.

[out] pszOutBuf

형식: PWSTR

이 함수가 성공적으로 반환될 때 텍스트 리소스를 수신하는 버퍼에 대한 포인터입니다. pszOutBufpszSource는 모두 동일한 버퍼를 가리킬 수 있습니다. 이 경우 원래 문자열을 덮어씁니다.

[in] cchOutBuf

형식: UINT

pszOutBuf가 가리키는 버퍼의 크기(문자)입니다.

ppvReserved

형식: void**

사용되지 않음; 을 NULL로 설정합니다.

반환 값

형식: HRESULT

이 함수가 성공하면 S_OK 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

간접 문자열은 각각 고유한 해석이 있는 여러 형식으로 제공될 수 있습니다.

  • 파일 이름 및 리소스 ID ''' 구문 @filename,리소스 '''

    문자열은 리소스 값을 로케이터로 사용하여 라는 파일에서 추출됩니다. 리소스 값이 0 이상인 경우 숫자는 이진 파일의 문자열 인덱스가 됩니다. 숫자가 음수이면 리소스 ID가 됩니다. 검색된 문자열은 출력 버퍼에 복사되고 함수는 S_OK 반환합니다.

  • 버전 한정자 ''' 구문이 @filename,resource인 파일 이름 및 리소스 ID; v2 '''

    이 양식은 리소스가 변경되었지만 여전히 이전 리소스와 동일한 인덱스 또는 ID를 사용할 때 사용할 수 있습니다. 버전 한정자가 없으면 MUI(다국어 사용자 인터페이스) 캐시는 리소스가 변경되었으며 새로 고쳐지지 않는다는 것을 인식하지 않습니다. 버전 한정자를 추가하면 값이 새 리소스로 표시되고 캐시에 추가됩니다. 새 리소스에 대해 새 ID 또는 인덱스 를 사용하고 가능하지 않은 경우에만 버전 한정자를 사용하는 것이 좋습니다.

  • PRI 파일 경로 및 리소스 ID ''' 구문 @{PRIFilepath?resource} '''

    PRI(패키지 리소스 인덱스)는 인덱싱된 리소스 또는 리소스에 대한 참조를 포함하는 Windows 8 도입된 이진 형식입니다. .pri 파일은 앱 패키지의 일부로 번들로 제공됩니다. .pri 파일에 대한 자세한 내용은 Windows 스토어 앱에서 리소스 만들기 및 검색을 참조하세요.

    문자열은 리소스 를 로케이터로 사용하여 라는 .pri 파일에서 추출됩니다. 검색된 문자열은 출력 버퍼에 복사되고 함수는 S_OK 반환합니다. 문자열은 현재 Shell 환경 또는 ResourceContext를 기반으로 추출됩니다.

    이러한 형식의 간접 문자열 예제는 여기에 나와 있습니다.

    
    @{C:\Program Files\WindowsApps\Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe\resources.pri? ms-resource://Microsoft.Camera/resources/manifestAppDescription}
    
  • 패키지 이름 및 리소스 ID ''' 구문 @{PackageFullName?resource} '''

    문자열은 리소스를 로케이터로 사용하여 PackageFullName으로 식별된 패키지의 앱 루트 디렉터리에 저장된 Resources.pri 파일에서 추출됩니다. 검색된 문자열은 출력 버퍼에 복사되고 함수는 S_OK 반환합니다. 문자열은 앱의 환경 또는 ResourceContext에 따라 추출됩니다.

    참고 이 문자열은 현재 사용자에 대해 설치된 패키지를 참조해야 합니다. 그렇지 않으면 호출이 실패합니다.
     
    이러한 형식의 간접 문자열 예제는 여기에 나와 있습니다. 이 예제에서는 참조 이름이 정규화되었지만 네임스페이스(예: "리소스")가 포함되지 않습니다. 배포 스택은 이름을 확장하여 모든 네임스페이스에서 찾습니다.
    
    @{Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe? ms-resource://Microsoft.Camera/manifestAppDescription}
    

    다음 예제에서는 정규화된 참조 이름이 조회를 제한할 네임스페이스를 지정합니다.

    
    @{Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe? ms-resource://Microsoft.Camera/resources/manifestAppDescription}
    
문자열이 간접 문자열이 아닌 경우 문자열은 pszOutBuf 로 변경되지 않고 직접 복사되고 함수는 S_OK 반환합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 shlwapi.h
라이브러리 Shlwapi.lib
DLL Shlwapi.dll(버전 5.5 이상)