システム内のすべてのデバイス ドライバーの列挙
次のサンプル コードでは、 EnumDeviceDrivers 関数を使用して、システム内の現在のデバイス ドライバーを列挙します。 この関数呼び出しから取得した読み込みアドレスを GetDeviceDriverBaseName 関数に渡して、表示できる名前を取得します。
#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;
}