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 |
---|---|
|
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 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. |
|
Der Arbeitsspeicher konnte nicht zugeordnet werden, oder es konnte kein ausreichender virtueller Arbeitsspeicher zugewiesen werden. |
|
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) |