Partager via


WdfDeviceMapIoSpace, fonction (wdfdevice.h)

[S’applique à UMDF uniquement]

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 pour un objet d’appareil d’infrastructure.

[in] PhysicalAddress

Spécifie l’adresse physique 64 bits de départ 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 physiques. 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 la pseudo adresse de base.

Valeur retournée

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 au 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 de ressources à une adresse gérée par le framework appelée pseudo-adresse de base.

Le pilote peut ensuite utiliser la pseudo adresse de base pour accéder aux registres d’appareils avec WDF_READ_REGISTER_Xxx et WDF_WRITE_REGISTER_Xxx .

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

Si le pilote définit la directive INF UmdfRegisterAccessMode sur RegisterAccessUsingUserModeMapping, l’appel de WdfDeviceMapIoSpace mappe également la plage d’adresses physiques donnée à une plage d’adresses de base en mode utilisateur à laquelle le pilote peut ensuite accéder 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 d’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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8.1
Plateforme cible Universal
Version UMDF minimale 2.0
En-tête wdfdevice.h (inclure Wdf.h)
Bibliothèque WUDFx02000.lib
DLL WUDFx02000.dll
IRQL PASSIVE_LEVEL

Voir aussi

IWDFDevice3 ::MapIoSpace

WdfDeviceUnmapIoSpace