GetClassFile, fonction (objbase.h)
Retourne le CLSID associé au nom de fichier spécifié.
Syntaxe
HRESULT GetClassFile(
[in] LPCOLESTR szFilename,
[out] CLSID *pclsid
);
Paramètres
[in] szFilename
Pointeur vers le nom de fichier pour lequel vous demandez le CLSID associé.
[out] pclsid
Pointeur vers l’emplacement où le CLSID associé est écrit lors du retour.
Valeur retournée
Cette fonction peut retourner n’importe quelle erreur du système de fichiers, ainsi que les valeurs suivantes.
Code de retour | Description |
---|---|
|
Le CLSID a été récupéré avec succès. |
|
Impossible d’ouvrir le nom de fichier spécifié. |
|
L’extension spécifiée dans le Registre n’est pas valide. |
Remarques
Lorsqu’un nom de fichier est donné, GetClassFile recherche le CLSID associé à ce fichier. Par exemple, dans la fonction OleCreateFromFile , qui reçoit un nom de fichier et nécessite un CLSID associé, et dans l’implémentation OLE d’IMoniker ::BindToObject, qui, lorsqu’un lien vers un document basé sur un fichier est activé, appelle GetClassFile pour localiser l’application objet qui peut ouvrir le fichier.
GetClassFile utilise les stratégies suivantes pour déterminer un CLSID approprié :
- Si le fichier contient un objet de stockage, tel que déterminé par un appel à la fonction StgIsStorageFile , GetClassFile retourne le CLSID qui a été écrit avec la méthode IStorage ::SetClass .
-
Si le fichier n’est pas un objet de stockage, GetClassFile tente de faire correspondre différents bits du fichier à un modèle dans le Registre. Un modèle dans le Registre peut contenir une série d’entrées de la forme :
entrée = offset, cb, mask, value
La valeur de l’élément de décalage est un décalage du début ou de la fin du fichier et l’élément cb est une longueur en octets. Ces deux valeurs représentent une plage d’octets particulière dans le fichier. (Une valeur négative pour l’élément de décalage est interprétée à partir de la fin du fichier). La valeur du masque est un masque de bits utilisé pour effectuer une opération LOGIQUE AND avec la plage d’octets spécifiée par offset et cb. Le résultat de l’opération AND logique est comparé à l’élément de valeur . Si le masque est omis, il est supposé être tous des masques.
Chaque modèle dans le Registre est comparé au fichier dans l’ordre des modèles dans la base de données. Le premier modèle où chacun des éléments de valeur correspond au résultat de l’opération AND détermine le CLSID du fichier. Par exemple, le modèle contenu dans les entrées suivantes du Registre exige que les quatre premiers octets soient AB CD 12 34 et que les quatre derniers octets soient FE FE FE :
HKEY_CLASSES_ROOT FileType {12345678-0000-0001-C000-000000000095} 0 = 0, 4, FFFFFFFF, ABCD1234 1 = -4, 4, , FEFEFEFE
Si un fichier contient un tel modèle, le CLSID {12345678-0000-0001-C000-000000000095} sera associé à ce fichier.
- Si les stratégies ci-dessus échouent, GetClassFile recherche la clé d’extension de fichier dans le Registre qui correspond à la partie .ext du nom de fichier. Si l’entrée de base de données contient un CLSID valide, GetClassFile retourne ce CLSID.
- Si toutes les stratégies échouent, la fonction retourne MK_E_INVALIDEXTENSION.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | objbase.h |
Bibliothèque | Ole32.lib |
DLL | Ole32.dll |
Ensemble d’API | ext-ms-win-com-ole32-l1-1-5 (introduit dans Windows 10, version 10.0.15063) |