Condividi tramite


Funzione WdfDeviceMapIoSpace (wdfdevice.h)

[Si applica solo a UMDF]

La funzione WdfDeviceMapIoSpace esegue il mapping dell'intervallo di indirizzi fisico specificato allo spazio degli indirizzi di sistema e restituisce uno pseudo indirizzo di base.

Sintassi

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

Parametri

[in] Device

Handle per un oggetto dispositivo framework.

[in] PhysicalAddress

Specifica l'indirizzo fisico a 64 bit iniziale dell'intervallo di I/O di cui eseguire il mapping.

[in] NumberOfBytes

Specifica un valore maggiore di zero, che indica il numero di byte di cui eseguire il mapping.

[in] CacheType

Specifica un valore MEMORY_CACHING_TYPE, che indica l'attributo della cache da usare per eseguire il mapping dell'intervallo di indirizzi fisici. Il tipo di enumerazione MEMORY_CACHING_TYPE è definito in Wdfdevice.h.

[out] PseudoBaseAddress

Indirizzo di una posizione che riceve un puntatore all'indirizzo di base pseudo.

Valore restituito

Se l'operazione ha esito positivo, la funzione restituisce STATUS_SUCCESS.

La funzione potrebbe restituire altri valori NTSTATUS .

Osservazioni

Questa funzione è l'equivalente UMDF versione 2 di IWDFDevice3::MapIoSpace.

Un driver deve chiamare questa funzione durante l'avvio del dispositivo se riceve risorse convertite di tipo CmResourceTypeMemory in una struttura CM_PARTIAL_RESOURCE_DESCRIPTOR. WdfDeviceMapIoSpace esegue il mapping dell'indirizzo fisico restituito nell'elenco di risorse a un indirizzo gestito dal framework denominato pseudo indirizzo di base.

Il driver può quindi usare lo pseudo indirizzo di base per accedere ai registri dei dispositivi con WDF_READ_REGISTER_Xxx e WDF_WRITE_REGISTER_xxx funzioni.

Un driver che chiama WdfDeviceMapIoSpace deve impostare la direttiva INF UmdfDirectHardwareAccess su AllowDirectHardwareAccess.

Se il driver imposta la direttiva UmdfRegisterAccessMode INF su RegisterAccessUsingUserModeMapping, chiamando WdfDeviceMapIoSpace esegue anche il mapping dell'intervallo di indirizzi fisici specificato a un intervallo di indirizzi di base in modalità utente a cui il driver può successivamente accedere chiamando WdfDeviceGetHardwareRegisterMappedAddress.

Per altre informazioni sulle direttive INF che i driver UMDF possono usare, vedere Specifica delle direttive WDF nei file INF.

Per altre informazioni sull'analisi delle risorse hardware a partire da UMDF versione 2, vedere Gestione delle risorse hardware in un driver UMDF.

Il tipo PHYSICAL_ADDRESS è definito in Wudfwdm.h, come indicato di seguito:

typedef LARGE_INTEGER PHYSICAL_ADDRESS;

Per un esempio che mostra come un driver trova ed esegue il mapping delle risorse di registrazione mappate alla memoria, vedere Lettura e scrittura nei registri dei dispositivi.

Fabbisogno

Requisito Valore
client minimo supportato Windows 8.1
piattaforma di destinazione Universale
versione minima di UMDF 2.0
intestazione wdfdevice.h (include Wdf.h)
libreria WUDFx02000.lib
dll WUDFx02000.dll
IRQL PASSIVE_LEVEL

Vedere anche

IWDFDevice3::MapIoSpace

WdfDeviceUnmapIoSpace