Partager via


WdfDeviceMapIoSpace, fonction (wdfdevice.h)

[S’applique uniquement à UMDF]

La fonction WdfDeviceMapIoSpace mappe la plage d’adresses physique donnée à l’espace d’adressage système et retourne une pseudo-adresse de base.

Syntaxe

NTSTATUS WdfDeviceMapIoSpace(
  [in]  WDFDEVICE           Device,
  [in]  PHYSICAL_ADDRESS    PhysicalAddress,
  [in]  SIZE_T              NumberOfBytes,
  [in]  MEMORY_CACHING_TYPE CacheType,
  [out] PVOID               *PseudoBaseAddress
);

Paramètres

[in] Device

Handle vers un objet d’appareil framework.

[in] PhysicalAddress

Spécifie l’adresse physique de début 64 bits de la plage d’E/S à mapper.

[in] NumberOfBytes

Spécifie une valeur supérieure à zéro, indiquant le nombre d’octets à mapper.

[in] CacheType

Spécifie une valeur MEMORY_CACHING_TYPE, qui indique l’attribut de cache à utiliser pour mapper la plage d’adresses physique. Le type d’énumération MEMORY_CACHING_TYPE est défini dans Wdfdevice.h.

[out] PseudoBaseAddress

Adresse d’un emplacement qui reçoit un pointeur vers l’adresse pseudo-base.

Valeur de retour

Si l’opération réussit, la fonction retourne STATUS_SUCCESS.

La fonction peut retourner d’autres valeurs NTSTATUS .

Remarques

Cette fonction est l’équivalent UMDF version 2 de IWDFDevice3 ::MapIoSpace.

Un pilote doit appeler cette fonction pendant le démarrage de l’appareil s’il reçoit des ressources traduites de type CmResourceTypeMemory dans une structure CM_PARTIAL_RESOURCE_DESCRIPTOR. WdfDeviceMapIoSpace mappe l’adresse physique retournée dans la liste des ressources à une adresse gérée par le framework appelée pseudo-adresse de base.

Le pilote peut ensuite utiliser l’adresse pseudo de base pour accéder aux registres d’appareils auprès de WDF_READ_REGISTER_xxx et WDF_WRITE_REGISTER_fonctions de Xxx.

Un pilote qui appelle WdfDeviceMapIoSpace doit définir la directive INF UmdfDirectHardwareAccess sur AllowDirectHardwareAccess.

Si le pilote définit la directive inf UmdfRegisterAccessMode INF sur RegisterAccessUsingUserModeMapping, en appelant WdfDeviceMapIoSpace mappe également la plage d’adresses physiques donnée à une plage d’adresses de base en mode utilisateur auquel le pilote peut accéder par la suite en appelant WdfDeviceGetHardwareRegisterMappedAddress.

Pour plus d’informations sur les directives INF que les pilotes UMDF peuvent utiliser, consultez Spécification de directives WDF dans les fichiers INF.

Pour plus d’informations sur l’analyse des ressources matérielles à partir de UMDF version 2, consultez Gestion des ressources matérielles dans un pilote UMDF.

Le type PHYSICAL_ADDRESS est défini dans Wudfwdm.h, comme suit :

typedef LARGE_INTEGER PHYSICAL_ADDRESS;

Pour obtenir un exemple montrant comment un pilote recherche et mappe des ressources de registre mappées en mémoire, consultez lecture et écriture dans les registres d’appareils.

Exigences

Exigence Valeur
client minimum pris en charge Windows 8.1
plateforme cible Universel
version minimale de UMDF 2.0
d’en-tête wdfdevice.h (include Wdf.h)
bibliothèque WUDFx02000.lib
DLL WUDFx02000.dll
IRQL PASSIVE_LEVEL

Voir aussi

IWDFDevice3 ::MapIoSpace

WdfDeviceUnmapIoSpace