Członek SizeOfImage powodujący awarię programu

Próbuję szukać wzorców BYTE w programach, ale z jakiegoś powodu, kiedy przypisuję wartość zMINFO.SizeOfImage doModuleSize powoduje, że program, do którego wstrzyknęłam bibliotekę DLL, ulega awarii.

DWORD FindPattern(const BYTE* Pattern,SIZE_T PatternSize)
{
    DWORD ModuleBase = (DWORD)GetModuleHandle(NULL);
    DWORD ModuleSize = 0;
    MODULEINFO MINFO;
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,0,GetCurrentProcessId());

    if(hProcess)
    {
        GetModuleInformation(hProcess,GetModuleHandle(NULL),&MINFO,sizeof(MODULEINFO));
        CloseHandle(hProcess);
        ModuleSize = MINFO.SizeOfImage;
    }
    else
        return 0;

    for(int i = 0;i < ModuleSize;i++)
    {
        if(memcmp((void*)(ModuleBase + i),Pattern,PatternSize) == 0)
            return ModuleBase + i;
    }
    return 0;
}

questionAnswers(1)

yourAnswerToTheQuestion