NdisReadPciSlotInformation

ULONG
NdisReadPciSlotInformation(
IN NDIS_HANDLE
NdisAdapterHandle,
IN ULONG SlotNumber,
IN ULONG Offset,
IN PVOID Buffer,
IN ULONG Length
);

NdisReadPciSlotInformation returns bus-specific PCI configuration information from the PCI configuration space for a device at a particular slot on the bus.

Parameters

NdisAdapterHandle

Specifies the MiniportAdapterHandle passed in to MiniportInitialize and to most other MiniportXxx functions.

SlotNumber

Specifies the slot number of a NIC on the I/O bus.

Offset

Specifies the byte offset within the PCI configuration space at which to begin transferring the configuration information.

Buffer

Points to a caller-allocated buffer in which to return the requested configuration information.

Length

Specifies the size in bytes of the buffer at Buffer and, therefore, how many bytes of configuration information to return.

Return Value

NdisReadPciSlotInformation returns how many bytes of configuration information it returned at Buffer.

Comments

NdisReadPciSlotInformation helps a driver find a NIC that it supports on a PCI bus. When it does, the driver can call NdisMPciAssignResources to determine the bus-relative configuration parameters it can use in subsequent calls to other NdisXxx configuration functions, such as NdisMRegisterInterrupt, NdisMMapIoSpace, and/or NdisMRegisterIoPortRange.

NdisReadPciSlotInformation returns the same bus-relative PCI configuration information as NdisImmediateReadPciSlotInformation. However, callers of NdisReadPciSlotInformation pass the MiniportAdapterHandle passed to the MiniportInitialize function, rather than the WrapperConfigurationContext handle.

The caller is responsible for releasing the memory at Buffer when the driver has consumed the configuration information with NdisFreeMemory.

Miniport drivers call this function from their MiniportInitialize functions.

Callers of NdisReadPciSlotInformation can run at IRQL <= DISPATCH_LEVEL. Usually, callers are running at IRQL PASSIVE_LEVEL.

See Also

MiniportInitialize, NdisFreeMemory, NdisMMapIoSpace, NdisMPciAssignResources, NdisMRegisterInterrupt, NdisMRegisterIoPortRange, NdisMSetAttributes, NdisMSetAttributesEx, NdisOpenConfiguration