Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Enumerating All Device Drivers in the System

The following sample code uses the EnumDeviceDrivers function to enumerate the current device drivers in the system. It passes the load addresses retrieved from this function call to the GetDeviceDriverBaseName function to retrieve a name that can be displayed.

#include <windows.h>
#include <psapi.h>
#include <tchar.h>
#include <stdio.h>

// To ensure correct resolution of symbols, add Psapi.lib to TARGETLIBS
// and compile with -DPSAPI_VERSION=1

#define ARRAY_SIZE 1024

int main( void )
{
 LPVOID drivers[ARRAY_SIZE];
 DWORD cbNeeded;
 int cDrivers, i;

 if( EnumDeviceDrivers(drivers, sizeof(drivers), &cbNeeded) && cbNeeded < sizeof(drivers))
 { 
 TCHAR szDriver[ARRAY_SIZE];

 cDrivers = cbNeeded / sizeof(drivers[0]);

 _tprintf(TEXT("There are %d drivers:\n"), cDrivers); 
 for (i=0; i < cDrivers; i++ )
 {
 if(GetDeviceDriverBaseName(drivers[i], szDriver, sizeof(szDriver) / sizeof(szDriver[0])))
 {
 _tprintf(TEXT("%d: %s\n"), i+1, szDriver);
 }
 }
 }
 else 
 {
 _tprintf(TEXT("EnumDeviceDrivers failed; array size needed is %d\n"), cbNeeded / sizeof(LPVOID));
 return 1;
 }

return 0;
}

Feedback

Was this page helpful?

Additional resources