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