; Autor: Michael 'neotoma' Taupitz EnableExplicit #MAX_DRIVERS = 1024 Prototype.i EnumDeviceDrivers( lpImageBase.i, cb.i, lpcbNeeded.i) Prototype.i GetDeviceDriverBaseName( ImageBase.i, lpBaseName.i,nSize.i) Prototype.i GetDeviceDriverFileName( ImageBase.i, lpFileName.i,nSize.i) Define EnumDeviceDrivers.EnumDeviceDrivers Define GetDeviceDriverBaseName.GetDeviceDriverBaseName Define GetDeviceDriverFileName.GetDeviceDriverFileName Define lib_psapi Define szDriver.s{1024} Define szDriverFile.s{1024} Define cbNeeded.l Define cDrivers.l, i; Dim drivers.l(#MAX_DRIVERS) lib_psapi = OpenLibrary (#PB_Any, "psapi.dll") If lib_psapi If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) ListIconGadget(1,10,10,480,230,"Driver",200,0) AddGadgetColumn(1,1,"File",300) EnumDeviceDrivers.EnumDeviceDrivers = GetFunction(lib_psapi,"EnumDeviceDrivers") CompilerIf #PB_Compiler_Unicode GetDeviceDriverBaseName.GetDeviceDriverBaseName = GetFunction(lib_psapi,"GetDeviceDriverBaseNameW") GetDeviceDriverFileName.GetDeviceDriverFileName = GetFunction(lib_psapi,"GetDeviceDriverFileNameW") CompilerElse GetDeviceDriverBaseName.GetDeviceDriverBaseName = GetFunction(lib_psapi,"GetDeviceDriverBaseNameA") GetDeviceDriverFileName.GetDeviceDriverFileName = GetFunction(lib_psapi,"GetDeviceDriverFileNameA") CompilerEndIf If EnumDeviceDrivers(@drivers(), #MAX_DRIVERS*SizeOf(Long), @cbNeeded ) And cbNeeded < #MAX_DRIVERS*SizeOf(Long) cDrivers = cbNeeded/SizeOf(Long) For i = 0 To cDrivers-1 GetDeviceDriverBaseName( drivers(i), @szDriver , 1024/SizeOf(CHARACTER) ) GetDeviceDriverFileName( drivers(i), @szDriverFile, 1024/SizeOf(CHARACTER) ) AddGadgetItem(1,-1,szDriver+Chr(10)+szDriverFile,0,0) Next EndIf Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf EndIf