GetClassFile 함수(objbase.h)

지정된 파일 이름과 연결된 CLSID를 반환합니다.

구문

HRESULT GetClassFile(
  [in]  LPCOLESTR szFilename,
  [out] CLSID     *pclsid
);

매개 변수

[in] szFilename

연결된 CLSID를 요청하는 파일 이름에 대한 포인터입니다.

[out] pclsid

연결된 CLSID가 반환될 때 기록되는 위치에 대한 포인터입니다.

반환 값

이 함수는 파일 시스템 오류와 다음 값을 반환할 수 있습니다.

반환 코드 Description
S_OK
CLSID가 성공적으로 검색되었습니다.
MK_E_CANTOPENFILE
지정된 파일 이름을 열 수 없습니다.
MK_E_INVALIDEXTENSION
레지스트리에서 지정된 확장이 잘못되었습니다.

설명

파일 이름이 지정되면 GetClassFile 은 해당 파일과 연결된 CLSID를 찾습니다. 파일 이름을 전달하고 연결된 CLSID가 필요한 OleCreateFromFile 함수와 파일 기반 문서에 대한 링크가 활성화될 때 GetClassFile을 호출하여 파일을 열 수 있는 개체 애플리케이션을 찾는 IMoniker::BindToObject의 OLE 구현에서 사용의 예가 있습니다.

GetClassFile 은 다음 전략을 사용하여 적절한 CLSID를 결정합니다.

  1. 파일에 스토리지 개체가 포함되어 있으면 StgIsStorageFile 함수 호출에 의해 결정된 대로 GetClassFileIStorage::SetClass 메서드로 작성된 CLSID 를 반환합니다.
  2. 파일이 스토리지 개체가 아닌 경우 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}이 파일과 연결됩니다.

  3. 위의 전략이 실패하면 GetClassFile 은 파일 이름의 .ext 부분에 해당하는 레지스트리의 파일 확장명 키를 검색합니다. 데이터베이스 항목에 유효한 CLSID가 포함된 경우 GetClassFile 은 해당 CLSID를 반환합니다.
  4. 모든 전략이 실패하면 함수는 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에 도입됨)

추가 정보

WriteClassStg