Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
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