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)

另請參閱

CREATE_THREAD_DEBUG_INFO

DEBUG_EVENT

DebugActiveProcess

LOAD_DLL_DEBUG_INFO

SetThreadContext