Files
Viper_VRTE/w32/win32sync.vp
T
TermiNexus e71daeea0e docs(includes): R11 注释英文化——75 个文件的中文注释改写为英文短注释
按规范「注释只讲解作用,不掺杂历史原因,尽量英文」:把 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 顺序回归通过。
2026-10-05 16:18:44 +08:00

75 lines
4.4 KiB
Plaintext

import t
from stdint import *
from w32.win32base import *
class CRITICAL_SECTION:
DebugInfo: VOIDPTR
LockCount: LONG
RecursionCount: LONG
OwningThread: HANDLE
LockSemaphore: HANDLE
SpinCount: QWORD
extern def InitializeCriticalSection(lpCriticalSection: CRITICAL_SECTION*)
extern def EnterCriticalSection(lpCriticalSection: CRITICAL_SECTION*)
extern def LeaveCriticalSection(lpCriticalSection: CRITICAL_SECTION*)
extern def DeleteCriticalSection(lpCriticalSection: CRITICAL_SECTION*)
extern def TryEnterCriticalSection(lpCriticalSection: CRITICAL_SECTION*) -> BOOL
extern def SetCriticalSectionSpinCount(lpCriticalSection: CRITICAL_SECTION*, dwSpinCount: ULONG) -> ULONG
extern def InitializeCriticalSectionAndSpinCount(lpCriticalSection: CRITICAL_SECTION*, dwSpinCount: ULONG) -> BOOL
extern def CreateMutexA(lpMutexAttributes: SECURITY_ATTRIBUTES*, bInitialOwner: BOOL, lpName: LPCSTR) -> HANDLE
extern def CreateMutexW(lpMutexAttributes: SECURITY_ATTRIBUTES*, bInitialOwner: BOOL, lpName: LPCWSTR) -> HANDLE
extern def OpenMutexA(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCSTR) -> HANDLE
extern def OpenMutexW(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCWSTR) -> HANDLE
extern def ReleaseMutex(hMutex: HANDLE) -> BOOL
extern def CreateEventA(lpEventAttributes: SECURITY_ATTRIBUTES*, bManualReset: BOOL, bInitialState: BOOL, lpName: LPCSTR) -> HANDLE
extern def CreateEventW(lpEventAttributes: SECURITY_ATTRIBUTES*, bManualReset: BOOL, bInitialState: BOOL, lpName: LPCWSTR) -> HANDLE
extern def OpenEventA(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCSTR) -> HANDLE
extern def OpenEventW(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCWSTR) -> HANDLE
extern def SetEvent(hEvent: HANDLE) -> BOOL
extern def ResetEvent(hEvent: HANDLE) -> BOOL
extern def PulseEvent(hEvent: HANDLE) -> BOOL
extern def CreateSemaphoreA(lpSemaphoreAttributes: SECURITY_ATTRIBUTES*, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR) -> HANDLE
extern def CreateSemaphoreW(lpSemaphoreAttributes: SECURITY_ATTRIBUTES*, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCWSTR) -> HANDLE
extern def OpenSemaphoreA(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCSTR) -> HANDLE
extern def OpenSemaphoreW(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCWSTR) -> HANDLE
extern def ReleaseSemaphore(hSemaphore: HANDLE, lReleaseCount: LONG, lpPreviousCount: LONG*) -> BOOL
extern def WaitForSingleObject(hHandle: HANDLE, dwMilliseconds: ULONG) -> ULONG
extern def WaitForSingleObjectEx(hHandle: HANDLE, dwMilliseconds: ULONG, bAlertable: BOOL) -> ULONG
extern def WaitForMultipleObjects(nCount: ULONG, lpHandles: VOIDPTR, bWaitAll: BOOL, dwMilliseconds: ULONG) -> ULONG
extern def WaitForMultipleObjectsEx(nCount: ULONG, lpHandles: VOIDPTR, bWaitAll: BOOL, dwMilliseconds: ULONG, bAlertable: BOOL) -> ULONG
# SRWLOCK / CONDITION_VARIABLE are opaque single-PVOID structs (sizeof == 8) and the APIs take their storage address. Model them as structs.
# Declaring them as VOIDPTR would make c.Addr(self.lock) yield i8** (one level too many) and fail with a CastError.
class SRWLOCK:
Ptr: VOIDPTR
class CONDITION_VARIABLE:
Ptr: VOIDPTR
extern def InitializeSRWLock(SRWLock: SRWLOCK*) -> VOID
extern def AcquireSRWLockExclusive(SRWLock: SRWLOCK*) -> VOID
extern def AcquireSRWLockShared(SRWLock: SRWLOCK*) -> VOID
extern def ReleaseSRWLockExclusive(SRWLock: SRWLOCK*) -> VOID
extern def ReleaseSRWLockShared(SRWLock: SRWLOCK*) -> VOID
# Condition variables - Vista+
define CONDITION_VARIABLE_LOCKMODE_SHARED = 0x1
extern def InitializeConditionVariable(ConditionVariable: CONDITION_VARIABLE*) -> VOID
extern def SleepConditionVariableCS(ConditionVariable: CONDITION_VARIABLE*, CriticalSection: CRITICAL_SECTION*, dwMilliseconds: ULONG) -> BOOL
extern def SleepConditionVariableSRW(ConditionVariable: CONDITION_VARIABLE*, SRWLock: SRWLOCK*, dwMilliseconds: ULONG, Flags: ULONG) -> BOOL
extern def WakeConditionVariable(ConditionVariable: CONDITION_VARIABLE*) -> VOID
extern def WakeAllConditionVariable(ConditionVariable: CONDITION_VARIABLE*) -> VOID
# One-time initialization - Vista+
define INIT_ONCE_STATIC_INIT = 0x00000001
define INIT_ONCE_CHECK_ONLY = 0x00000002
define INIT_ONCE_ASYNC = 0x00000004
define INIT_ONCE_INIT_FAILED = 0x00000008
class INIT_ONCE:
Ptr: VOIDPTR
extern def InitOnceExecuteOnce(InitOnce: INIT_ONCE*, InitFn: VOIDPTR, Parameter: VOIDPTR, Context: VOIDPTR) -> BOOL