Hallo zusammen,
ich verstehe hier was nicht und komme nicht weiter. Hier wird ja die
Funktion getAppDirBaseName definiert. In ihr wird die Funktion
GetModuleHandleEx aufgerufen, die als Parameter wiederum
getAppDirBaseName bekommt. Als Variable ist getAppDirBaseName nirgends
definiert, auch global nicht. So sieht es aus, als ruft
getAppDirBaseName hier sich selbst auf aber ohne Parameter. Aus der
Rekursion kenne ich sich selbst aufrufende Funktionen, aber hier sieht
es ja nicht so aus und der Aufruf ist ja ohne Parameter. Versteht jemand
vielleicht was hier Sache ist?
1 | int getAppDirBaseName(LPTSTR lpBaseName, DWORD nSize)
|
2 | {
|
3 |
|
4 | HANDLE hProcess;
|
5 | HMODULE hModule;
|
6 | char * lastSlash;
|
7 | BOOL bHandle;
|
8 |
|
9 | //let's get the process of this code
|
10 | hProcess = GetCurrentProcess();
|
11 |
|
12 | bHandle= GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,(LPCSTR) getAppDirBaseName,&hModule);
|
13 |
|
14 | if(hModule != NULL)
|
15 | {
|
16 | if(!GetModuleFileNameEx(hProcess, hModule, lpBaseName, nSize))
|
17 | {
|
18 | return(1);
|
19 | }
|
20 | lastSlash = strrchr(lpBaseName, '\\');
|
21 | if(lastSlash == NULL)
|
22 | {
|
23 | return(1);
|
24 | }
|
25 | *(lastSlash+1) = '\0';
|
26 |
|
27 | return(0);
|
28 | }
|
29 | return(1);
|
30 | }
|