Форум программистов, компьютерный форум CyberForum.ru

GetModuleFileNameEx ошибка - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
31.07.2012, 22:14     GetModuleFileNameEx ошибка #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <windows.h>
#include <time.h>
#include "main.h"
#pragma comment(lib,"Psapi")
using namespace std;
 
//global
ULONG crc_tab[256];
 
ULONG getHash(DWORD id)
{
    PIMAGE_OPTIONAL_HEADER optionalHeader;
    PIMAGE_DOS_HEADER dosHeader;
    WCHAR lpFileName[MAX_PATH];
    DWORD simCount = sizeof(lpFileName);
    PVOID Buffer;
    HANDLE exeObj;
    HANDLE pid;
    ULONG hash;
 
    InitHashTable();
    pid = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE , id);
    GetModuleFileNameEx(pid, NULL, lpFileName, MAX_PATH);
    //QueryFullProcessImageName(pid, 0, lpFileName, &simCount);
    CloseHandle(pid);
    exeObj = CreateFile(lpFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL , NULL);
    Buffer = malloc(1024);
    ReadFile(exeObj, Buffer, 1024, &simCount, NULL);
    CloseHandle(exeObj);
    dosHeader = (PIMAGE_DOS_HEADER)Buffer;
    optionalHeader = (PIMAGE_OPTIONAL_HEADER)((UCHAR *)Buffer + dosHeader->e_lfanew + 24);
 
    if (optionalHeader == NULL)
    {
        return 0;
    }
    hash = chksum_crc32 ((UCHAR *) optionalHeader, sizeof(IMAGE_OPTIONAL_HEADER));
    free(Buffer);
    return hash;
}
 
ULONG chksum_crc32 (UCHAR *block, USHORT length)
{
   ULONG crc, i;
 
   crc = 0xFFFFFFFF;
   for (i = 0; i < length; i++)
   {
      crc = ((crc >> 8) & 0x00FFFFFF) ^ crc_tab[(crc ^ *block++) & 0xFF];
   }
   return (crc ^ 0xFFFFFFFF);
}
 
void InitHashTable ()
{
   ULONG crc, poly;
   SHORT i, j;
 
   poly = 0xEDB88320L;
   for (i = 0; i < 256; i++)
   {
      crc = i;
      for (j = 8; j > 0; j--)
      {
     if (crc & 1)
     {
        crc = (crc >> 1) ^ poly;
     }
     else
     {
        crc >>= 1;
     }
      }
      crc_tab[i] = crc;
   }
}
 
void log(char* str)
{
    SYSTEMTIME sm;
    char* buf = new char[16];
 
    GetLocalTime(&sm);
    FILE* file = fopen("dllLog.txt", "a");
    buf = itoa(sm.wYear, buf, 10);
    fwrite(buf, strlen(buf), 1, file);
    fwrite(".", 1, 1, file);
    itoa(sm.wMonth, buf, 10);
    fwrite(buf, strlen(buf), 1, file);
    fwrite(".", 1, 1, file);
    itoa(sm.wDay, buf, 10);
    fwrite(buf, strlen(buf), 1, file);
    fwrite("  ", 2, 1, file);
    itoa(sm.wHour, buf, 10);
    fwrite(buf, strlen(buf), 1, file);
    fwrite(":", 1, 1, file);
    itoa(sm.wMinute, buf, 10);
    fwrite(buf, strlen(buf), 1, file);
    fwrite(":", 1, 1, file);
    itoa(sm.wSecond, buf, 10);
    fwrite(buf, strlen(buf), 1, file);
    fwrite(" :  ", 4, 1, file);
    fwrite(str,strlen(str), 1, file);
    fclose(file);
    delete[] buf;
}
 
int main()
{
    //HINSTANCE hMyDll;
 
    DWORD id = GetCurrentProcessId();
    /*//HANDLE pid = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE , id);
    if((hMyDll = LoadLibrary(L"ProcMon")) == NULL) return 1;
    typedef void (*setuphFunc)();
    setuphFunc setup = (setuphFunc)GetProcAddress(hMyDll,"setup");
    setup();
    typedef int (*SODhFunc)();
    SODhFunc SOD = (SODhFunc)GetProcAddress(hMyDll,"SOD");
    SOD();
    typedef ULONG (*getHashFunc)(DWORD);
    getHashFunc getHash = (getHashFunc)GetProcAddress(hMyDll,"getHash");*/
    ULONG hash = getHash(id);
    log("test string\n");
    log("start\n");
    log("stop\n");
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//.h
#include <windows.h>
 
 
WINBASEAPI BOOL WINAPI QueryFullProcessImageName(
  __in     HANDLE hProcess,
  __in     DWORD dwFlags,
  __out    LPTSTR lpExeName,
  __inout  PDWORD lpdwSize
);
WINBASEAPI __out HANDLE WINAPI GetCurrentProcess(void);
WINBASEAPI HANDLE WINAPI OpenProcess(
  __in  DWORD dwDesiredAccess,
  __in  BOOL bInheritHandle,
  __in  DWORD dwProcessId
);
WINBASEAPI HANDLE WINAPI CreateFile(
  __in      LPCTSTR lpFileName,
  __in      DWORD dwDesiredAccess,
  __in      DWORD dwShareMode,
  __in_opt  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  __in      DWORD dwCreationDisposition,
  __in      DWORD dwFlagsAndAttributes,
  __in_opt  HANDLE hTemplateFile
);
WINBASEAPI BOOL WINAPI ReadFile(
  __in         HANDLE hFile,
  __out        LPVOID lpBuffer,
  __in         DWORD nNumberOfBytesToRead,
  __out_opt    LPDWORD lpNumberOfBytesRead,
  __inout_opt  LPOVERLAPPED lpOverlapped
);
WINBASEAPI PIMAGE_NT_HEADERS WINAPI ImageNtHeader(
  __in  PVOID ImageBase
);
WINBASEAPI DWORD WINAPI GetModuleFileNameEx(
  __in      HANDLE hProcess,
  __in_opt  HMODULE hModule,
  __out     LPTSTR lpFilename,
  __in      DWORD nSize
);
ULONG chksum_crc32 (UCHAR *, USHORT);
void InitHashTable ();
выдает ошибку :

1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) unsigned long __stdcall GetModuleFileNameEx(void *,struct HINSTANCE__ *,wchar_t *,unsigned long)" (__imp_?GetModuleFileNameEx@@YGKPAXPAUHINSTANCE__@@PA_WK@Z) referenced in function "unsigned long __cdecl getHash(unsigned long)" (?getHash@@YAKK@Z)

подключения #pragma comment(lib,"Psapi") не помогло
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2012, 22:14     GetModuleFileNameEx ошибка
Посмотрите здесь:

C++ Глупая ошибка, но до сих пор неисправленная ошибка: ";"

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insolent
 Аватар для insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
01.08.2012, 01:13     GetModuleFileNameEx ошибка #2
balrak, может быть #pragma comment(lib,"Psapi.lib")
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
01.08.2012, 13:31  [ТС]     GetModuleFileNameEx ошибка #3
insolent, на сколько я знаю
то нет разницы
но я проверю

Добавлено через 1 минуту
Нет
не помогло

Добавлено через 12 часов 5 минут
Всем спасибо за помощь
Проблема была в том что у меня windows 8
и на ней уже не поддерживается эта функция
на XP нормально работает
Yandex
Объявления
01.08.2012, 13:31     GetModuleFileNameEx ошибка
Ответ Создать тему
Опции темы

Текущее время: 04:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru