
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;
}
