PURPOSE
Retrieves PCI device's resource information (i.e., Memory ranges,
I/O ranges, Interrupt lines).
PROTOTYPE
DWORD WD_PciGetCardInfo(
HANDLE hWD,
WD_PCI_CARD_INFO *pPciCard);
PARAMETERS
| Name | Type | Input/Output |
|---|---|---|
| HANDLE | Input | |
| WD_PCI_CARD_INFO* | ||
| WD_PCI_SLOT | ||
| DWORD | Input | |
| DWORD | Input | |
| DWORD | Input | |
| WD_CARD | ||
| DWORD | Output | |
| WD_ITEMS[WD_CARD_ITEMS] | ||
|
|
DWORD | Output |
|
|
DWORD | Output |
|
|
DWORD | N/A |
|
|
DWORD | N/A |
|
|
union | |
| struct | ||
| DWORD | Output | |
| DWORD | Output | |
| DWORD | N/A | |
| DWORD | N/A | |
| DWORD | N/A | |
| DWORD | Output | |
| struct | ||
| KPTR | Output | |
| DWORD | Output | |
| DWORD | Output | |
| struct | ||
| DWORD | Output | |
| DWORD | Output | |
| DWORD | N/A | |
| WD_BUS | ||
| WD_BUS_TYPE | Output | |
| DWORD | Output | |
| DWORD | Output | |
| struct | N/A |
DESCRIPTION
| Name | Description |
|---|---|
| hWD | Handle to WinDriver's kernel-mode driver as received from WD_Open() [5.2] |
| pPciCard | Pointer to a PCI card information structure: |
| PCI slot information structure: | |
| PCI bus number (0 based) | |
| PCI slot number (0 based) | |
| PCI function number (0 based) | |
| Card information structure: | |
| Number of items detected on the card | |
| Card items information structure: | |
| Type of item. Can be ITEM_MEMORY, ITEM_IO, ITEM_INTERRUPT or ITEM_BUS. | |
| If TRUE, only one application at a time can access the mapped memory range, or monitor this card's interrupts | |
| Specific data according to the item type: | |
|
|
Describes a memory item (item = ITEM_MEMORY): |
| First address of the physical memory range | |
| Length of the memory range, in bytes | |
| Base Address Register (BAR) number of the memory range | |
|
|
Describes an I/O item (item = ITEM_IO): |
| First address of the I/O range | |
| Length of the I/O range, in bytes | |
| Base Address Register (BAR) number for the I/O range | |
|
|
Describes an interrupt item (item = ITEM_INTERRUPT): |
| Physical interrupt request (IRQ) number | |
| Interrupt options bit-mask, which can consist of a
combination of any of the following flags for
indicating the interrutp types supported by the
device.
The default interrupt type, when none of the following flags is set, is legacy edge-triggered interrupt. This option is applicable only to PCI cards on Linux - see the WinDriver PCI Manual. On Windows, indicates that the hardware supports MSI or Extended Message-Signaled Interrups (MSI-X). This option is applicable only to PCI cards on Linux and Windows Vista - see the WinDriver PCI Manual. |
|
|
|
Describes a bus item (item = ITEM_BUS): |
| The card's bus type. For a PCI card the bus type is WD_BUS_PCI | |
| The card's bus number | |
| A combination of the card's bus slot and function numbers: the lower three bits represent the function number and the remaining bits represent the slot number. For example: a value of 0x80 (<=> 10000000 binary) corresponds to a function number of 0 (lower 3 bits: 000) and a slot number of 0x10 (remaining bits: 10000). |
RETURN VALUE
Returns WD_STATUS_SUCCESS (0) on success, or an appropriate error code otherwise [A].
REMARKS
EXAMPLE
WD_PCI_CARD_INFO pciCardInfo;
WD_CARD Card;
BZERO(pciCardInfo);
pciCardInfo.pciSlot = pciSlot;
WD_PciGetCardInfo(hWD, &pciCardInfo);
if (pciCardInfo.Card.dwItems!=0) /* At least one item was found */
{
Card = pciCardInfo.Card;
}
else
{
printf("Failed fetching PCI card information\n");
}