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;
}
Ejemplo n.º 3
0
BOOL CToolhelpHandler::ModuleFirst(HANDLE hSnapshot, PMODULEENTRY32 pme) const
{
	return m_pfnModule32First(hSnapshot, pme);
}