Описание функции


DriveGetNumber

Получить номер диска

DriveGetNumber(DriveLetter$)

Параметры

DriveLetter$ Диск, например C:

Возвращаемое значение

Успех:Возвращает номер диска, например 0:1, где 0 - физический диск, 1 - логический диск

Примечания

Используйте GetDrives().
Вывод используется текстовый для вставки в ListIconGadget(), но это можно изменить.

Пример


EnableExplicit

;Получение номера диска и раздела, из буквы раздела
Procedure.s DriveGetNumber(DriveLetter$)
    Protected DriveInfo.STORAGE_DEVICE_NUMBER, Nul , Ret$="?:?", hDevice
    hDevice = CreateFile_("\\.\" + DriveLetter$, 0, 0, 0, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, #NUL)
    If hDevice <> #INVALID_HANDLE_VALUE
        If DeviceIoControl_(hDevice,#IOCTL_STORAGE_GET_DEVICE_NUMBER, 0, 0, DriveInfo, SizeOf(STORAGE_DEVICE_NUMBER), @Nul, #NUL)
            Ret$=Str(DriveInfo\DeviceNumber) + ":" + Str(DriveInfo\PartitionNumber)
        EndIf
        CloseHandle_(hDevice)
    EndIf
    ProcedureReturn Ret$
EndProcedure

Debug DriveGetNumber("C:")