Function Reference


_WinAPI_EnumProcessModules

Retrieves a handle and name for each module in the specified process

#include <WinAPIProc.au3>
_WinAPI_EnumProcessModules ( [$iPID = 0 [, $iFlag = 0]] )

Parameters

$iPID [optional] The PID of the process. Default (0) is the current process.
$iFlag [optional] The filter criteria. This parameter is valid only for Windows Vista or later, and can be one of the following values:
    $LIST_MODULES_32BIT
    $LIST_MODULES_64BIT
    $LIST_MODULES_ALL
    $LIST_MODULES_DEFAULT (Default)
Constants are defined in APIProcConstants.au3

Return Value

Success: The 2D array containing the following information:
    [0][0] - Number of rows in array (n)
    [0][1] - Unused
    [n][0] - Handle to the module.
    [n][1] - The path to the file that contains the module.
Failure: Sets the @error flag to non-zero.

Remarks

This function does not retrieve handles for modules that were loaded with the $LOAD_LIBRARY_AS_DATAFILE flag.
For more information, see _WinAPI_LoadLibraryEx().

Do not call _WinAPI_CloseHandle() on any of the handles returned by this function.
The information comes from a snapshot, so there are no resources to be freed.

If _WinAPI_EnumProcessModules() is called from a 32-bit application running on WOW64, it can only enumerate the modules of a 32-bit process.
If the process is a 64-bit process, this function fails and the last error code is ERROR_PARTIAL_COPY (299).

See Also

Search EnumProcessModulesEx in MSDN Library.

Example

#include <Array.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIProc.au3>
#include <WinAPISys.au3>

If (Number(_WinAPI_GetVersion()) < 6.0) And (@AutoItX64) Then
        MsgBox(($MB_ICONERROR + $MB_SYSTEMMODAL), 'Error', 'This example works from a 64-bit system only in Windows Vista or later.')
        Exit
EndIf

Local $aData = _WinAPI_EnumProcessModules()

_ArrayDisplay($aData, '_WinAPI_EnumProcessModules')