结构看起来像这样
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId;
DWORD dwThreadId;
} PROCESS_INFORMATION, *LPPROCESS_INFORMATION;
struct PLAYER
{
/* 0x0/0 */ struct PROCESS_INFORMATION *ProcessInformation;
/* 0x4/4 */ unsigned long dword4;
/* 0x8/8 */ unsigned long dword8;
/* 0xC/12 */ unsigned long dwordC;
//... Lots of fields here
}
以下是TerminateProcess
BOOL WINAPI TerminateProcess(
_In_ HANDLE hProcess,
_In_ UINT uExitCode
);
我尝试了下面的所有3个并且失败了。
unsigned int v102; //exit code.
struct PLAYER *player; // eax@9
TerminateProcess(player->ProcessInformation->hProcess, v102);
TerminateProcess(player->ProcessInformation.hProcess, v102);
TerminateProcess(*(player->ProcessInformation)->hProcess, v102);
箭头->
适用于PLAYER struct pointer
的其他成员,但如果struct
PLAYER中的成员是指向另一个结构的指针,那么我会遇到编译器问题。
以上所有3都给我编译问题。
也许我必须在*LPPROCESS_INFORMATION
内使用struct PLAYER
,或者我必须使用struct _PROCESS_INFORMATION *
因为我真的讨厌使用typedef
&#39>
(是的,我刚开始使用C一周前,我通常用Java / C#/ VB.NET编写代码,所以这对我来说都是新手。)
编辑:似乎我发现了问题我使用了一个愚蠢的typedef
难怪我遇到了这么多问题。那些typedef消除了一种类型的用途,在这种情况下是一种struct
所以我的结构非常糟糕......
修复是替换
/* 0x0/0 */ struct PROCESS_INFORMATION *ProcessInformation;
与
/* 0x0/0 */ struct _PROCESS_INFORMATION *ProcessInformation;
现在我可以不停地使用美化箭头
player->ProcessInformation->hProcess
这是对的吗?
答案 0 :(得分:0)
player->ProcessInformation->hProcess
是对的。祝你好运!