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
S_OK
Le CLSID a été récupéré avec succès.
MK_E_CANTOPENFILE
Impossible d’ouvrir le nom de fichier spécifié.
MK_E_INVALIDEXTENSION
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é :

  1. 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 .
  2. 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.

  3. 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.
  4. 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)

Voir aussi

WriteClassStg