GetClassFile 함수(objbase.h)
지정된 파일 이름과 연결된 CLSID를 반환합니다.
구문
HRESULT GetClassFile(
[in] LPCOLESTR szFilename,
[out] CLSID *pclsid
);
매개 변수
[in] szFilename
연결된 CLSID를 요청하는 파일 이름에 대한 포인터입니다.
[out] pclsid
연결된 CLSID가 반환될 때 기록되는 위치에 대한 포인터입니다.
반환 값
이 함수는 파일 시스템 오류와 다음 값을 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
CLSID가 성공적으로 검색되었습니다. |
|
지정된 파일 이름을 열 수 없습니다. |
|
레지스트리에서 지정된 확장이 잘못되었습니다. |
설명
파일 이름이 지정되면 GetClassFile 은 해당 파일과 연결된 CLSID를 찾습니다. 파일 이름을 전달하고 연결된 CLSID가 필요한 OleCreateFromFile 함수와 파일 기반 문서에 대한 링크가 활성화될 때 GetClassFile을 호출하여 파일을 열 수 있는 개체 애플리케이션을 찾는 IMoniker::BindToObject의 OLE 구현에서 사용의 예가 있습니다.
GetClassFile 은 다음 전략을 사용하여 적절한 CLSID를 결정합니다.
- 파일에 스토리지 개체가 포함되어 있으면 StgIsStorageFile 함수 호출에 의해 결정된 대로 GetClassFile 은 IStorage::SetClass 메서드로 작성된 CLSID 를 반환합니다.
-
파일이 스토리지 개체가 아닌 경우 GetClassFile 은 파일의 다양한 비트를 레지스트리의 패턴과 일치시키려고 시도합니다. 레지스트리의 패턴에는 양식의 일련의 항목이 포함될 수 있습니다.
entry = offset, cb, mask, value
오프셋 항목의 값은 파일의 시작 또는 끝에서 오프셋이고 cb 항목은 길이(바이트)입니다. 이 두 값은 파일의 특정 바이트 범위를 나타냅니다. (오프셋 항목에 대한 음수 값은 파일의 끝에서 해석됩니다.) 마스크 값은 오프셋 및 cb로 지정된 바이트 범위로 논리 AND 작업을 수행하는 데 사용되는 비트 마스크입니다. 논리 AND 작업의 결과는 값 항목과 비교됩니다. 마스크를 생략하면 모든 마스크로 간주됩니다.
레지스트리의 각 패턴은 데이터베이스의 패턴 순서대로 파일과 비교됩니다. 각 값 항목이 AND 작업의 결과와 일치하는 첫 번째 패턴은 파일의 CLSID를 결정합니다. 예를 들어 레지스트리의 다음 항목에 포함된 패턴은 처음 4바이트가 AB CD 12 34이고 마지막 4바이트가 FE FE FE FE가 되어야 합니다.
HKEY_CLASSES_ROOT FileType {12345678-0000-0001-C000-000000000095} 0 = 0, 4, FFFFFFFF, ABCD1234 1 = -4, 4, , FEFEFEFE
파일에 이러한 패턴이 포함된 경우 CLSID {12345678-0000-0001-C000-0000000000095}이 파일과 연결됩니다.
- 위의 전략이 실패하면 GetClassFile 은 파일 이름의 .ext 부분에 해당하는 레지스트리의 파일 확장명 키를 검색합니다. 데이터베이스 항목에 유효한 CLSID가 포함된 경우 GetClassFile 은 해당 CLSID를 반환합니다.
- 모든 전략이 실패하면 함수는 MK_E_INVALIDEXTENSION 반환합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | objbase.h |
라이브러리 | Ole32.lib |
DLL | Ole32.dll |
API 세트 | ext-ms-win-com-ole32-l1-1-5(Windows 10 버전 10.0.15063에 도입됨) |