VOID
NdisReadEisaSlotInformation(
OUT PNDIS_STATUS Status,
IN NDIS_HANDLE WrapperConfigurationContext,
OUT PUINT SlotNumber,
OUT PNDIS_EISA_FUNCTION_INFORMATION EisaData
);
NdisReadEisaSlotInformation returns EISA configuration information for a NIC on an EISA bus.
NdisReadEisaSlotInformation reads standard EISA bus configuration information for a NIC that it finds on an EISA I/O bus and copies the bus-relative configuration information into a buffer.
If the call to NdisReadEisaSlotInformation succeeds, this function returns information in the caller-supplied buffer at EisaData, formatted as an NDIS_EISA_SLOT_INFORMATION structure followed by an NDIS_EISA_FUNCTION_INFORMATION structure.
The NDIS_EISA_SLOT_INFORMATION structure is defined as follows:
typedef struct _NDIS_EISA_SLOT_INFORMATION { UCHAR ReturnCode; UCHAR ReturnFlags; UCHAR MajorRevision; UCHAR MinorRevision; USHORT Checksum; UCHAR NumberFunctions; UCHAR FunctionInformation; ULONG CompressedId; } NDIS_EISA_SLOT_INFORMATION, *NDIS_EISA_SLOT_INFORMATION;
Members of interest to NIC drivers include the following:
Member |
Meaning |
Checksum |
The checksum value allows validation of the configuration data. |
NumberFunctions |
The number of functions at this slot. |
FunctionInformation |
Whether NDIS_EISA_FUNCTION_INFORMATION is available for this slot. |
CompressedId |
The EISA compressed identification of the device at this slot. |
The caller of NdisReadEisaSlotInformation can use the CompressedId value to confirm whether the NIC at this slot is its own. At most, NdisReadEisaSlotInformation retrieves the function information for the initial function. A NIC driver can call NdisReadEisaSlotInformationEx to retrieve the EISA configuration information for additional functions, if any.
The NDIS_EISA_FUNCTION_INFORMATION structure is defined as follows:
typedef struct _NDIS_EISA_FUNCTION_INFORMATION { ULONG CompressedId; UCHAR IdSlotFlags1; UCHAR IdSlotFlags2; UCHAR MinorRevision; UCHAR MajorRevision; UCHAR Selections[26]; UCHAR FunctionFlags; UCHAR TypeString[80]; EISA_MEMORY_CONFIGURATION EisaMemory[9]; EISA_IRQ_CONFIGURATION EisaIrq[7]; EISA_DMA_CONFIGURATION EisaDma[4]; EISA_PORT_CONFIGURATION EisaPort[60]; UCHAR InitializationData[60]; } NDIS_EISA_FUNCTION_INFORMATION, *PNDIS_EISA_FUNCTION_INFORMATION;
The members of this structure correspond to the standard EISA configuration function block, as follows:
Member |
Meaning |
CompressedId |
Specifies the EISA compressed identification for the device. This value is identical to that of the CompressedId in the returned NDIS_EISA_SLOT_INFORMATION structure. |
IdSlotFlags1 |
Specifies byte 0 identifier and slot information. |
IdSlotFlags2 |
Specifies byte 1 identifier and slot information. |
MinorRevision |
Specifies the .cfg file minor revision level. |
MajorRevision |
Specifies the .cfg file major revision level. |
Selections[26] |
Specifies an array for 26 selections. |
FunctionFlags |
Specifies function flags. |
TypeString[80] |
Specifies an array for a type and subtype ASCII string. |
EisaMemory[9] |
Specifies an array in which each element is an EISA_MEMORY_CONFIGURATION structure, defining the bus-relative device memory range. |
EisaIrq[7] |
Specifies an array in which each element is an EISA_IRQ_CONFIGURATION structure, defining the bus-relative device interrupt. |
EisaDma[4] |
Specifies an array in which each element is an EISA_DMA_CONFIGURATION structure, defining the bus-relative DMA capacity, timing, and channel number, if any. |
EisaPort[60] |
Specifies an array in which each element is an EISA_PORT_CONFIGURATION structure, defining the bus-relative I/O port ranges of the device. |
InitializationData[60] |
Specifies an array of EISA initialization data. |
NIC drivers call NdisReadEisaSlotInformation to identify their respective adapters in the current platform. When a particular driver’s NIC is found, the bus-relative configuration parameters returned at EisaData are passed in subsequent calls to functions such as NdisMRegisterInterrupt (EisaIrq), NdisMMapIoSpace (EisaMemory), and NdisMRegisterIoPortRange (EisaPort).
After consuming the returned information, the caller of NdisReadEisaSlotInformation is responsible for releasing the memory allocated at EisaData.
Callers of NdisReadEisaSlotInformation run at IRQL PASSIVE_LEVEL.
MiniportInitialize, NdisFreeMemory, NdisMMapIoSpace, NdisMRegisterInterrupt, NdisMRegisterIoPortRange, NdisMSetAttributes, NdisMSetAttributesEx, NdisOpenConfiguration, NdisReadEisaSlotInformationEx