EnumDeviceDriversを利用するとWindowsに読み込まれているすべてのデバイスドライバーへのアドレスを取得できる。このアドレスに対してGetDeviceDriverFileNameを利用すると読み込まれているデバイスドライバーのファイル名を知ることができる。
#include "atlstr.h" #include <psapi.h> #pragma comment(lib,"psapi.lib") //Windows NT 4.0以降対応 bool Test(void) { int i; int nSize; LPVOID* ppDrivers; DWORD dwNeeded; BOOL bRet; TCHAR pszDriverName[2048]; CAtlString strMessage; dwNeeded = 0; bRet = ::EnumDeviceDrivers(NULL,0,&dwNeeded); if(dwNeeded == 0) return false; ppDrivers = (LPVOID*)new BYTE[dwNeeded]; if(ppDrivers == NULL) return false; bRet = ::EnumDeviceDrivers(ppDrivers,dwNeeded,&dwNeeded); nSize = dwNeeded / sizeof(LPVOID); for(i = 0; i < nSize; i++) { bRet = ::GetDeviceDriverFileName(ppDrivers[i],pszDriverName,2048); if(bRet == FALSE) continue; strMessage += pszDriverName; strMessage += _T("\n"); } delete ppDrivers; ::MessageBox(NULL,strMessage,_T(""),MB_OK); return true; }