67 lines
4.0 KiB
Plaintext
67 lines
4.0 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
|
|
extern def InitializeSRWLock(SRWLock: VOIDPTR) -> VOID
|
|
extern def AcquireSRWLockExclusive(SRWLock: VOIDPTR) -> VOID
|
|
extern def AcquireSRWLockShared(SRWLock: VOIDPTR) -> VOID
|
|
extern def ReleaseSRWLockExclusive(SRWLock: VOIDPTR) -> VOID
|
|
extern def ReleaseSRWLockShared(SRWLock: VOIDPTR) -> VOID
|
|
|
|
# 条件变量 (Condition Variables) - Vista+
|
|
CONDITION_VARIABLE_LOCKMODE_SHARED: t.CDefine = 0x1
|
|
|
|
extern def InitializeConditionVariable(ConditionVariable: VOIDPTR) -> VOID
|
|
extern def SleepConditionVariableCS(ConditionVariable: VOIDPTR, CriticalSection: CRITICAL_SECTION*, dwMilliseconds: ULONG) -> BOOL
|
|
extern def SleepConditionVariableSRW(ConditionVariable: VOIDPTR, SRWLock: VOIDPTR, dwMilliseconds: ULONG, Flags: ULONG) -> BOOL
|
|
extern def WakeConditionVariable(ConditionVariable: VOIDPTR) -> VOID
|
|
extern def WakeAllConditionVariable(ConditionVariable: VOIDPTR) -> 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
|