Condividi tramite


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
NDIS_STATUS_SUCCESS
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.
NDIS_STATUS_RESOURCE_CONFLICT
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.
NDIS_STATUS_RESOURCES
Impossibile eseguire il mapping della memoria o la memoria virtuale sufficiente non può essere allocata.
NDIS_STATUS_FAILURE
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)

Vedi anche

MiniportHaltEx

MiniportInitializeEx

NdisMGetBusData

NdisMUnmapIoSpace

NdisOpenConfigurationEx

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort