Fungsi GetClassFile (objbase.h)
Mengembalikan CLSID yang terkait dengan nama file yang ditentukan.
Sintaks
HRESULT GetClassFile(
[in] LPCOLESTR szFilename,
[out] CLSID *pclsid
);
Parameter
[in] szFilename
Penunjuk ke nama file tempat Anda meminta CLSID terkait.
[out] pclsid
Penunjuk ke lokasi tempat CLSID terkait ditulis saat pengembalian.
Nilai kembali
Fungsi ini dapat mengembalikan salah satu kesalahan sistem file, serta nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
CLSID berhasil diambil. |
|
Tidak dapat membuka nama file yang ditentukan. |
|
Ekstensi yang ditentukan dalam registri tidak valid. |
Keterangan
Ketika diberi nama file, GetClassFile menemukan CLSID yang terkait dengan file tersebut. Contoh penggunaannya ada dalam fungsi OleCreateFromFile , yang diteruskan nama file dan memerlukan CLSID terkait, dan dalam implementasi OLE IMoniker::BindToObject, yang, ketika tautan ke dokumen berbasis file diaktifkan, memanggil GetClassFile untuk menemukan aplikasi objek yang dapat membuka file.
GetClassFile menggunakan strategi berikut untuk menentukan CLSID yang sesuai:
- Jika file berisi objek penyimpanan, seperti yang ditentukan oleh panggilan ke fungsi StgIsStorageFile , GetClassFile mengembalikan CLSID yang ditulis dengan metode IStorage::SetClass .
-
Jika file bukan objek penyimpanan, GetClassFile mencoba mencocokkan berbagai bit dalam file dengan pola dalam registri. Pola dalam registri dapat berisi serangkaian entri formulir:
entry = offset, cb, mask,value
Nilai item offset adalah offset dari awal atau akhir file dan item cb adalah panjang dalam byte. Kedua nilai ini mewakili rentang byte tertentu dalam file. (Nilai negatif untuk item offset ditafsirkan dari akhir file). Nilai masker adalah bitmask yang digunakan untuk melakukan operasi AND logis dengan rentang byte yang ditentukan oleh offset dan cb. Hasil operasi AND logis dibandingkan dengan item nilai . Jika masker dihilangkan, diasumsikan semuanya.
Setiap pola dalam registri dibandingkan dengan file dalam urutan pola dalam database. Pola pertama di mana setiap item nilai cocok dengan hasil operasi AND menentukan CLSID file. Misalnya, pola yang terkandung dalam entri registri berikut mengharuskan empat byte pertama adalah AB CD 12 34 dan empat byte terakhir adalah FE FE FE:
HKEY_CLASSES_ROOT FileType {12345678-0000-0001-C000-000000000095} 0 = 0, 4, FFFFFFFF, ABCD1234 1 = -4, 4, , FEFEFEFE
Jika file berisi pola seperti itu, CLSID {12345678-0000-0001-C000-0000000000095} akan dikaitkan dengan file ini.
- Jika strategi di atas gagal, GetClassFile mencari kunci Ekstensi File di registri yang sesuai dengan bagian .ext dari nama file. Jika entri database berisi CLSID yang valid, GetClassFile mengembalikan CLSID tersebut.
- Jika semua strategi gagal, fungsi akan mengembalikan MK_E_INVALIDEXTENSION.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows 2000 Server [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | objbase.h |
Pustaka | Ole32.lib |
DLL | Ole32.dll |
Set API | ext-ms-win-com-ole32-l1-1-5 (diperkenalkan dalam Windows 10, versi 10.0.15063) |