NdisMMapIoSpace-Funktion (ndis.h)
NdisMMapIoSpace ordnet einen bestimmten busrelativen "physischen" Geräte-RAM-Bereich zu oder registriert sich in einem virtuellen Bereich im Systemraum.
Syntax
NDIS_STATUS NdisMMapIoSpace(
[out] PVOID *VirtualAddress,
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] NDIS_PHYSICAL_ADDRESS PhysicalAddress,
[in] UINT Length
);
Parameter
[out] VirtualAddress
Zeigen Sie auf eine vom Aufrufer bereitgestellte Variable, die auf die konvertierte virtuelle Adresse festgelegt ist, wenn der Aufruf erfolgreich ist.
[in] MiniportAdapterHandle
Gibt die Handleeingabe für MiniportInitializeEx-an.
[in] PhysicalAddress
Gibt die busrelative Basis-physische Adresse des zuzuordnenden Gerätespeicherbereichs an.
[in] Length
Gibt die Anzahl der Bytes an, die zugeordnet werden sollen.
Rückgabewert
NdisMMapIoSpace- kann einen der folgenden Statuswerte zurückgeben:
Rückgabecode | Beschreibung |
---|---|
|
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. |
|
Ein Versuch, den Gerätespeicherbereich in der Registrierung zurückzugeben, ist fehlgeschlagen, möglicherweise weil bereits ein anderer Treiber den Bereich für sein Gerät beansprucht hat. NdisMMapIoSpace protokolliert einen Fehler, wenn dies auftritt. |
|
Der Speicher konnte nicht zugeordnet werden, oder es konnte kein ausreichender virtueller Speicher zugeordnet werden. |
|
Entweder der Bustyp oder die Busnummer liegt außerhalb des Gültigen Bereichs oder die angegebene PhysicalAddress und Length waren ungültig (möglicherweise nicht innerhalb des E/A-Raums der aktuellen Plattform). |
Bemerkungen
Diese Funktion wird von Treibern von NICs aufgerufen, die über einen Bordspeicher oder eine Bank von Geräteregistern verfügen, die im E/A-Bereich des Hosts angezeigt werden. Der Treiber einer NIC, die PIO-Aufrufe verwendet, NdisMMapIoSpace.
Ein erfolgreicher Aufruf von NdisMMapIoSpace beansprucht Hardwareressourcen in der Registrierung für die NIC des Treibers. Folglich rufen nur MiniportInitializeEx Funktionen NdisMMapIoSpaceauf.
NdisMMapIoSpace legt die Variable auf VirtualAddress- auf NULL- fest, wenn keine NDIS_STATUS_SUCCESS zurückgegeben wird.
MiniportInitializeEx ruft entweder den PhysicalAddress Wert aus dem Parameter des Treibers Registrierungsschlüssel oder durch Aufrufen eines bustypspezifischen NdisXxx Konfigurationsfunktion ab. Der angegebene physische Adressbereich muss innerhalb des E/A-Raums der aktuellen Plattform liegen. Es handelt sich um einen Programmierfehler, NdisMMapIoSpace mit einer physischen Hostspeicheradresse aufzurufen.
Ein Miniporttreiber muss den gegenseitigen NdisMUnmapIoSpace- aufrufen, um seinen Anspruch auf Systemressourcen freizugeben, wenn MiniportInitializeEx anschließend keine NIC initialisieren kann, wenn eine NIC vom Computer entfernt wird und/oder wenn der Treiber entladen wird.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte 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- | Universal |
Header- | ndis.h (include Ndis.h) |
Library | Ndis.lib |
IRQL- | PASSIVE_LEVEL |
DDI-Complianceregeln | Irql_Miniport_Driver_Function(ndis), NdisMMapIoSpace(ndis) |