HMODULE CXTPSkinManagerModuleList::CToolHelpModuleEnumerator::GetFirstModule() { if (m_pfnCreateToolhelp32Snapshot == NULL || m_pfnModule32First == NULL || m_pfnModule32Next == NULL) { return NULL; } m_hSnapshot = m_pfnCreateToolhelp32Snapshot(TH32CS_SNAPMODULE, m_dwProcessId); if (m_hSnapshot == INVALID_HANDLE_VALUE) return NULL; if (m_pfnModule32First(m_hSnapshot, &m_me)) { return m_me.hModule; } return NULL; }
BOOL CXTPSkinManagerModuleList::CToolHelpModuleEnumerator::GetModuleInformation(HMODULE hModule, XTP_MODULEINFO* lpmodinfo) { if (m_pfnCreateToolhelp32Snapshot == NULL || m_pfnModule32First == NULL || m_pfnModule32Next == NULL) { return FALSE; } MODULEENTRY32 me; ZeroMemory(&me, sizeof(MODULEENTRY32)); me.dwSize = sizeof(MODULEENTRY32); HANDLE hSnapshot = m_pfnCreateToolhelp32Snapshot(TH32CS_SNAPMODULE, m_dwProcessId); if (hSnapshot == INVALID_HANDLE_VALUE) return FALSE; if (!m_pfnModule32First(hSnapshot, &me)) return FALSE; do { if (me.hModule == hModule) { lpmodinfo->lpBaseOfDll = me.modBaseAddr; lpmodinfo->EntryPoint = 0; lpmodinfo->SizeOfImage = me.modBaseSize; CloseHandle(hSnapshot); return TRUE; } } while (m_pfnModule32Next(hSnapshot, &me)); CloseHandle(hSnapshot); return FALSE; }
BOOL CToolhelpHandler::ModuleFirst(HANDLE hSnapshot, PMODULEENTRY32 pme) const { return m_pfnModule32First(hSnapshot, pme); }