按规范「注释只讲解作用,不掺杂历史原因,尽量英文」:把 includes 下 75 个 .vp 的中文 # 注释与三引号 docstring 改写为英文,每个注释块压到 2 行以内。 保留要点:作用、约束、危险警告(不得/必须/注意)、ABI 与类型约定(如 BYTEPTR | t.CPtr = i8** 的跨模块坍缩坑)、位宽/长度约定、fail-fast 要求、内存与句柄所有权。 未动:文件头注释(规范豁免,仍是中文)、运行时中文字符串常量(printf / fatal_error / MlirFail 等用户可见消息,属代码字面量)。 验证:独立脚本比对 HEAD 与工作区的代码骨架(剥离 # 注释与三引号 docstring 后的非空行)——75 个文件逐字节一致;行尾 CRLF/LF 未被改动;全文剩余中文仅 547 行头注释、0 条行尾注释。bootstrap 三重重编 SUCCESS;全量 77/77 顺序回归通过。
69 lines
3.1 KiB
Plaintext
69 lines
3.1 KiB
Plaintext
import t
|
|
from stdint import *
|
|
from w32.win32base import *
|
|
|
|
define MEM_COMMIT = 0x00001000
|
|
define MEM_RESERVE = 0x00002000
|
|
define MEM_DECOMMIT = 0x00004000
|
|
define MEM_RELEASE = 0x00008000
|
|
define MEM_FREE = 0x00010000
|
|
define MEM_RESET = 0x00080000
|
|
define MEM_TOP_DOWN = 0x00100000
|
|
define MEM_WRITE_WATCH = 0x00200000
|
|
define MEM_PHYSICAL = 0x00400000
|
|
define MEM_LARGE_PAGES = 0x20000000
|
|
|
|
define PAGE_NOACCESS = 0x01
|
|
define PAGE_READONLY = 0x02
|
|
define PAGE_READWRITE = 0x04
|
|
define PAGE_WRITECOPY = 0x08
|
|
define PAGE_EXECUTE = 0x10
|
|
define PAGE_EXECUTE_READ = 0x20
|
|
define PAGE_EXECUTE_READWRITE = 0x40
|
|
define PAGE_EXECUTE_WRITECOPY = 0x80
|
|
define PAGE_GUARD = 0x100
|
|
define PAGE_NOCACHE = 0x200
|
|
define PAGE_WRITECOMBINE = 0x400
|
|
|
|
define HEAP_NO_SERIALIZE = 0x00000001
|
|
define HEAP_GROWABLE = 0x00000002
|
|
define HEAP_GENERATE_EXCEPTIONS = 0x00000004
|
|
define HEAP_ZERO_MEMORY = 0x00000008
|
|
define HEAP_REALLOC_IN_PLACE_ONLY = 0x00000010
|
|
|
|
class MEMORY_BASIC_INFORMATION():
|
|
BaseAddress: VOIDPTR
|
|
AllocationBase: VOIDPTR
|
|
AllocationProtect: DWORD
|
|
RegionSize: sizet
|
|
State: DWORD
|
|
Protect: DWORD
|
|
Type: DWORD
|
|
|
|
extern def VirtualAlloc(lpAddress: VOIDPTR, dwSize: sizet, flAllocationType: ULONG, flProtect: ULONG) -> VOIDPTR
|
|
extern def VirtualFree(lpAddress: VOIDPTR, dwSize: sizet, dwFreeType: ULONG) -> BOOL
|
|
extern def VirtualProtect(lpAddress: VOIDPTR, dwSize: sizet, flNewProtect: ULONG, lpflOldProtect: ULONG*) -> BOOL
|
|
extern def VirtualQuery(lpAddress: t.CConst | VOIDPTR, lpBuffer: MEMORY_BASIC_INFORMATION*, dwLength: sizet) -> sizet
|
|
extern def VirtualLock(lpAddress: VOIDPTR, dwSize: sizet) -> BOOL
|
|
extern def VirtualUnlock(lpAddress: VOIDPTR, dwSize: sizet) -> BOOL
|
|
extern def GetProcessHeap() -> HANDLE
|
|
extern def HeapCreate(flOptions: ULONG, dwInitialSize: sizet, dwMaximumSize: sizet) -> HANDLE
|
|
extern def HeapDestroy(hHeap: HANDLE) -> BOOL
|
|
extern def HeapAlloc(hHeap: HANDLE, dwFlags: ULONG, dwBytes: sizet) -> VOIDPTR
|
|
extern def HeapReAlloc(hHeap: HANDLE, dwFlags: ULONG, lpMem: VOIDPTR, dwBytes: sizet) -> VOIDPTR
|
|
extern def HeapFree(hHeap: HANDLE, dwFlags: ULONG, lpMem: VOIDPTR) -> BOOL
|
|
extern def HeapSize(hHeap: HANDLE, dwFlags: ULONG, lpMem: t.CConst | VOIDPTR) -> sizet
|
|
extern def HeapValidate(hHeap: HANDLE, dwFlags: ULONG, lpMem: t.CConst | VOIDPTR) -> BOOL
|
|
extern def HeapCompact(hHeap: HANDLE, dwFlags: ULONG) -> sizet
|
|
extern def GlobalAlloc(uFlags: UINT, dwBytes: sizet) -> VOIDPTR
|
|
extern def GlobalFree(hMem: VOIDPTR) -> VOIDPTR
|
|
extern def GlobalLock(hMem: VOIDPTR) -> VOIDPTR
|
|
extern def GlobalUnlock(hMem: VOIDPTR) -> BOOL
|
|
extern def GlobalSize(hMem: VOIDPTR) -> sizet
|
|
extern def LocalAlloc(uFlags: UINT, dwBytes: sizet) -> VOIDPTR
|
|
extern def LocalFree(hMem: VOIDPTR) -> VOIDPTR
|
|
|
|
# Read memory (memoryapi.h / kernel32.dll): BOOL ReadProcessMemory(HANDLE, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead).
|
|
# Its signature matches dbghelp's PREAD_PROCESS_MEMORY_ROUTINE64 (the StackWalk64 callback slot); returns 0 on failure (see GetLastError).
|
|
extern def ReadProcessMemory(hProcess: HANDLE, lpBaseAddress: t.CConst | VOIDPTR, lpBuffer: VOIDPTR, nSize: sizet, lpNumberOfBytesRead: sizet*) -> BOOL
|