text: 程序環境塊是 Windows NT作業系統內部使用的資料結構，用以儲存每個程序的執行時資料。 Microsoft的MSDN文件中僅公開了PEB的少數幾個域，該結構“在未來的Windows版本中可能會修改”。PEB包含的資料結構適用於整個程序，如全域性上下文，啟動引數，程式image裝載器的資料結構，程式image的基地址，程序級互斥同步訪問物件等。PEB與kernel mode EPROCESS資料結構密切相關。也是逐程序資料結構，在客戶-伺服器執行時子系統(CSRSS)程序地址空間被管理。但是，類似於CSRSS資料結構，PEB自身並不是核心模式資料結構。它駐留在所關聯的程序的使用者態記憶體空間中。這是因為它被設計為被作業系統的使用者態的程式所使用，如NTDLL，在核心態之外執行，如程式映象的載入器與堆管理器。WinDbg中，解除安裝PEB內容的命令是!peb，命令引數是PEB在程序地址空間的地址，它實際上是透過!process命令獲取，將顯示來自於EPROCESS資料結構的資訊，其中一個域是PEB地址。PEB的內容透過系統呼叫NtCreateUserProcess()初始化。該系統呼叫也是Native API的Win32函式 CreateProcess(), CreateProcessAsUser(), CreateProcessWithTokenW(), CreateProcessWithLogonW() 的實現基礎，也是Windows NT POSIX的posix.dll中的API函式codice_1的實現基礎.對於Windows NT POSIX程序，新程序的PEB內容透過簡單直接複製父程序的PEB來初始化。NtCreateUserProcess() 這是在fork()函式內部實現。對於Win32程序，新程序的PEB的初始化主要來自核心維護的全域性變數。但幾個域的初始化來自程式映象，特別是來自PE檔案格式(PE+ 或 PE32+在64位)的IMAGE_OPTIONAL_HEADER32資料結構。
metadata: erhwenkuo/wikipedia-zhtw
metadata: 程序環境塊
metadata: https://zh.wikipedia.org/wiki?curid=6431861