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 |