next up previous contents
Next: 2.4 WD_PciConfigDump() Up: 2. WD_xxx PCI/PCMCIA/ISA Functions Previous: 2.2 WD_PciScanCards()   Contents


2.3 WD_PciGetCardInfo()


PURPOSE

$\bullet$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
$\bullet$hWD HANDLE Input
$\bullet$pPciCard WD_PCI_CARD_INFO*  
$\gg$pciSlot WD_PCI_SLOT  
$\diamond$dwBus DWORD Input
$\diamond$dwSlot DWORD Input
$\diamond$dwFunction DWORD Input
$\gg$Card WD_CARD  
$\diamond$dwItems DWORD Output
$\diamond$Item WD_ITEMS[WD_CARD_ITEMS]  
$\triangleright$item DWORD Output
$\triangleright$fNotSharable DWORD Output
$\triangleright$dwReserved DWORD N/A
$\triangleright$dwOptions DWORD N/A
$\triangleright$I union  
$\rightarrow$Mem struct  
$\star$dwPhysicalAddr DWORD Output
$\star$dwBytes DWORD Output
$\star$dwTransAddr DWORD N/A
$\star$dwUserDirectAddr DWORD N/A
$\star$dwCpuPhysicalAddr DWORD N/A
$\star$dwBar DWORD Output
$\rightarrow$IO struct  
$\star$dwAddr KPTR Output
$\star$dwBytes DWORD Output
$\star$dwBar DWORD Output
$\rightarrow$Int struct  
$\star$dwInterrupt DWORD Output
$\star$dwOptions DWORD Output
$\star$hInterrupt DWORD N/A
$\rightarrow$Bus WD_BUS  
$\star$dwBusType WD_BUS_TYPE Output
$\star$dwBusNum DWORD Output
$\star$dwSlotFunc DWORD Output
$\rightarrow$Val 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:
$\bullet$ pciSlot PCI slot information structure:
$\gg$ dwBus PCI bus number (0 based)
$\gg$ dwSlot PCI slot number (0 based)
$\gg$ dwFunction PCI function number (0 based)
$\bullet$ Card Card information structure:
$\gg$ dwItems Number of items detected on the card
$\gg$ Item Card items information structure:
$\diamond$ item Type of item. Can be ITEM_MEMORY, ITEM_IO, ITEM_INTERRUPT or ITEM_BUS.
$\diamond$ fNotSharable If TRUE, only one application at a time can access the mapped memory range, or monitor this card's interrupts
$\diamond$ I Specific data according to the item type:
$\triangleright$ Mem Describes a memory item (item = ITEM_MEMORY):
$\rightarrow$ dwPhysicalAddr First address of the physical memory range
$\rightarrow$ dwBytes Length of the memory range, in bytes
$\rightarrow$ dwBar Base Address Register (BAR) number of the memory range
$\triangleright$ IO Describes an I/O item (item = ITEM_IO):
$\rightarrow$ dwAddr First address of the I/O range
$\rightarrow$ dwBytes Length of the I/O range, in bytes
$\rightarrow$ dwBar Base Address Register (BAR) number for the I/O range
$\triangleright$ Int Describes an interrupt item (item = ITEM_INTERRUPT):
$\rightarrow$ dwInterrupt Physical interrupt request (IRQ) number
$\rightarrow$ dwOptions 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.
$\bullet$INTERRUPT_MESSAGE_X - Indicates that the hardware supports Extended Message-Signaled Interrups (MSI-X).
This option is applicable only to PCI cards on Linux - see the WinDriver PCI Manual.
$\bullet$INTERRUPT_MESSAGE - On Linux, indicates that the hardware supports Message-Signaled Interrups (MSI).
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.
$\bullet$INTERRUPT_LEVEL_SENSITIVE - Indicates that the hardware supports level sensitive interrupts.
$\triangleright$ Bus Describes a bus item (item = ITEM_BUS):
$\rightarrow$ dwBusType The card's bus type. For a PCI card the bus type is WD_BUS_PCI
$\rightarrow$ dwBusNum The card's bus number
$\rightarrow$ dwSlotFunc 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");
}


next up previous contents
Next: 2.4 WD_PciConfigDump() Up: 2. WD_xxx PCI/PCMCIA/ISA Functions Previous: 2.2 WD_PciScanCards()   Contents