2.5. WD_PcmciaScanCards()

Purpose

Detects PCMCIA devices attached to PCMCIA sockets, which conform to the input criteria (manufacturer ID and/or card ID), and returns the number and location (bus, socket and function) of the detected devices.

Prototype
DWORD WD_PcmciaScanCards(
    HANDLE hWD,
    WD_PCMCIA_SCAN_CARDS *pPcmciaScan);
Parameters
NameTypeInput/Output
hWDHANDLEInput
pPcmciaScanWD_PCMCIA_SCAN_CARDS* 
• searchIdWD_PCMCIA_ID 
 * wManufacturerIdWORDInput
 * wCardIdWORDInput
• dwCardsDWORDOutput
• cardIdWD_PCMCIA_ID[WD_PCMCIA_CARDS] 
 * wManufacturerIdDWORDOutput
 * wCardIdDWORDOutput
• cardSlotWD_PCMCIA_SLOT[WD_PCMCIA_CARDS] 
 * uBusBYTEOutput
 * uSocketBYTEOutput
 * uFunctionBYTEOutput
 * uPaddingBYTEN/A
• dwOptionsDWORDInput
Description
NameDescription
hWDHandle to WinDriver's kernel-mode driver as received from WD_Open() [5.2]
pPcmciaScanPointer to a PCMCIA bus scan information structure:
• searchIdPCMCIA card ID information structure:
 * wManufacturerId The manufacturer ID of the PCMCIA cards to detect. If 0, the function will search for all PCMCIA manufacturer IDs.
 * wCardId The card ID of the PCMCIA cards to detect. If 0, the function will search for all PCMCIA card IDs.
If both wManufacturerId and wCardId are set to 0 the function will return information regarding all connected PCMCIA cards.
• dwCards Number of cards detected for the specified search criteria set in the searchId field
• cardId Array of PCMCIA card ID information structures for the detected PCMCIA cards that match the search criteria set in the searchId field:
 * wManufacturerIdManufacturer ID
 * wCardIdCard ID
• cardSlot Array of PCMCIA slot information structures for the detected PCMCIA cards that match the search criteria set in the searchId field:
 * uBusBus number (0 based)
 * uSocketSocket number (0 based)
 * uFunctionFunction number (0 based)
• dwOptionsShould 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].

Example
WD_PCMCIA_SCAN_CARDS pcmciaScan;
DWORD cards_found;
WD_PCMCIA_SLOT pcmciaSlot;

BZERO(pcmciaScan);
pcmciaScan.searchId.wManufacturerId = 0x1234;
pcmciaScan.searchId.wCardId = 0x5678;
WD_PcmciaScanCards(hWD, &pcmciaScan);
if (pcmciaScan.dwCards>0) /* Found at least one device */
{
    /* Use the first card found */
    pcmciaSlot = pcmciaScan.cardSlot[0];
}
else
{
    printf("No matching PCMCIA devices found\n");
}