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 |