Funzione NdisMMapIoSpace (ndis.h)
NdisMMapIoSpace esegue il mapping di un determinato intervallo di RAM del dispositivo relativo al bus o registra in un intervallo virtuale dello spazio di sistema.
Sintassi
NDIS_STATUS NdisMMapIoSpace(
[out] PVOID *VirtualAddress,
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] NDIS_PHYSICAL_ADDRESS PhysicalAddress,
[in] UINT Length
);
Parametri
[out] VirtualAddress
Puntatore a una variabile fornita dal chiamante impostata sull'indirizzo virtuale convertito se la chiamata ha esito positivo.
[in] MiniportAdapterHandle
Specifica l'input dell'handle in MiniportInitializeEx.
[in] PhysicalAddress
Specifica l'indirizzo fisico di base relativo al bus dell'intervallo di memoria del dispositivo da mappare.
[in] Length
Specifica il numero di byte da mappare.
Valore restituito
NdisMMapIoSpace può restituire uno dei valori di stato seguenti:
Codice restituito | Descrizione |
---|---|
|
L'intervallo di memoria del dispositivo è stato mappato correttamente in modo che il valore in VirtualAddress sia valido e l'intervallo mappato sia stato richiesto nel Registro di sistema per la scheda di interfaccia di rete. |
|
Un tentativo di attestazione dell'intervallo di memoria del dispositivo nel Registro di sistema non è riuscito, probabilmente perché un altro driver ha già richiesto l'intervallo per il dispositivo. NdisMMapIoSpace registra un errore se si verifica. |
|
Impossibile eseguire il mapping della memoria o la memoria virtuale sufficiente non può essere allocata. |
|
Il tipo di bus o il numero del bus non è compreso nell'intervallo oppure il valore PhysicalAddress e Length specificato non sono validi (possibilmente non all'interno dello spazio di I/O della piattaforma corrente). |
Commenti
Questa funzione viene chiamata dai driver delle schede di interfaccia di rete che dispongono di memoria su scheda o di una banca di registri di dispositivi che vengono visualizzati nello spazio di I/O dell'host. Ad esempio, il driver di una scheda di interfaccia di rete che usa PIO chiama NdisMMapIoSpace.
Una chiamata riuscita a NdisMMapIoSpace attestazioni risorse hardware nel Registro di sistema per la scheda di interfaccia di rete del driver. Di conseguenza, solo le funzioni MiniportInitializeExchiamano NdisMMapIoSpace.
NdisMMapIoSpace imposta la variabile in VirtualAddress su NULL se non restituisce NDIS_STATUS_SUCCESS.
MiniportInitializeEx ottiene il valore PhysicalAddress dalla chiave del Registro di sistema Parametri del driver o chiamando una funzione di configurazione NdisXxx specifica del bus. L'intervallo di indirizzi fisici specificato deve rientrare nello spazio di I/O della piattaforma corrente. Si tratta di un errore di programmazione per chiamare NdisMMapIoSpace con un indirizzo di memoria fisica host.
Un driver miniport deve chiamare il NdisMUnmapIoSpace per rilasciarne l'attestazione sulle risorse di sistema se MiniportInitializeEx successivamente non riesce a inizializzare una scheda di interfaccia di rete, se una scheda di interfaccia di rete viene rimossa dal computer e/o quando il driver viene scaricato.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato per i driver NDIS 6.0 e NDIS 5.1 (vedere NdisMMapIoSpace (NDIS 5.1) in Windows Vista. Supportato per i driver NDIS 5.1 (vedere NdisMMapIoSpace (NDIS 5.1) in Windows XP. |
Piattaforma di destinazione | Universale |
Intestazione | ndis.h (includere Ndis.h) |
Libreria | Ndis.lib |
IRQL | PASSIVE_LEVEL |
Regole di conformità DDI | Irql_Miniport_Driver_Function(ndis), NdisMMapIoSpace(ndis) |