NdisMRegisterIoPortRange-Funktion (ndis.h)

NdisMRegisterIoPortRange richtet den Treiberzugriff auf Geräte-E/A-Ports mit den Xxx-Funktionen NdisRawReadPort und NdisRawWritePort ein und beansprucht den Bereich der E/A-Portadressen in der Registrierung für die NIC dieses Treibers.

Syntax

NDIS_STATUS NdisMRegisterIoPortRange(
  [out] PVOID       *PortOffset,
  [in]  NDIS_HANDLE MiniportAdapterHandle,
  [in]  UINT        InitialPort,
  [in]  UINT        NumberOfPorts
);

Parameter

[out] PortOffset

Gibt eine vom Aufrufer bereitgestellte Variable an, in der diese Funktion die zugeordnete virtuelle Basisadresse für den angegebenen busrelativen E/A-Portbereich zurückgibt, der durch InitialPort und NumberOfPorts angegeben wird.

[in] MiniportAdapterHandle

Gibt die Handleeingabe für MiniportInitializeEx an.

[in] InitialPort

Gibt die busrelative Basisportadresse für einen Portbereich an, der zugeordnet werden soll.

[in] NumberOfPorts

Gibt die Anzahl der Ports im zu zuordnenden Bereich an.

Rückgabewert

NdisMRegisterIoPortRange kann eine der folgenden Aktionen zurückgeben:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
Der angegebene E/A-Portbereich wurde erfolgreich zugeordnet, sodass der Wert bei PortOffset gültig ist und der zugeordnete Bereich in der Registrierung für die NIC beansprucht wurde.
NDIS_STATUS_RESOURCE_CONFLICT
Ein Versuch, den E/A-Portbereich in der Registrierung zu beanspruchen, ist fehlgeschlagen, möglicherweise weil ein anderer Treiber den Bereich für sein Gerät bereits in Anspruch genommen hat. NdisMRegisterIoPortRange protokolliert in diesem Fall einen Fehler.
NDIS_STATUS_RESOURCES
Der Portbereich konnte nicht zugeordnet werden, oder NDIS konnte keine Ressourcen zuordnen, um die Registrierung auf Hardwareressourcenkonflikte zu überprüfen.
NDIS_STATUS_FAILURE
Entweder liegt der Bustyp oder die Busnummer außerhalb des Bereichs, oder die angegebenen InitialPort - und NumberOfPorts waren ungültig (möglicherweise nicht innerhalb des E/A-Portbereichs der aktuellen Plattform).

Hinweise

Ein Miniporttreiber ruft NdisMRegisterIoPortRange über seine MiniportInitializeEx-Funktion auf. MiniportInitializeEx muss aufrufen NdisMSetMiniportAttributes vor dem Aufruf von NdisMRegisterIoPortRange.

NdisMRegisterIoPortRange ordnet einen busrelativen Geräteadressbereich zu, den der Miniporttreiber anschließend verwenden kann, um durch Aufrufen der Xxx-Funktionen von NdisRaw auf einen E/A-Portbereich auf einer NIC zuzugreifen. Bei einem erfolgreichen Aufruf wird der angegebene Bereich von E/A-Ports in der Registrierung für die NIC des Aufrufers beansprucht.

Da die an NdisRawXxx übergebenen Parameter zugeordnet wurden, werden diese Funktionen deutlich schneller ausgeführt als die entsprechende NdisImmediate.. PortXxx. Nach einem erfolgreichen Aufruf von NdisMRegisterIoPortRange kann ein Miniporttreiber keines der NdisImmediate aufrufen. Portiert Xxx-Funktionen entweder mit busrelativen Adressen oder zugeordneten virtuellen Adressen innerhalb eines E/A-Portbereichs.

Wenn der Aufruf von NdisMRegisterIoPortRange fehlschlägt, sollte MiniportInitializeEx alle Ressourcen freigeben, die es bereits für eine NIC zugewiesen hat, und dann die Initialisierung für diese NIC fehlschlägt.

Treiber von NICs mit Geräteregistern im Hostspeicherbereich rufen NdisMMapIoSpace und anschließend die Xxx-Funktionen NdisRead/WriteRegister auf, um auf die NIC-Register zuzugreifen.

Anforderungen

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

Weitere Informationen

MiniportInitializeEx

NdisMDeregisterIoPortRange

NdisMMapIoSpace

NdisRawReadPortBufferUchar

NdisRawReadPortBufferUlong

NdisRawReadPortBufferUshort

NdisRawReadPortUchar

NdisRawReadPortUlong

NdisRawReadPortUshort

NdisRawWritePortBufferUchar

NdisRawWritePortBufferUlong

NdisRawWritePortBufferUshort

NdisRawWritePortUchar

NdisRawWritePortUlong

NdisRawWritePortUshort

NdisReadRegisterUchar

NdisReadRegisterUlong

NdisReadRegisterUshort

NdisWriteRegisterUchar

NdisWriteRegisterUlong

NdisWriteRegisterUshort