Привязка программы к "железу"
GetDriveType - использует всего один параметр-указатель на том.Например "с:","а:" и т.д. Функция возвращает одно из следующих значений:
Drive_UNKNOWN - 0: диск не определен\не существует
DRIVE_NO_ROOT_DIR-1 :неверный путь\путь не указывает на том
DRIVE_REMOVABLE-2: тип устройства определяется как съемный(Flash,FDD)
DRIVE_FIXED-3: тип устройства фиксированный диск(HDD)
Drive_REMOTE-4:удаленный
drive_cdrom-5: тип устройства cd-rom
drive_ramdisk-6: виртуальный диск
ЗАМЕЧАНИЕ:
Если в качестве параметра указать nil то тип устройства будет определяться для текущего диска(с которого была запущена программа)
function GetDriveType (lpRootPathName:PChar //путь к диску):UINT;stdcall;
function GetVolumeInformation(lpRootPathName:PChar;//путь к сетевому или локальному тому(например "MyServerMyShare" или "C:")
lpVolumeNameBuffer:PChar;//буфер в котором будет храниться имя тома
nVolumeNameSize:DWORD;//размер буфера
lpVolumeSerialNumber:PDWORD;//серийный номер тома
var lpMaximumComponentLength,lpFileSystemFlags:DWORD;//размер тома и тип системы файловой системы
lpFileSysytemNameBuffer:PChar;//название файловой системы
nFileSystemNameSize:DWORD;//буфер под названием ФС):BOOL;stdcall;
ЗАМЕЧАНИЕ:
Если в качестве первого параметра указать для С\С++ -NULL,а для Delphi -nil то функция будет выполняться для текущего диска(с которого была запущена программа)
{Delphi}
program Project1;
{$APPTYPE CONSOLE} uses
SysUtils,windows;
var SerialNum,dtyp:Dword;
a,b:DWORD;
Buffer,disk: array [0..255] of char;
begin
dtyp:=GetDriveType(nil);
if dtyp = DRIVE_REMOVABLE{если надо привязать программу к HDD,то заменить DRIVE_REMOVABLE на DRIVE_FIXED} then writeln ('Disk(type):Yes') else writeln('Disk(type):No');
GetVolumeInformation(nil,Buffer,sizeof(Buffer),@SerialNum,a,b,nil,0);
if SerialNum = {вставить серийный номер диска} then writeln ('SN:Yes') else writeln('SN:No');
readln;
end.
Узнать серийный номер диска
Delphi
GetVolumeInformation(nil,Buffer,sizeof(Buffer),@SerialNum,a,b,nil,0); writeln('SN drive:',SerialNum); readln; ================================================================================================================== __________________________________________________ |Поле\ФС | FAT | FAT32 | NTFS | |Метка тома | 0x2B | 0x47 | ? | |Файловая система | 0x36 | 0x52 | 0x3 | |Серийный номер | 0x27 | 0x43 | 0x48 | |__________________________________________________ =================================================================================================================== В приведенной таблице представлены основные файловые системы и соответствующие для них смещения.(по этим смещениям находиться Serial Number )
|