EnumDeviceDrivers 関数 (psapi.h)

システム内の各デバイス ドライバーの読み込みアドレスを取得します。

構文

BOOL EnumDeviceDrivers(
  [out] LPVOID  *lpImageBase,
  [in]  DWORD   cb,
  [out] LPDWORD lpcbNeeded
);

パラメーター

[out] lpImageBase

デバイス ドライバーの読み込みアドレスの一覧を受け取る配列。

[in] cb

lpImageBase 配列のサイズ (バイト単位)。 配列が読み込みアドレスを格納するのに十分な大きさでない場合、 lpcbNeeded パラメーターは配列の必要なサイズを受け取ります。

[out] lpcbNeeded

lpImageBase 配列で返されるバイト数。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

EnumDeviceDrivers の呼び出しによって列挙されたデバイス ドライバーの数を確認するには、結果の値を lpcbNeeded パラメーターで でsizeof(LPVOID)除算します。

Windows 7 および Windows Server 2008 R2 以降、Psapi.h は PSAPI 関数のバージョン番号を確立します。 PSAPI バージョン番号は、関数の呼び出しに使用される名前と、プログラムが読み込む必要があるライブラリに影響します。

PSAPI_VERSIONが 2 以上の場合、この関数は Psapi.h の K32EnumDeviceDrivers として定義され、Kernel32.lib および Kernel32.dll でエクスポートされます。 PSAPI_VERSION が 1 の場合、この関数は Psapi.h で EnumDeviceDrivers として定義され、Psapi.lib でエクスポートされ、 K32EnumDeviceDrivers を呼び出すラッパーとして Psapi.dll されます。

以前のバージョンの Windows および Windows 7 以降のバージョンで実行する必要があるプログラムは、常に EnumDeviceDrivers としてこの関数を呼び出す必要があります。 シンボルを正しく解決するには、PSapi.lib を TARGETLIBS マクロに追加し、-DPSAPI_VERSION=1 でプログラムをコンパイルします。 実行時の動的リンクを使用するには、Psapi.dll を読み込みます。

バージョン 24H2 Windows 11以降、EnumDeviceDrivers は有効な ImageBase 値を返すために SeDebugPrivilege を必要とします。 呼び出し元がこの特権を有効にしていない場合でも、関数は成功しますが、返される lpImageBase 配列には、すべて NULL であるアドレスが含まれます。

例

例については、「 システム内のすべてのデバイス ドライバーの列挙」を参照してください。

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー psapi.h
Library Windows 7 および Windows Server 2008 R2 の Kernel32.lib。Windows 7 および Windows Server 2008 R2 の Psapi.lib (PSAPI_VERSION=1 の場合)。Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP の Psapi.lib
[DLL] Windows 7 および Windows Server 2008 R2 で Kernel32.dll。Windows 7 および Windows Server 2008 R2 で Psapi.dll (PSAPI_VERSION=1 の場合)。Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP の Psapi.dll

こちらもご覧ください

デバイス ドライバー情報

GetDeviceDriverBaseName

GetDeviceDriverFileName

PSAPI 関数