WdfDeviceMapIoSpace-Funktion (wdfdevice.h)
[Gilt nur für UMDF]
Die WdfDeviceMapIoSpace--Funktion ordnet den angegebenen physischen Adressbereich dem Systemadressraum zu und gibt eine Pseudobasisadresse zurück.
Syntax
NTSTATUS WdfDeviceMapIoSpace(
[in] WDFDEVICE Device,
[in] PHYSICAL_ADDRESS PhysicalAddress,
[in] SIZE_T NumberOfBytes,
[in] MEMORY_CACHING_TYPE CacheType,
[out] PVOID *PseudoBaseAddress
);
Parameter
[in] Device
Ein Handle zu einem Framework-Geräteobjekt.
[in] PhysicalAddress
Gibt die startende 64-Bit-physische Adresse des E/A-Bereichs an, der zugeordnet werden soll.
[in] NumberOfBytes
Gibt einen Wert an, der größer als 0 ist und die Anzahl der Bytes angibt, die zugeordnet werden sollen.
[in] CacheType
Gibt einen MEMORY_CACHING_TYPE Wert an, der das Cache-Attribut angibt, das zum Zuordnen des physischen Adressbereichs verwendet werden soll. Der MEMORY_CACHING_TYPE Enumerationstyp wird in Wdfdevice.h definiert.
[out] PseudoBaseAddress
Die Adresse eines Speicherorts, der einen Zeiger auf die Pseudobasisadresse empfängt.
Rückgabewert
Wenn der Vorgang erfolgreich ist, gibt die Funktion STATUS_SUCCESS zurück.
Die Funktion gibt möglicherweise andere NTSTATUS-Wertezurück.
Bemerkungen
Diese Funktion ist die UMDF Version 2-Entsprechung von IWDFDevice3::MapIoSpace.
Ein Treiber muss diese Funktion während des Gerätestarts aufrufen, wenn er übersetzte Ressourcen vom Typ CmResourceTypeMemory in einer CM_PARTIAL_RESOURCE_DESCRIPTOR Struktur empfängt. WdfDeviceMapIoSpace die in der Ressourcenliste zurückgegebene physische Adresse einer vom Framework verwalteten Adresse zuordnet, die als Pseudobasisadresse bezeichnet wird.
Der Treiber kann dann die Pseudobasisadresse verwenden, um auf Geräteregister mit WDF_READ_REGISTER_Xxx- und WDF_WRITE_REGISTER_Xxx--Funktionen zuzugreifen.
Ein Treiber, der WdfDeviceMapIoSpace- aufruft, muss die UmdfDirectHardwareAccess INF-Direktive auf AllowDirectHardwareAccessfestlegen.
Wenn der Treiber die UmdfRegisterAccessMode INF-Direktive auf RegisterAccessUsingUserModeMappingfestlegt, ordnet das Aufrufen WdfDeviceMapIoSpace auch den angegebenen physischen Adressbereich einem Basisadressenbereich für den Benutzermodus zu, auf den der Treiber anschließend zugreifen kann, indem WdfDeviceGetHardwareRegisterMappedAddressaufgerufen wird.
Weitere Informationen zu INF-Direktiven, die UMDF-Treiber verwenden können, finden Sie unter Angeben von WDF-Direktiven in INF-Dateien.
Weitere Informationen zum Analysieren von Hardwareressourcen ab UMDF Version 2 finden Sie unter Behandeln von Hardwareressourcen in einem UMDF-Treiber-.
Der PHYSICAL_ADDRESS Typ wird in Wudfwdm.h wie folgt definiert:
typedef LARGE_INTEGER PHYSICAL_ADDRESS;
Ein Beispiel, das zeigt, wie ein Treiber Speicher zugeordnete Registerressourcen findet und zuordnet, finden Sie unter Lesen und Schreiben in Geräteregister.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 8.1 |
Zielplattform- | Universal |
Mindest-UMDF-Version | 2.0 |
Header- | wdfdevice.h (einschließen Wdf.h) |
Library | WUDFx02000.lib |
DLL- | WUDFx02000.dll |
IRQL- | PASSIVE_LEVEL |