Freigeben über


NdisMMapIoSpace-Funktion (ndis.h)

NdisMMapIoSpace ordnet einen bestimmten busrelativen "physischen" Bereich des Geräte-RAM zu oder registriert sich in einem virtuellen Bereich des Systemraums.

Syntax

NDIS_STATUS NdisMMapIoSpace(
  [out] PVOID                 *VirtualAddress,
  [in]  NDIS_HANDLE           MiniportAdapterHandle,
  [in]  NDIS_PHYSICAL_ADDRESS PhysicalAddress,
  [in]  UINT                  Length
);

Parameter

[out] VirtualAddress

Zeiger auf eine vom Aufrufer bereitgestellte Variable, die auf die konvertierte virtuelle Adresse festgelegt ist, wenn der Aufruf erfolgreich ist.

[in] MiniportAdapterHandle

Gibt die Handle-Eingabe für MiniportInitializeEx an.

[in] PhysicalAddress

Gibt die busrelative physische Basisadresse des zuzuordnenden Gerätespeicherbereichs an.

[in] Length

Gibt die Anzahl der Bytes an, die zugeordnet werden sollen.

Rückgabewert

NdisMMapIoSpace kann einen der folgenden status Werte zurückgeben:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
Der Gerätespeicherbereich wurde erfolgreich zugeordnet, sodass der Wert bei VirtualAddress gültig ist und der zugeordnete Bereich in der Registrierung für die NIC beansprucht wurde.
NDIS_STATUS_RESOURCE_CONFLICT
Ein Versuch, den Gerätespeicherbereich in der Registrierung zu beanspruchen, ist fehlgeschlagen, möglicherweise weil ein anderer Treiber den Bereich für sein Gerät bereits beansprucht hat. NdisMMapIoSpace protokolliert in diesem Fall einen Fehler.
NDIS_STATUS_RESOURCES
Der Arbeitsspeicher konnte nicht zugeordnet werden, oder es konnte kein ausreichender virtueller Arbeitsspeicher zugewiesen werden.
NDIS_STATUS_FAILURE
Entweder liegt der Bustyp oder die Busnummer außerhalb des Bereichs, oder die angegebene PhysicalAddress und Length waren ungültig (möglicherweise nicht innerhalb des E/A-Raums der aktuellen Plattform).

Hinweise

Diese Funktion wird von Treibern von NiCs aufgerufen, die über einen Onboardspeicher oder eine Bank von Geräteregistern verfügen, die im E/A-Bereich des Hosts angezeigt werden. Der Treiber einer NIC, die PIO verwendet, ruft beispielsweise NdisMMapIoSpace auf.

Ein erfolgreicher Aufruf von NdisMMapIoSpace beansprucht Hardwareressourcen in der Registrierung für die NIC des Treibers. Folglich rufen nur MiniportInitializeEx-FunktionenNdisMMapIoSpace auf.

NdisMMapIoSpace legt die Variable unter VirtualAddress auf NULL fest, wenn sie nicht NDIS_STATUS_SUCCESS zurückgibt.

MiniportInitializeEx ruft entweder den Wert PhysicalAddress aus dem Parameter-Registrierungsschlüssel des Treibers oder durch Aufrufen einer bustypspezifischen NdisXxx-Konfigurationsfunktion ab. Der angegebene physische Adressbereich muss innerhalb des E/A-Bereichs der aktuellen Plattform liegen. Es ist ein Programmierfehler, NdisMMapIoSpace mit einer physischen Hostspeicheradresse aufzurufen.

Ein Miniporttreiber muss den gegenseitigen NdisMUnmapIoSpace aufrufen, um seinen Anspruch für Systemressourcen freizugeben, wenn MiniportInitializeEx anschließend keine NIC initialisiert, eine NIC vom Computer entfernt wird und/oder wenn der Treiber entladen wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisMMapIoSpace (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisMMapIoSpace (NDIS 5.1)) in Windows XP.
Zielplattform Universell
Header ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib
IRQL PASSIVE_LEVEL
DDI-Complianceregeln Irql_Miniport_Driver_Function(ndis), NdisMMapIoSpace(ndis)

Weitere Informationen

MiniportHaltEx

MiniportInitializeEx

NdisMGetBusData

NdisMUnmapIoSpace

NdisOpenConfigurationEx

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort