CREATE_PROCESS_DEBUG_INFO 結構 (minwinbase.h)
包含調試程式可以使用的進程建立資訊。
語法
typedef struct _CREATE_PROCESS_DEBUG_INFO {
HANDLE hFile;
HANDLE hProcess;
HANDLE hThread;
LPVOID lpBaseOfImage;
DWORD dwDebugInfoFileOffset;
DWORD nDebugInfoSize;
LPVOID lpThreadLocalBase;
LPTHREAD_START_ROUTINE lpStartAddress;
LPVOID lpImageName;
WORD fUnicode;
} CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
成員
hFile
進程的圖像檔句柄。 如果這個成員是 NULL,則句柄無效。 否則,調試程式可以使用 成員來讀取和寫入映像檔。
當調試程式完成此檔案時,應該使用 CloseHandle 函式關閉句柄。
hProcess
進程的句柄。 如果這個成員是 NULL,則句柄無效。 否則,調試程式可以使用 成員來讀取和寫入進程的記憶體。
hThread
hProcess成員所識別之進程之初始線程的句柄。 如果 hThread 參數為 NULL,則句柄無效。 否則,調試程式具有 線程的THREAD_GET_CONTEXT、 THREAD_SET_CONTEXT和 THREAD_SUSPEND_RESUME 存取權,讓調試程式能夠讀取和寫入線程緩存器,以及控制線程的執行。
lpBaseOfImage
進程執行之可執行檔映像的基位址。
dwDebugInfoFileOffset
hFile 成員所識別檔案中偵錯資訊的位移。
nDebugInfoSize
檔案中偵錯資訊的大小,以位元組為單位。 如果此值為零,則沒有偵錯資訊。
lpThreadLocalBase
數據區塊的指標。 在這個區塊的位移0x2C是另一個指標,稱為 ThreadLocalStoragePointer
,指向每個模組線程本機記憶體區塊的陣列。 這可讓調試程式使用編譯程式所使用的相同演算法,存取所偵錯進程線程中的每個線程數據。
lpStartAddress
線程起始位址的指標。 這個值可能只是線程起始位址的近似值,因為任何具有適當存取線程的應用程式都可以使用 SetThreadContext 函式來變更線程的內容。
lpImageName
與 hFile 成員相關聯的檔名指標。 此參數可以是 NULL,或者它可能包含正在偵錯之進程的地址空間中的字串指標位址。 該位址接著可以是 NULL 或指向實際檔名。 如果 fUnicode 是非零值,則名稱字串為 Unicode;否則為 ANSI。
此成員完全是選擇性的。 調試程式必須準備好處理 lpImageName 為 NULL 或 *lpImageName (正在偵錯的進程地址空間中,) 為 NULL 的情況。 具體而言,系統不會提供建立進程事件的映像名稱,而且可能不會傳遞第一個 DLL 事件的映像名稱。 如果偵錯事件源自 DebugActiveProcess 函式的呼叫,系統也不會提供這項資訊。
fUnicode
值,指出 lpImageName 成員指定的檔名是否為 Unicode 或 ANSI。 非零值表示 Unicode;零表示 ANSI。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | minwinbase.h (包含 Windows.h) |