Share via


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 関数