Partager via


IMetaDataInfo::GetFileMapping, méthode

Obtient la région de mémoire du fichier mappé, ainsi que le type de mappage.

Syntaxe

HRESULT GetFileMapping (  
    [out] const void           **ppvData,
    [out] ULONGLONG            *pcbData,
    [out] DWORD                *pdwMappingType  
);  

Paramètres

ppvData
[out] Pointeur vers le début du fichier mappé.

pcbData
[out] Taille de la région mappée. Si pdwMappingType est fmFlat, il s’agit de la taille du fichier.

pdwMappingType
[out] Valeur CorFileMapping indiquant le type de mappage. L’implémentation actuelle du Common Language Runtime (CLR) retourne toujours fmFlat. Les autres valeurs sont réservées pour un usage ultérieur. Toutefois, vous devez toujours vérifier la valeur retournée, car d’autres valeurs pourraient être activées dans de futures versions ou mises en production de service.

Valeur de retour

HRESULT Description
S_OK Toutes les sorties sont renseignées.
E_INVALIDARG NULL a été passé en tant que valeur d’argument.
COR_E_NOTSUPPORTED L’implémentation du CLR ne peut pas fournir d’informations sur la région de mémoire. Ceci peut se produire pour les raisons suivantes :

- L’étendue des métadonnées a été ouverte avec l’indicateur ofWrite ou ofCopyMemory.
- L’étendue des métadonnées a été ouverte sans l’indicateur ofReadOnly.
- La méthode IMetaDataDispenser::OpenScopeOnMemory a été utilisée pour ouvrir uniquement la partie métadonnées du fichier.
- Le fichier n’est pas un fichier exécutable portable (PE). Remarque : ces conditions dépendent de l’implémentation du CLR, et sont susceptibles d’être affaiblies dans de futures versions de celui-ci.

Notes

La mémoire vers laquelle ppvData pointe n’est valide que tant que l’étendue de métadonnées sous-jacente est ouverte.

Pour que cette méthode fonctionne, lorsque vous mappez les métadonnées d’un fichier sur disque en mémoire en appelant la méthode IMetaDataDispenser::OpenScope, vous devez spécifier l’indicateur ofReadOnly et ne pas spécifier l’indicateur ofWrite ou ofCopyMemory.

Le choix du type de mappage de fichier pour chaque étendue est spécifique d’une implémentation donnée du CLR. Il ne peut pas être défini par l’utilisateur. L’implémentation actuelle du CLR retourne toujours fmFlat dans pdwMappingType, mais cela pourrait changer dans de futures versions du CLR ou mises en production de service d’une version donnée. Vous devez toujours vérifier la valeur retournée dans pdwMappingType, car différents types présenteront des dispositions et décalages différents.

La transmission de NULL pour l’un des trois paramètres n’est pas prise en charge. La méthode retourne E_INVALIDARG, et aucune des sorties n’est renseignée. Ignorer le type de mappage ou la taille de la région peut entraîner un arrêt anormal du programme.

Spécifications

Plateformes : Consultez Configuration requise.

En-tête : Cor.h

Bibliothèque : utilisée comme ressource dans MsCorEE.dll

Versions du .NET Framework : Disponibles depuis 4

Voir aussi