
декабря 16, 2009 16:58 by
cya-st
Сейчас я вам покажу как с помощью Windows API получить типа носителя и/или его серийный номер. Использоваться это может в системе контроля например, или в средствах защиты ПЗ использующих привязку к железу.
Нам понадобится всего 2 API - функции:
- GetDriveType - определяет и возвращает тип носителя;
- GetVolumeInformation - определяет информацию о носителе, среди которой содержится серийный номер.
Рассмотрим описание этих функций для С++. Первой будет функция GetDriveType, она очень простая и использует всего один параметр - указатель на том. Например "c:\","a:\" и т.д. Функция возвращает одно из следующих значений:
- DRIVE_UNKNOWN - 0 : диск неопределен/не существует
- DRIVE_NO_ROOT_DIR - 1 : неверный путь/ путь не указывает на том
- DRIVE_REMOVABLE - 2 : тип устройства определяется как съемный (дискета, флешка и т.д.)
- DRIVE_FIXED - 3 : тип устройства - фиксированный диск (жесткий диск)
- DRIVE_REMOTE - 4 : тип устройства - удаленный(сетевой) диск
- DRIVE_CDROM - 5 : это устройство CD-ROM
- DRIVE_RAMDISK - 6 : виртуальный диск, созданный в оперативной памяти
1: UINT WINAPI GetDriveType( LPCTSTR lpRootPathName //путь к диску );
Замечание: Если в качестве параметра указать NULL, то тип устройства будет определяться для текущего диска (с которого была запущена программа).
А теперь GetVolumeInformation. Тоже достаточно простая функция, однако использует параметров значительно больше.
1: BOOL WINAPI GetVolumeInformation(LPCTSTR lpRootPathName, //путь к сетевому или локальному // тому (пример: "\\MyServer\MyShare\" или "C:\". LPTSTR lpVolumeNameBuffer, //буфер - в котором будет храниться // имя тома DWORD nVolumeNameSize, //размер буфера LPDWORD lpVolumeSerialNumber, //серийный номер тома LPDWORD lpMaximumComponentLength, //размер тома LPDWORD lpFileSystemFlags, //тип файловой системы LPTSTR lpFileSystemNameBuffer, //название файловой системы DWORD nFileSystemNameSize //размер буфера под название ФС );
Замечание: Если в качестве первого параметра указать NULL, то функция будет выполняется для текущего диска (с которого была запущена программа).
На этом все.
Надеюсь эта статья будет вам полезна.
da8b2288-dea4-4581-a0cc-5ed1856ed428|1|3.0