/** * * Enumerate all modules * * @param Nil * @return bool - Returns execution status. * @exception Nil * @see Nil * @since 1.0 */ bool Process::EnumModules() { if( !m_ahmProcess ) { return false; } HANDLE hSnapModules = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, m_stPrcEntry32.th32ProcessID ); if( hSnapModules == INVALID_HANDLE_VALUE ) { return false; } // Closes handle of opened snapshot Utils::AutoHandleMgr ahmHandleCloser( hSnapModules ); MODULEENTRY32 stmeModuleEntry32 = { 0 }; stmeModuleEntry32.dwSize = sizeof( stmeModuleEntry32 ); // First entry if( !Module32First( hSnapModules, &stmeModuleEntry32 )) { return false; } // Loop through and add items do { Module* pModule = new Module; if( !pModule ) { continue; } // Set module entry for module pModule->SetModuleEntry32( stmeModuleEntry32 ); // Add this module to module list m_lstModules.AddTail( pModule ); }while( Module32Next( hSnapModules, &stmeModuleEntry32 )); // Get next module // Return success return true; }// EnumModules