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 문자열 값을 검색하는 방법을 보여 줍니다.
// 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 헤더는 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 VerQueryValue를 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | 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
참조