プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

デバイスドライバの列挙

2007年10月05日 08時32分11秒 | パフォーマンス関連

デバイスドライバを列挙するにはEnumDeviceDrivers()関数を使います。(戻る)

プロトタイプ宣言

BOOL EnumDeviceDrivers(
  LPVOID *lpImageBase,  // ロードアドレスの配列
  DWORD cb,             // ロードアドレスの配列サイズ
  LPDWORD lpcbNeeded    // 返されたバイト数
);

DWORD GetDeviceDriverBaseName(
  LPVOID ImageBase,  // ロードアドレス
  LPTSTR lpBaseName, // バッファ領域
  DWORD nSize        // バッファ領域のサイズ
);

DWORD GetDeviceDriverFileName(
  LPVOID ImageBase,  // ロードアドレス
  LPTSTR lpFilename, // バッファ領域
  DWORD nSize        // バッファ領域のサイズ
);

サンプル

#include <stdio.h>
#include <windows.h>
#include <psapi.h>      // Psapi.Lib

// メイン関数
int main( void )
{
    LPVOID   Address[ 1024 ];
    TCHAR szFileName[ 1024 ];
    TCHAR szBaseName[ 1024 ];
    DWORD dwSize;
    DWORD dwMax;
    DWORD dwNow;
    
    // デバイスドライバのロードアドレスを取得
    EnumDeviceDrivers( Address, sizeof(Address), &dwSize );
    // 取得した数を求める
    dwMax = (dwSize / sizeof(LPVOID));
    // デバイスドライバの一覧表示
    for ( dwNow = 0 ; dwNow < dwMax ; dwNow++ ){
        GetDeviceDriverBaseName( Address[dwNow], szBaseName, sizeof(szBaseName) );
        GetDeviceDriverFileName( Address[dwNow], szFileName, sizeof(szFileName) );
        printf( "%3d: %-30s %s\n", (dwNow + 1), szBaseName, szFileName );
    }
    return 0;
}
  • ヘッダファイルとしてpsapi.hをインクルードして下さい。
  • インポートライブラリとしてPsapi.Libをリンクして下さい。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« スレッド情報の一覧 | トップ | プロセスIDの列挙 »
最新の画像もっと見る

コメントを投稿

パフォーマンス関連」カテゴリの最新記事