Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
keywords: Detect disc type cd dvd
#DefineFunction GetMediaType(DriveLetterAndColon) ;IntControl(73, 1, 0, 0, 0) INVALID_HANDLE_VALUE = -1 OPEN_EXISTING = 3 FILE_SHARE_WRITE = 2 FILE_SHARE_READ = 1 GENERIC_READ = 2147483648 GENERIC_WRITE = 1073741824 GET_MEDIA_TYPES_EX = 2952196 ;DriveLetterAndColon should be two characters WITHOUT a trailing ;backslash, ex: "D:" ;Returns media type value ;CreateFile will probably fail on Win9x systems so this function is only intended for use on NT 4 and greater drivepath = StrCat("\\.\", DriveLetterAndColon) DaDll=StrCat(DirWindows(1),"kernel32.dll") hDrive=DllCall(DaDll,long:"CreateFileA",lpstr:drivepath,long:GENERIC_READ|GENERIC_WRITE,long:FILE_SHARE_READ|FILE_SHARE_WRITE,lpnull, long:OPEN_EXISTING, long:0, lpnull) LastErr = DllLastError() If hDrive <> INVALID_HANDLE_VALUE size = 4096 lpMediaTypes= BinaryAlloc(size) lpBytesReturned = BinaryAlloc(4) BinaryEodSet(lpMediaTypes, size) status = DllCall(DaDll,long:"DeviceIoControl",long:hDrive, long:GET_MEDIA_TYPES_EX, lpnull, long:0, lpbinary:lpMediaTypes, long:size, lpbinary:lpBytesReturned, lpnull) LastErr = DllLastError() devicetype = BinaryPeek4(lpMediaTypes, 0 ) BinaryFree(lpMediaTypes) BinaryFree(lpBytesReturned) DllCall(DaDll,long:"CloseHandle",long:hDrive) ;Clean up after outselves Return devicetype EndIf Return 0 :WBERRORHANDLER If IsDefined(hDrive) Then DllCall(DaDll,long:"CloseHandle",long:hDrive) If IsDefined(lpLock) Then BinaryFree(lpLock) If IsDefined(lpReturnedBytes) Then BinaryFree(lpReturnedBytes) Message("Error Occured on line",wberrorhandlerline) Return 0 #EndFunction ;These values need to be convered from HEX to Decimal ;FILE_DEVICE_8042_PORT = 00000027 ;FILE_DEVICE_ACPI = 00000032 ;FILE_DEVICE_BATTERY = 00000029 ;FILE_DEVICE_BEEP = 00000001 ;FILE_DEVICE_BUS_EXTENDER = 0000002a ;FILE_DEVICE_CD_ROM = 00000002 ;FILE_DEVICE_CD_ROM_FILE_SYSTEM = 00000003 ;FILE_DEVICE_CHANGER = 00000030 ;FILE_DEVICE_CONTROLLER = 00000004 ;FILE_DEVICE_DATALINK = 00000005 ;FILE_DEVICE_DFS = 00000006 ;FILE_DEVICE_DFS_FILE_SYSTEM = 00000035 ;FILE_DEVICE_DFS_VOLUME = 00000036 ;FILE_DEVICE_DISK = 00000007 ;FILE_DEVICE_DISK_FILE_SYSTEM = 00000008 ;FILE_DEVICE_DVD = 00000033 ;FILE_DEVICE_FILE_SYSTEM = 00000009 ;FILE_DEVICE_FIPS = 0000003a ;FILE_DEVICE_FULLSCREEN_VIDEO = 00000034 ;FILE_DEVICE_INPORT_PORT = 0000000a ;FILE_DEVICE_KEYBOARD = 0000000b ;FILE_DEVICE_KS = 0000002f ;FILE_DEVICE_KSEC = 00000039 ;FILE_DEVICE_MAILSLOT = 0000000c ;FILE_DEVICE_MASS_STORAGE = 0000002d ;FILE_DEVICE_MIDI_IN = 0000000d ;FILE_DEVICE_MIDI_OUT = 0000000e ;FILE_DEVICE_MODEM = 0000002b ;FILE_DEVICE_MOUSE = 0000000f ;FILE_DEVICE_MULTI_UNC_PROVIDER = 00000010 ;FILE_DEVICE_NAMED_PIPE = 00000011 ;FILE_DEVICE_NETWORK = 00000012 ;FILE_DEVICE_NETWORK_BROWSER = 00000013 ;FILE_DEVICE_NETWORK_FILE_SYSTEM = 00000014 ;FILE_DEVICE_NETWORK_REDIRECTOR = 00000028 ;FILE_DEVICE_NULL = 00000015 ;FILE_DEVICE_PARALLEL_PORT = 00000016 ;FILE_DEVICE_PHYSICAL_NETCARD = 00000017 ;FILE_DEVICE_PRINTER = 00000018 ;FILE_DEVICE_SCANNER = 00000019 ;FILE_DEVICE_SCREEN = 0000001c ;FILE_DEVICE_SERENUM = 00000037 ;FILE_DEVICE_SERIAL_MOUSE_PORT = 0000001a ;FILE_DEVICE_SERIAL_PORT = 0000001b ;FILE_DEVICE_SMARTCARD = 00000031 ;FILE_DEVICE_SMB = 0000002e ;FILE_DEVICE_SOUND = 0000001d ;FILE_DEVICE_STREAMS = 0000001e ;FILE_DEVICE_TAPE = 0000001f ;FILE_DEVICE_TAPE_FILE_SYSTEM = 00000020 ;FILE_DEVICE_TERMSRV = 00000038 ;FILE_DEVICE_TRANSPORT = 00000021 ;FILE_DEVICE_UNKNOWN = 00000022 ;FILE_DEVICE_VDM = 0000002c ;FILE_DEVICE_VIDEO = 00000023 ;FILE_DEVICE_VIRTUAL_DISK = 00000024 ;FILE_DEVICE_WAVE_IN = 00000025 ;FILE_DEVICE_WAVE_OUT = 00000026 ;Grab CDROM Drive letter CDROMLIST = DiskScan (8) CDROM = ItemExtract(1,CDROMLIST,@TAB) ret = GetMediaType(CDROM) Pause(CDROM,StrCat("Type = ",ret)) Exit
Article ID: W17281
File Created: 2008:02:04:11:31:38
Last Updated: 2008:02:04:11:31:38