VerQueryValueA 함수(winver.h)

지정된 버전 정보 리소스에서 지정된 버전 정보를 검색합니다. 적절한 리소스를 검색하려면 VerQueryValue를 호출하기 전에 먼저 GetFileVersionInfoSize 함수를 호출한 다음 GetFileVersionInfo 함수를 호출해야 합니다.

구문

BOOL VerQueryValueA(
  [in]  LPCVOID pBlock,
  [in]  LPCSTR  lpSubBlock,
  [out] LPVOID  *lplpBuffer,
  [out] PUINT   puLen
);

매개 변수

[in] pBlock

형식: LPCVOID

GetFileVersionInfo 함수에서 반환된 버전 정보 리소스입니다.

[in] lpSubBlock

형식: LPCTSTR

검색할 버전 정보 값입니다. 문자열은 백슬라이시(\)로 구분된 이름으로 구성되어야 하며 다음 양식 중 하나가 있어야 합니다.

\

루트 블록입니다. 함수는 버전 정보 리소스의 VS_FIXEDFILEINFO 구조에 대한 포인터를 검색합니다.

\VarFileInfo\Translation

Var 변수 정보 구조의 변환 배열- 이 구조체의 Value 멤버입니다. 함수는 이 언어 및 코드 페이지 식별자 배열에 대한 포인터를 검색합니다. 애플리케이션은 이러한 식별자를 사용하여 버전 정보 리소스의 언어별 StringTable 구조( szKey 멤버 사용)에 액세스할 수 있습니다.

\StringFileInfo\lang-codepage\string-name

언어별 StringTable 구조체의 값입니다. lang-codepage 이름은 리소스에 대한 번역 배열에서 DWORD로 찾은 언어 및 코드 페이지 식별자 쌍의 연결입니다. 여기서 lang-codepage 이름은 16진수 문자열로 지정해야 합니다. 문자열 이름 이름은 다음 설명 섹션에 설명된 미리 정의된 문자열 중 하나여야 합니다. 함수는 표시된 언어 및 코드 페이지와 관련된 문자열 값을 검색합니다.

[out] lplpBuffer

형식: LPVOID*

이 메서드가 반환되면 pBlock이 가리키는 버퍼의 요청된 버전 정보에 대한 포인터의 주소를 포함합니다. 연결된 pBlock 메모리가 해제되면 lplpBuffer가 가리키는 메모리가 해제됩니다.

[out] puLen

형식: PUINT

이 메서드가 반환되면 lplpBuffer에서 가리키는 요청된 데이터의 크기에 대한 포인터를 포함합니다. 버전 정보 값의 경우 lplpBuffer에 저장된 문자열의 문자 길이입니다. 변환 배열 값의 경우 lplpBuffer에 저장된 배열의 크기(바이트)입니다. 루트 블록의 경우 구조체의 크기(바이트)입니다.

반환 값

형식: BOOL

지정된 버전 정보 구조가 있고 버전 정보를 사용할 수 있는 경우 반환 값은 0이 아닌 값입니다. 길이 버퍼의 주소가 0이면 지정된 버전 정보 이름에 사용할 수 있는 값이 없습니다.

지정된 이름이 없거나 지정된 리소스가 유효하지 않은 경우 반환 값은 0입니다.

설명

이 함수는 16비트, 32비트 및 64비트 파일 이미지에서 작동합니다.

다음은 미리 정의된 버전 정보 유니코드 문자열입니다.

의견 InternalName ProductName
CompanyName LegalCopyright ProductVersion
FileDescription LegalTrademarks PrivateBuild
FileVersion OriginalFilename SpecialBuild
 

예제

다음 예제에서는 사용 가능한 버전 언어를 열거하고 각 언어에 대한 FileDescription 문자열 값을 검색하는 방법을 보여 줍니다.

VerQueryValue를 호출하여 pBlock 버퍼를 제대로 초기화하기 전에 GetFileVersionInfoSizeGetFileVersionInfo 함수를 호출해야 합니다.

// Structure used to store enumerated languages and code pages.

HRESULT hr;

struct LANGANDCODEPAGE {
  WORD wLanguage;
  WORD wCodePage;
} *lpTranslate;

// Read the list of languages and code pages.

VerQueryValue(pBlock, 
              TEXT("\\VarFileInfo\\Translation"),
              (LPVOID*)&lpTranslate,
              &cbTranslate);

// Read the file description for each language and code page.

for( i=0; i < (cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++ )
{
  hr = StringCchPrintf(SubBlock, 50,
            TEXT("\\StringFileInfo\\%04x%04x\\FileDescription"),
            lpTranslate[i].wLanguage,
            lpTranslate[i].wCodePage);
	if (FAILED(hr))
	{
	// TODO: write error handler.
	}

  // Retrieve file description for language and code page "i". 
  VerQueryValue(pBlock, 
                SubBlock, 
                &lpBuffer, 
                &dwBytes); 
}

참고

winver.h 헤더는 VERQueryValue를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winver.h(Windows.h 포함)
라이브러리 Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

추가 정보

개념

GetFileVersionInfo

GetFileVersionInfoSize

참조

String

StringFileInfo

StringTable

VS_FIXEDFILEINFO

VS_VERSIONINFO

Var

VarFileInfo

버전 정보