0
结构看起来像这样C语言结构保持一个指针到另一个结构访问该内部结构指针
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; // [email protected]
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
的
(是的,我只是用Java/C#用C仅一个星期前,我通常代码开始/VB.NET所以这是我的全部新)
编辑:看来我发现我是用一个愚蠢的typedef
难怪我有问题,这么多的问题..这些类型定义的消除对类型使用这这种情况是一个struct
所以我的结构非常搞砸..
修复是更换
/* 0x0/0 */ struct PROCESS_INFORMATION *ProcessInformation;
与
/* 0x0/0 */ struct _PROCESS_INFORMATION *ProcessInformation;
现在我可以用beautifiul箭头不停
player->ProcessInformation->hProcess
这是正确的?
TerminateProcess()的函数原型将有助于提出答案。 TerminateProcess()的参数的类型是什么? TerminateProcess()是你的代码的一部分,还是由库提供的? –
我现在发布了它,它是'windows.h'中的一个 – user3435580