Share via


NdisMRegisterIoPortRange

This function sets up driver access to device I/O ports with the NdisRawReadPortXXX and NdisRawWritePortXXX functions and claims the range of I/O port addresses in the registry for that driver's network adapter.

NDIS_STATUS NdisMRegisterIoPortRange(
OUT PVOID *PortOffset, 
IN NDIS_HANDLE MiniportAdapterHandle, 
IN UINT InitialPort, 
IN UINT NumberOfPorts );

Parameters

  • PortOffset
    Specifies a caller-supplied variable in which this function returns the mapped base virtual address for the specified bus-relative I/O port range specified by InitialPort and NumberOfPorts.
  • MiniportAdapterHandle
    Handle input to the MiniportInitialize function.
  • InitialPort
    Specifies the bus-relative base port address for a range of ports to be mapped.
  • NumberOfPorts
    Specifies the number of ports in the range to be mapped.

Return Values

Returns one of the following:

  • NDIS_STATUS_SUCCESS
    The specified range of I/O ports was mapped successfully; the value at PortOffset is valid, and the mapped range has been claimed in the registry for the network adapter.
  • NDIS_STATUS_RESOURCE_CONFLICT
    An attempt to claim the I/O port range in the registry has failed, possibly because another driver already claimed the range for its device. This function logs an error if this occurs.
  • NDIS_STATUS_RESOURCES
    The port range could not be mapped, or NDIS could not allocate resources to check the registry for hardware-resource conflicts.
  • NDIS_STATUS_FAILURE
    Either the bus type or bus number is out of range, or the specified InitialPort and NumberOfPorts were invalid, possibly not within the I/O port space of the current platform.

Remarks

An network adapter driver calls this function from its MiniportInitialize function. MiniportInitialize must call NdisMSetAttributes or NdisMSetAttributesEx before calling this function.

This function maps a bus-relative device address range that the miniport can use subsequently to access an I/O port range on its network adapter by calling the NdisRawXXX functions. A successful call claims the specified range of I/O ports in the registry for the caller's network adapter.

Because the parameters passed to the NdisRawXXX ** have been mapped, these functions run significantly faster than the corresponding NdisImmediateXXXPortXXX. After a successful call to this function, a miniport cannot call any of the NdisImmediateXXXPortXXX functions with either bus-relative addresses or mapped virtual addresses within such an I/O port range.

If its call to this function fails, MiniportInitialize releases all resources that it has already allocated for its network adapter, and then fails initialization for that network adapter.

Drivers of network adapters with device registers in the host memory space call NdisMMapIoSpace and, subsequently, the NdisRead/WriteRegisterXXX functions to access the network adapter registers.

Requirements

Runs on Versions Defined in Include Link to
Windows CE OS 2.0 and later Ndis.h   Ndislib.lib

Note   This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.

See Also

MiniportInitialize, NdisMDeregisterIoPortRange, NdisMMapIoSpace, NdisMSetAttributes, NdisMSetAttributesEx, NdisRawReadPortBufferUchar, NdisRawReadPortBufferUlong, NdisRawReadPortBufferUshort, NdisRawReadPortUchar, NdisRawReadPortUlong, NdisRawReadPortUshort, NdisRawWritePortUchar, NdisRawWritePortUlong, NdisRawWritePortUshort

 Last updated on Tuesday, July 13, 2004

© 1992-2000 Microsoft Corporation. All rights reserved.