WIN32_FIND_DATA (Structures)
Last changed: -62.91.108.152

.

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 *lpwfdFlashCard;

// Structure for storing card information temporarily.

WIN32 *lpwfdFlashCardTmp;

lpwfdFlashCardTmp = (WIN32 *) 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