본문 바로가기

Windows/Windows API

GetDriveName

From : Virtual Dub

void DiskTestInitDlg(HWND hDlg)
{
    DWORD dwDriveMask = GetLogicalDrives();
    HWND hwndCombo = GetDlgItem(hDlg, IDC_DRIVE);
    char buf[256], szVolName[64];
    int i;
    BOOL fHaveSelection = FALSE;

    for(i=0; i<26; i++)
    {
        if (dwDriveMask & (1L<<i))
        {
            UINT uiDriveType;
            char *lpszDesc;
            char *s;
            int index;

            sprintf(buf, "%c:\\", i+'A');
            uiDriveType = GetDriveType(buf);

            switch(uiDriveType)
            {
            case 1:                    continue;    // no root directory!?
            case DRIVE_CDROM:        continue;    // How do you capture to a CD-ROM?
            case DRIVE_REMOVABLE:    lpszDesc = "Removable disk";    break;
            case DRIVE_FIXED:        lpszDesc = "Hard disk";            break;
            case DRIVE_REMOTE:        lpszDesc = "Network drive";        break;
            case DRIVE_RAMDISK:        lpszDesc = "Ramdisk";            break;
            default:                lpszDesc = "";                    break;
            }

            if (uiDriveType==DRIVE_FIXED && GetVolumeInformation(buf, szVolName, sizeof szVolName, NULL, NULL, NULL, NULL, 0))
                sprintf(buf, "%c: %s [%s]", i+'A', lpszDesc, szVolName);
            else
                sprintf(buf, "%c: %s", i+'A', lpszDesc);

            index = SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM)buf);

            if (index != CB_ERR)
            {
                SendMessage(hwndCombo, CB_SETITEMDATA, (WPARAM)index, i);
                if (!fHaveSelection && (i>=2 || !(dwDriveMask>>(i+1))))
                {
                    fHaveSelection = TRUE;
                    SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM)index, 0);
                }
            }
        }
    }
    CheckDlgButton(hDlg, IDC_BUFFERING_NONE, BST_CHECKED);
}

'Windows > Windows API' 카테고리의 다른 글

Message Cracker Wizard  (0) 2013.10.01
Message Cracker  (0) 2013.10.01
TRANSPARENT BACKGROUND  (0) 2013.10.01
ClientToScreen  (0) 2013.10.01
File list  (0) 2013.10.01