hammackj

Tool: drivelist

This is a tool I wrote for windows, that will list all of the drives currently mounted. I didn't know of a better way to show this information from the command line. This is using the windows api and is very straight forward, it should work on every version of windows.

/**
 * Drivelist v1.0.1
 * @file
 *
 * 05-25-2008: JPH - Created.
 * 08-22-2008: JPH - Added case 0, 1 and 6 to the switch of types.
 *
 * @author Jacob Hammack
 */

#include <windows.h>
#include <stdio.h>

/**
 * List's and prints all mounted drives and their drive type.
 *
 * @author Jacob Hammack
 */
void ListMountedDrives(void)
{
    char Buffer[MAX_PATH];
    char *DriveLetter;
    int DriveType;
    GetLogicalDriveStrings(MAX_PATH, Buffer);
    DriveLetter = Buffer;

    while (*DriveLetter)
    {
        if(*DriveLetter == 0)
        {
            break;
        }

        DriveType = GetDriveType(DriveLetter);

        switch(DriveType)
        {
            case 0:
                printf("%s\tUnknown Type\n", DriveLetter);
            break;

            case 1:
                printf("%s\tInvalid Root Path\n", DriveLetter);
            break;

            case 2:
                printf("%s\tRemoveable Drive\n", DriveLetter);
            break;

            case 3:
                printf("%s\tFixed Drive\n", DriveLetter);
            break;

            case 4:
                printf("%s\tNetwork Drive\n", DriveLetter);
            break;

            case 5:
                printf("%s\tCD-ROM Drive\n", DriveLetter);
            break;

            case 6:
                printf("%s\tRam Drive\n", DriveLetter);
            break;
        }

        DriveLetter = &DriveLetter[strlen(DriveLetter) + 1];
    }
}

/**
 * Main entry point for the DriveList Application.
 *
 * @author Jacob Hammack
 */
int main(int argc, char *argv[])
{
    printf("Drivelist v1.0.1\nJacob Hammack\nhttp://www.hammackj.com\n\n");

    ListMountedDrives();

    return 0;
}
CC=cl
CFLAGS= /nologo /MT /O2 /TC
LINKS=/link kernel32.lib /OUT:dl.exe /SUBSYSTEM:CONSOLE

all: drivelist

drivelist: drivelist.c
$(CC) $(CFLAGS) drivelist.c $(LINKS)

clean:
del *.exe; del *.obj
C:\drivelist>dl.exe
Drivelist v1.0.1
Jacob Hammack
http://www.hammackj.com

A:\     Removeable Drive
C:\     Fixed Drive
D:\     Fixed Drive
E:\     CD-ROM Drive
Z:\     Network Drive

C:\drivelist>