Вот решил выложить одну свою функцию для определения типа носителя вставленного в DVD-ROM. Из-за специфики работы дивидиромов - они не показывают тип диска если не поддерживают его. т.е. если DVD не пише DVD-R то все вставленные не пустые DVD-R диски будут показываться как DVD-ROM. Мож кому пригодиться ) Code: program Project2; uses windows; {$APPTYPE CONSOLE} const IOCTL_CDROM_GET_CONFIGURATION=$00024058; SCSI_GET_CONFIGURATION_REQUEST_TYPE_ONE=2; DiskTypeName:array[0..18] of string=( 'Invalid','NonRemovableDisk','RemovableDisk','MOErasable', 'MOWriteOnce','AS_MO','CD-ROM','CD-R', 'CD-RW','DVD-ROM','DVD-R','DVD-RAM', 'DVD-RW','DVD-RW Sequential','DVD+RW','DVD+R','DDCD-ROM', 'DDCD-R','DDCD-RW'); DiskTypeCode:array[0..18] of word= (0,1,2,3,4,5,8,9,10,16,17,18,19,20,26,27,32,33,34); type GET_CONFIGURATION_IOCTL_INPUT=packed record Feature:dword; RequestType:dword; Reserved:array[0..1] of pointer; end; GET_CONFIGURATION_HEADER=packed record DataLength:dword; Reserved:word; CurrentProfile:word; Data:char; end; PGET_CONFIGURATION_HEADER=^GET_CONFIGURATION_HEADER; function SWAP(dw:word):word;assembler; asm xchg ah,al end; function GetDiskType(Disk:char):string; var h:dword; ret:LongBool; input:GET_CONFIGURATION_IOCTL_INPUT; pConfigHeader:PGET_CONFIGURATION_HEADER; retbc:cardinal; x:integer; begin h:=CreateFile(pchar('\\.\'+Disk+':'),GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0); if h=INVALID_HANDLE_VALUE then begin result:='Error'; exit; end; ZeroMemory(@input, sizeof(GET_CONFIGURATION_IOCTL_INPUT)); input.RequestType:=SCSI_GET_CONFIGURATION_REQUEST_TYPE_ONE; input.Feature:=0; getmem(pConfigHeader,32); ret:=DeviceIoControl(h,IOCTL_CDROM_GET_CONFIGURATION,@input, sizeof(GET_CONFIGURATION_IOCTL_INPUT),pConfigHeader,32, retbc, nil); if not ret then begin result:='Error'; CloseHandle(h); exit; end; for x:=0 to 18 do if pConfigHeader^.CurrentProfile=SWAP(DiskTypeCode[x]) then begin result:=DiskTypeName[x]; break; end; freemem(pConfigHeader); CloseHandle(h); end; begin writeln(GetDiskType('I')); end.
2 _nic в то время не нашел доки по получению этих данных через IMAPI Кстати, если есть линк, кинь плиз. да и к томуже этот способ более изкоуровневый
В МСДН конечно много че запутанного ,но в принципе все есть. http://msdn.microsoft.com/en-us/library/aa364854(VS.85).aspx метод get_CurrentPhysicalMediaType