Advertisement
C_Volume2 System Services/ Functions #81584

Logical Drive Enumerator

This code enumerates a list of the logical drive letters recognized by Windows, and displays this list in a message box.

AI

AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Source Code
original-source
WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
  DWORD Drives;
  char output[255];
  DWORD bit_modify[] = {
   1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80, 0x100, 0x200,
   0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000, 0x10000,
   0x20000, 0x40000, 0x80000, 0x100000, 0x200000, 0x400000,
   0x800000, 0x1000000, 0x2000000
  };
  char *drive_list[] = {
   "A: ", "B: ", "C: ", "D: ", "E: ", "F: ", "G: ", "H: ", "I: ",
   "J: ", "K: ", "L: ", "M: ", "N: ", "O: ", "P: ", "Q: ",
   "R: ", "S: ", "T: ", "U: ", "V: ", "W: ", "Y: ", "Z: "
  };
  // ---- Clear the output buffer ----
  strcpy(output, "");
  // ---- Now, get the drives ----
  Drives = GetLogicalDrives();
  if(Drives == 0) {
   MessageBox(NULL, "There was an error getting the list of logical drives.",
         "Error!", MB_OK|MB_ICONERROR);
   return -1;
  }
  // ---- Create the list in the variable 'output' ----
  for(int loop = 0; loop < 25; loop++)
   if(Drives & bit_modify[loop]) strcat(output, drive_list[loop]);
  MessageBox(NULL, output, "Drives List...", MB_OK|MB_ICONINFORMATION);
  return 0;
}
Original Comments (3)
Recovered from Wayback Machine