Hem WinXP hem de Vista64 üzerinde çalışması gereken bir uygulama var. Programım, Vista'da çalışmak için değil, XP'de QueryFullProcessImageName() uygulamasını gerektirir.Çalışma Zamanı Denetimi Hatası # 0 yükleniyor QueryFullProcessImageName from kernel32.dll
Aynı yürütülebilir dosyanın hem WinXP hem de Vista'da çalışabilmesi için QueryFullProcessImageName() (statik olarak bağlamak yerine) kernel32.dll aracılığıyla yüklemeyi denerim. Bunu yükleyen kod şudur:
//only gets called on vista
bool LoadQueryFullProcessImageName()
{
HMODULE hDLL = LoadLibrary("kernel32.dll");
if (!hDLL) return(0);
//Now use pointer to get access to functions defined in DLL
fpQueryFullProcessImageName = (LPQueryFullProcessImageName)GetProcAddress(hDLL, "QueryFullProcessImageNameA"); //ANSI version
if (!fpQueryFullProcessImageName)
return false;
return true;
}
typedef Maalesef
typedef WINBASEAPI
BOOL (*LPQueryFullProcessImageName)(
__in HANDLE hProcess,
__in DWORD dwFlags,
__out_ecount_part(*lpdwSize, *lpdwSize) LPSTR lpExeName,
__inout PDWORD lpdwSize
);
olduğunu, işlev duruma gelmiş göstericiler zaman Vista'da bir çalışma zamanı hatası alıyorum:
çalışma zamanı kontrol Hatası # 0 - ESP değeri bir işlev çağrısında düzgün şekilde kaydedilmedi. Bu genellikle, bir arama kuralıyla bildirilen bir işlevi farklı bir çağrı kuralıyla bildirilen bir işlev işaretçisi ile çağırmanın bir sonucudur.
Yazım hatası, .h dosyasından doğrudan doğruya bu yüzden neden bozuk olduğunu anlayamıyorum. Herhangi bir yardım? Tonlarca çeşit denedim ama şans yok.