4/8/2010
Windows Mobile software for Windows Mobile Professional and
Windows Mobile Classic provides the
FindFirstFlashCardand the
FindNextFlashCardfunctions to programmatically enumerate
storage cards.
FindFirstFlashCardreturns a search handle that
FindNextFlashCarduses. It also returns a pointer to the
first storage card, if any.
FindNextFlashCardreturns a pointer to the next storage card
and a
BOOLvalue indicating whether the search was successful. The
following code example shows how to use
FindFirstFlashCardand
FindNextFlashCardto locate storage cards on Windows Mobile
Professional or Windows Mobile Classic devices.
Note: |
Because a device can have multiple storage cards with various
names, your application cannot make any assumptions about the
naming of or path to a particular card. |
Example
|
Copy Code
|
int index;
// Total number of storage cards found.
int iNumOfFlashCard = 0;
// Maximum number of storage cards to find.
int iMaxCards = 10;
// Whether to continue searching after finding a card.
BOOL bContinue = TRUE;
// Search handle for storage cards.
HANDLE hFlashCard;
// Structure for storing card information.
WIN32_FIND_DATA *lpwfdFlashCard;
// Structure for storing card information temporarily.
WIN32_FIND_DATA *lpwfdFlashCardTmp;
lpwfdFlashCardTmp = (WIN32_FIND_DATA *) LocalAlloc
(LPTR, iMaxCards * sizeof (WIN32_FIND_DATA));
// Test for failed memory allocation.
if (lpwfdFlashCardTmp == NULL)
return;
hFlashCard = (&lpwfdFlashCardTmp [0]);
if (hFlashCard == INVALID_HANDLE_VALUE)
{
// Free the memory.
LocalFree (lpwfdFlashCardTmp);
return;
}
while (bContinue)
{
iNumOfFlashCard += 1;
// Search for the next storage card.
bContinue = (hFlashCard,
&lpwfdFlashCardTmp [iNumOfFlashCard]);
}
// Close the search handle.
FindClose (hFlashCard);
if (iNumOfFlashCard > 0)
{
// Allocate memory for lpwfdFlashCard.
lpwfdFlashCard = (WIN32_FIND_DATA *) LocalAlloc
(LPTR, iNumOfFlashCard * sizeof
(WIN32_FIND_DATA));
// Test for failed memory allocation.
if (lpwfdFlashCard == NULL)
{
// Free the temp card memory.
LocalFree (lpwfdFlashCardTmp);
return;
}
// Assign lpwfdFlashCardTmp to lpwfdFlashCard.
for (index=0; index < iNumOfFlashCard; ++index)
{
lpwfdFlashCard [index] = lpwfdFlashCardTmp [index];
}
// Free the memory.
LocalFree (lpwfdFlashCard);
}
LocalFree (lpwfdFlashCardTmp);
|
See Also