PURPOSE
Retrieves PCMCIA device's resource information (i.e. memory
ranges, version, manufacturer and model strings, type of device, interrupt
information).
PROTOTYPE
DWORD WD_PcmciaGetCardInfo(
HANDLE hWD,
WD_PCMCIA_CARD_INFO *pPcmciaCard);
PARAMETERS
| Name | Type | Input/Output |
|---|---|---|
| HANDLE | Input | |
| WD_PCMCIA_CARD_INFO* | ||
| WD_PCMCIA_SLOT | ||
| BYTE | Input | |
| BYTE | Input | |
| BYTE | Input | |
| BYTE | N/A | |
| 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 | |
| CHAR |
Output | |
| CHAR [WD_PCMCIA_ MANUFACTURER_LEN] |
Output | |
| CHAR[WD_PCMCIA_ PRODUCTNAME_LEN] |
Output | |
| WORD | Input | |
| WORD | Input | |
| WORD | Input | |
| DWORD | N/A |
DESCRIPTION
| Name | Description |
|---|---|
| hWD | The handle to WinDriver's kernel-mode driver received from WD_Open() [5.2] |
| pPcmciaCard | Pointer to a PCMCIA card information structure: |
| PcmciaSlot | PCMCIA slot information structure: |
| cardSlot.uBus | Bus number (0 based) |
| cardSlot.uSocket | Socket number (0 based) |
| cardSlot.uFunction | Function number (0 based) |
| Card | Card information structure: |
| dwItems | Number of items detected on the card |
| Item | Card items information structure: |
| item | Type of item. Can be ITEM_MEMORY, ITEM_IO, ITEM_INTERRUPT or ITEM_BUS. |
| fNotSharable | If TRUE, only one application at a time can access the mapped memory range, or monitor this card's interrupts |
| I | Specific data according to the item type: |
| I.Mem | Describes a memory item (item = ITEM_MEMORY): |
| I.Mem.dwPhysicalAddr | First address of the physical memory range |
| I.Mem.dwBytes | Length of the memory range, in bytes |
| I.Mem.dwBar | Base Address Register (BAR) number of the memory range |
| I.IO | Describes an I/O item (item = ITEM_IO): |
| I.IO.dwAddr | First address of the I/O range |
| I.IO.dwBytes | Length of the I/O range, in bytes |
| I.IO.dwBar | Base Address Register (BAR) number for the I/O range |
| I.Int | Describes an interrupt item (item = ITEM_INTERRUPT): |
| I.Int.dwInterrupt | Physical interrupt request (IRQ) number |
| I.Int.dwOptions | Interrupt bit-mask, which includes the interrupt type (e.g. INTERRUPT_LEVEL_SENSITIVE for level sensitive interrupts). The default type is edge triggered. |
| I.Bus | Describes a bus item (item = ITEM_BUS): |
| I.Bus.dwBusType | The card's bus type. For a PCMCIA card the bus type is WD_BUS_PCMCIA |
| I.Bus.dwBusNum | The card's bus number |
| I.Bus.dwSlotFunc | A combination of the card's bus socket and function numbers: the lower three bits represent the function number and the remaining bits represent the socket number. For example: a value of 0x80 (<=> 10000000 binary) corresponds to a function number of 0 (lower 3 bits: 000) and a socket number of 0x10 (remaining bits: 10000). |
| cVersion | Card version string |
| cManufacturer | Card manufacturer string |
| cProductName | Card product name string |
| wManufacturerId | Card manufacturer ID |
| wCardId | Card type and model ID |
| wFuncId | Card function ID |
| dwOptions | Should always be set to 0 (reserved for future use) |
RETURN VALUE
Returns WD_STATUS_SUCCESS (0) on success, or an appropriate error code otherwise [A].
REMARKS
EXAMPLE
WD_PCMCIA_CARD_INFO pcmciaCardInfo;
WD_CARD Card;
BZERO(pcmciaCardInfo);
pcmciaCardInfo.pcmciaSlot = pcmciaSlot;
WD_PcmciaGetCardInfo(hWD, &pcmciaCardInfo);
if (pcmciaCardInfo.Card.dwItems!=0) /* At least one item was found */
{
Card = pcmciaCardInfo.Card;
}
else
{
printf("Failed fetching PCMCIA card information\n");
}