Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Инструментарий для выполнения лабораторных работ / Sampler_new / Samp16 / Func32
.CPP#include <windows.h>
#include <stdio.h>
#include <iostream.h>
void main()
{
HINSTANCE hLib;
hLib = LoadLibrary("krnl386.exe");
/*HMODULE hKernel = GetModuleHandle ("KERNEL");
HINSTANCE (WINAPI *LoadLibraryEx32W) (LPCSTR, DWORD, DWORD);
BOOL (WINAPI *FreeLibrary32W) (HINSTANCE);
DWORD (WINAPI *GetProcAddress32W)(HINSTANCE, LPCSTR);
DWORD (WINAPI *CallProc32W) (DWORD, DWORD, DWORD);
(FARPROC) LoadLibraryEx32W = GetProcAddress (hKernel, "LoadLibraryEx32W");
(FARPROC) FreeLibrary32W = GetProcAddress (hKernel, "FreeLibrary32W");
(FARPROC) GetProcAddress32W = GetProcAddress (hKernel, "GetProcAddress32W");
(FARPROC) CallProc32W = GetProcAddress (hKernel, "CallProc32W");
HINSTANCE ghLib = LoadLibraryEx32W ("Func32.dll", 0, 0);
DWORD MyGetFrequency = GetProcAddress32W(ghLib, "MyGetFrequency");
long freq = CallProc32W(MyGetFrequency, 0, 0);
// printf("%08X",freq);
FreeLibrary32W(ghLib);
FreeLibrary(hKernel);*/
typedef DWORD (CALLBACK* lpLoad32type)(LPCSTR, DWORD, DWORD);
typedef DWORD (CALLBACK* lpAddr32type)(DWORD, LPCSTR);
typedef DWORD (CALLBACK* lpCallProc32type)(LPVOID, DWORD, DWORD);
lpLoad32type lpLoad32 = (lpLoad32type)GetProcAddress(hLib, "LoadLibraryEx32W");
lpAddr32type lpAddr32 = (lpAddr32type)GetProcAddress(hLib, "GetProcAddress32W");
lpCallProc32type lpCallProc32 = (lpCallProc32type)GetProcAddress(hLib, "CallProc32W");
DWORD ghLib;
ghLib = (*lpLoad32)( "Func32.dll", NULL, 0 );
typedef BOOL (CALLBACK* lpQueryFreqType)(void);
lpQueryFreqType lpQueryFreq = (lpQueryFreqType)(*lpAddr32)(ghLib, "MyGetCount");
long res = (*lpCallProc32)(lpQueryFreq, 0, 0);
res = (*lpCallProc32)(lpQueryFreq, 0, 0);
cout <<res;
/*res = (*lpCallProc32)(lpQueryFreq, 0, 0);
// if (!res) printf("High-resolution performance counter is not installed on your PC!");
// printf("%08X", dwTemp);
// for(int z=0; z<100; z++) {
cout << res;
*/
FreeLibrary(hLib);
}