fix(ast/parser): extern 无 body 形式消费本行 NewLine,修复 Phase1a-pre 7 文件扫描失败

extern def A(...) -> T(无 ': pass')解析完返回时 cur 停在 NewLine token,
模块级/类体语句循环只 _skip_nl(Nl)不跳 NewLine,下一轮把 NewLine 当
表达式解析(_parse_atom error_count++)→ parse_tokens 返回 None →
Phase1a-pre 报 7 个文件扫描失败(w32 7 个 extern 文件全挂的根因)。
This commit is contained in:
TermiNexus committed 2026-08-17 11:57:01 +08:00
1 parent a641c7c8da
commit 451e7a0391
8 files changed
+211 -205

No files matched your search

+7 -1
View File
@@ -2288,7 +2288,13 @@ def _parse_funcdef(ps: Parser | t.CPtr, is_async: t.CInt) -> AST | t.CPtr:
if is_extern_fd == 0 or _match_op(ps, TokOp.Colon):
_expect_op(ps, TokOp.Colon)
_parse_suite_into_children(ps, node)
# extern 无 ': pass' 形式(extern A(...) -> int):body 为空,仅声明
else:
# extern 无 ': pass' 形式(extern A(...) -> int):body 为空,仅声明。
# 必须消费本行 NewLine:模块级/类体语句循环只 _skip_nl(Nl),
# 残留 NewLine 会被下一轮当表达式解析(_parse_atom → error_count++)
# → parse_tokens 返回 None(TPV 编译 extern 文件报 7 个扫描失败的根因)
if _cur_type(ps) == TokenType.NewLine:
_advance(ps)
_set_pos(node, lineno, col, 0, 0)
return node
+20 -20
View File
@@ -58,23 +58,23 @@ class LARGE_INTEGER():
class ULARGE_INTEGER():
QuadPart: ULONGLONG
extern def GetLastError() -> ULONG: pass
extern def SetLastError(dwErrCode: ULONG): pass
extern def CloseHandle(hObject: HANDLE) -> BOOL: pass
extern def GetProcAddress(hModule: HANDLE, lpProcName: LPCSTR) -> VOIDPTR: pass
extern def GetModuleHandleA(lpModuleName: LPCSTR) -> HANDLE: pass
extern def GetModuleHandleW(lpModuleName: LPCWSTR) -> HANDLE: pass
extern def LoadLibraryA(lpLibFileName: LPCSTR) -> HANDLE: pass
extern def LoadLibraryW(lpLibFileName: LPCWSTR) -> HANDLE: pass
extern def FreeLibrary(hLibModule: HANDLE) -> BOOL: pass
extern def GetSystemTime(lpSystemTime: SYSTEMTIME | t.CPtr): pass
extern def GetLocalTime(lpSystemTime: SYSTEMTIME | t.CPtr): pass
extern def FileTimeToSystemTime(lpFileTime: FILETIME | t.CPtr, lpSystemTime: SYSTEMTIME | t.CPtr) -> BOOL: pass
extern def SystemTimeToFileTime(lpSystemTime: SYSTEMTIME | t.CPtr, lpFileTime: FILETIME | t.CPtr) -> BOOL: pass
extern def QueryPerformanceCounter(lpPerformanceCount: LARGE_INTEGER | t.CPtr) -> BOOL: pass
extern def QueryPerformanceFrequency(lpFrequency: LARGE_INTEGER | t.CPtr) -> BOOL: pass
extern def Sleep(dwMilliseconds: ULONG): pass
extern def SleepEx(dwMilliseconds: ULONG, bAlertable: BOOL) -> ULONG: pass
extern def GetTickCount() -> ULONG: pass
extern def GetTickCount64() -> ULONGLONG: pass
extern def GetCommandLineA() -> CHARPTR: pass
extern def GetLastError() -> ULONG
extern def SetLastError(dwErrCode: ULONG)
extern def CloseHandle(hObject: HANDLE) -> BOOL
extern def GetProcAddress(hModule: HANDLE, lpProcName: LPCSTR) -> VOIDPTR
extern def GetModuleHandleA(lpModuleName: LPCSTR) -> HANDLE
extern def GetModuleHandleW(lpModuleName: LPCWSTR) -> HANDLE
extern def LoadLibraryA(lpLibFileName: LPCSTR) -> HANDLE
extern def LoadLibraryW(lpLibFileName: LPCWSTR) -> HANDLE
extern def FreeLibrary(hLibModule: HANDLE) -> BOOL
extern def GetSystemTime(lpSystemTime: SYSTEMTIME | t.CPtr)
extern def GetLocalTime(lpSystemTime: SYSTEMTIME | t.CPtr)
extern def FileTimeToSystemTime(lpFileTime: FILETIME | t.CPtr, lpSystemTime: SYSTEMTIME | t.CPtr) -> BOOL
extern def SystemTimeToFileTime(lpSystemTime: SYSTEMTIME | t.CPtr, lpFileTime: FILETIME | t.CPtr) -> BOOL
extern def QueryPerformanceCounter(lpPerformanceCount: LARGE_INTEGER | t.CPtr) -> BOOL
extern def QueryPerformanceFrequency(lpFrequency: LARGE_INTEGER | t.CPtr) -> BOOL
extern def Sleep(dwMilliseconds: ULONG)
extern def SleepEx(dwMilliseconds: ULONG, bAlertable: BOOL) -> ULONG
extern def GetTickCount() -> ULONG
extern def GetTickCount64() -> ULONGLONG
extern def GetCommandLineA() -> CHARPTR
+31 -31
View File
@@ -78,34 +78,34 @@ class INPUT_RECORD():
EventType: WORD
Event: KEY_EVENT_RECORD
extern def SetConsoleOutputCP(codepage: UINT) -> BOOL: pass
extern def SetConsoleCP(codepage: UINT) -> BOOL: pass
extern def GetConsoleCP() -> UINT: pass
extern def GetConsoleOutputCP() -> UINT: pass
extern def GetConsoleScreenBufferInfo(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: CONSOLE_SCREEN_BUFFER_INFO | t.CPtr) -> BOOL: pass
extern def SetConsoleScreenBufferSize(hConsoleOutput: HANDLE, dwSize: COORD) -> BOOL: pass
extern def SetConsoleCursorPosition(hConsoleOutput: HANDLE, dwCursorPosition: COORD) -> BOOL: pass
extern def GetConsoleCursorInfo(hConsoleOutput: HANDLE, lpConsoleCursorInfo: CONSOLE_CURSOR_INFO | t.CPtr) -> BOOL: pass
extern def SetConsoleCursorInfo(hConsoleOutput: HANDLE, lpConsoleCursorInfo: CONSOLE_CURSOR_INFO | t.CPtr) -> BOOL: pass
extern def SetConsoleTextAttribute(hConsoleOutput: HANDLE, wAttributes: WORD) -> BOOL: pass
extern def FillConsoleOutputCharacterA(hConsoleOutput: HANDLE, cCharacter: t.CChar, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfCharsWritten: ULONG | t.CPtr) -> BOOL: pass
extern def FillConsoleOutputCharacterW(hConsoleOutput: HANDLE, cCharacter: WCHAR, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfCharsWritten: ULONG | t.CPtr) -> BOOL: pass
extern def FillConsoleOutputAttribute(hConsoleOutput: HANDLE, wAttribute: WORD, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfAttrsWritten: ULONG | t.CPtr) -> BOOL: pass
extern def WriteConsoleA(hConsoleOutput: HANDLE, lpBuffer: t.CConst | VOIDPTR, nNumberOfCharsToWrite: ULONG, lpNumberOfCharsWritten: ULONG | t.CPtr, lpReserved: VOIDPTR) -> BOOL: pass
extern def WriteConsoleW(hConsoleOutput: HANDLE, lpBuffer: t.CConst | VOIDPTR, nNumberOfCharsToWrite: ULONG, lpNumberOfCharsWritten: ULONG | t.CPtr, lpReserved: VOIDPTR) -> BOOL: pass
extern def ReadConsoleA(hConsoleInput: HANDLE, lpBuffer: VOIDPTR, nNumberOfCharsToRead: ULONG, lpNumberOfCharsRead: ULONG | t.CPtr, pInputControl: VOIDPTR) -> BOOL: pass
extern def ReadConsoleW(hConsoleInput: HANDLE, lpBuffer: VOIDPTR, nNumberOfCharsToRead: ULONG, lpNumberOfCharsRead: ULONG | t.CPtr, pInputControl: VOIDPTR) -> BOOL: pass
extern def GetConsoleMode(hConsoleHandle: HANDLE, lpMode: ULONG | t.CPtr) -> BOOL: pass
extern def SetConsoleMode(hConsoleHandle: HANDLE, dwMode: ULONG) -> BOOL: pass
extern def ReadConsoleInputA(hConsoleInput: HANDLE, lpBuffer: INPUT_RECORD | t.CPtr, nLength: ULONG, lpNumberOfEventsRead: ULONG | t.CPtr) -> BOOL: pass
extern def ReadConsoleInputW(hConsoleInput: HANDLE, lpBuffer: INPUT_RECORD | t.CPtr, nLength: ULONG, lpNumberOfEventsRead: ULONG | t.CPtr) -> BOOL: pass
extern def GetNumberOfConsoleInputEvents(hConsoleInput: HANDLE, lpNumberOfEvents: ULONG | t.CPtr) -> BOOL: pass
extern def FlushConsoleInputBuffer(hConsoleInput: HANDLE) -> BOOL: pass
extern def SetConsoleTitleA(lpConsoleTitle: LPCSTR) -> BOOL: pass
extern def SetConsoleTitleW(lpConsoleTitle: LPCWSTR) -> BOOL: pass
extern def GetConsoleTitleA(lpConsoleTitle: CHARPTR, nSize: ULONG) -> ULONG: pass
extern def GetConsoleTitleW(lpConsoleTitle: WCHARPTR, nSize: ULONG) -> ULONG: pass
extern def AllocConsole() -> BOOL: pass
extern def FreeConsole() -> BOOL: pass
extern def SetConsoleWindowInfo(hConsoleOutput: HANDLE, bAbsolute: BOOL, lpConsoleWindow: SMALL_RECT | t.CPtr) -> BOOL: pass
extern def ScrollConsoleScreenBufferA(hConsoleOutput: HANDLE, lpScrollRectangle: SMALL_RECT | t.CPtr, lpClipRectangle: SMALL_RECT | t.CPtr, dwDestinationOrigin: COORD, lpFill: CHAR_INFO | t.CPtr) -> BOOL: pass
extern def SetConsoleOutputCP(codepage: UINT) -> BOOL
extern def SetConsoleCP(codepage: UINT) -> BOOL
extern def GetConsoleCP() -> UINT
extern def GetConsoleOutputCP() -> UINT
extern def GetConsoleScreenBufferInfo(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: CONSOLE_SCREEN_BUFFER_INFO | t.CPtr) -> BOOL
extern def SetConsoleScreenBufferSize(hConsoleOutput: HANDLE, dwSize: COORD) -> BOOL
extern def SetConsoleCursorPosition(hConsoleOutput: HANDLE, dwCursorPosition: COORD) -> BOOL
extern def GetConsoleCursorInfo(hConsoleOutput: HANDLE, lpConsoleCursorInfo: CONSOLE_CURSOR_INFO | t.CPtr) -> BOOL
extern def SetConsoleCursorInfo(hConsoleOutput: HANDLE, lpConsoleCursorInfo: CONSOLE_CURSOR_INFO | t.CPtr) -> BOOL
extern def SetConsoleTextAttribute(hConsoleOutput: HANDLE, wAttributes: WORD) -> BOOL
extern def FillConsoleOutputCharacterA(hConsoleOutput: HANDLE, cCharacter: t.CChar, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfCharsWritten: ULONG | t.CPtr) -> BOOL
extern def FillConsoleOutputCharacterW(hConsoleOutput: HANDLE, cCharacter: WCHAR, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfCharsWritten: ULONG | t.CPtr) -> BOOL
extern def FillConsoleOutputAttribute(hConsoleOutput: HANDLE, wAttribute: WORD, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfAttrsWritten: ULONG | t.CPtr) -> BOOL
extern def WriteConsoleA(hConsoleOutput: HANDLE, lpBuffer: t.CConst | VOIDPTR, nNumberOfCharsToWrite: ULONG, lpNumberOfCharsWritten: ULONG | t.CPtr, lpReserved: VOIDPTR) -> BOOL
extern def WriteConsoleW(hConsoleOutput: HANDLE, lpBuffer: t.CConst | VOIDPTR, nNumberOfCharsToWrite: ULONG, lpNumberOfCharsWritten: ULONG | t.CPtr, lpReserved: VOIDPTR) -> BOOL
extern def ReadConsoleA(hConsoleInput: HANDLE, lpBuffer: VOIDPTR, nNumberOfCharsToRead: ULONG, lpNumberOfCharsRead: ULONG | t.CPtr, pInputControl: VOIDPTR) -> BOOL
extern def ReadConsoleW(hConsoleInput: HANDLE, lpBuffer: VOIDPTR, nNumberOfCharsToRead: ULONG, lpNumberOfCharsRead: ULONG | t.CPtr, pInputControl: VOIDPTR) -> BOOL
extern def GetConsoleMode(hConsoleHandle: HANDLE, lpMode: ULONG | t.CPtr) -> BOOL
extern def SetConsoleMode(hConsoleHandle: HANDLE, dwMode: ULONG) -> BOOL
extern def ReadConsoleInputA(hConsoleInput: HANDLE, lpBuffer: INPUT_RECORD | t.CPtr, nLength: ULONG, lpNumberOfEventsRead: ULONG | t.CPtr) -> BOOL
extern def ReadConsoleInputW(hConsoleInput: HANDLE, lpBuffer: INPUT_RECORD | t.CPtr, nLength: ULONG, lpNumberOfEventsRead: ULONG | t.CPtr) -> BOOL
extern def GetNumberOfConsoleInputEvents(hConsoleInput: HANDLE, lpNumberOfEvents: ULONG | t.CPtr) -> BOOL
extern def FlushConsoleInputBuffer(hConsoleInput: HANDLE) -> BOOL
extern def SetConsoleTitleA(lpConsoleTitle: LPCSTR) -> BOOL
extern def SetConsoleTitleW(lpConsoleTitle: LPCWSTR) -> BOOL
extern def GetConsoleTitleA(lpConsoleTitle: CHARPTR, nSize: ULONG) -> ULONG
extern def GetConsoleTitleW(lpConsoleTitle: WCHARPTR, nSize: ULONG) -> ULONG
extern def AllocConsole() -> BOOL
extern def FreeConsole() -> BOOL
extern def SetConsoleWindowInfo(hConsoleOutput: HANDLE, bAbsolute: BOOL, lpConsoleWindow: SMALL_RECT | t.CPtr) -> BOOL
extern def ScrollConsoleScreenBufferA(hConsoleOutput: HANDLE, lpScrollRectangle: SMALL_RECT | t.CPtr, lpClipRectangle: SMALL_RECT | t.CPtr, dwDestinationOrigin: COORD, lpFill: CHAR_INFO | t.CPtr) -> BOOL
+50 -50
View File
@@ -85,59 +85,59 @@ class WIN32_FIND_DATAW():
cFileName: t.CArray[t.CUInt16T, 260]
cAlternateFileName: t.CArray[t.CUInt16T, 14]
extern def CreateFileA(lpFileName: LPCSTR, dwDesiredAccess: ULONG, dwShareMode: ULONG, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr, dwCreationDisposition: ULONG, dwFlagsAndAttributes: ULONG, hTemplateFile: HANDLE) -> HANDLE: pass
extern def CreateFileW(lpFileName: LPCWSTR, dwDesiredAccess: ULONG, dwShareMode: ULONG, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr, dwCreationDisposition: ULONG, dwFlagsAndAttributes: ULONG, hTemplateFile: HANDLE) -> HANDLE: pass
extern def ReadFile(hFile: HANDLE, lpBuffer: VOIDPTR, nNumberOfBytesToRead: ULONG, lpNumberOfBytesRead: ULONG | t.CPtr, lpOverlapped: OVERLAPPED | t.CPtr) -> BOOL: pass
extern def WriteFile(hFile: HANDLE, lpBuffer: t.CConst | VOIDPTR, nNumberOfBytesToWrite: ULONG, lpNumberOfBytesWritten: ULONG | t.CPtr, lpOverlapped: OVERLAPPED | t.CPtr) -> BOOL: pass
extern def SetFilePointer(hFile: HANDLE, lDistanceToMove: LONG, lpDistanceToMoveHigh: LONG | t.CPtr, dwMoveMethod: ULONG) -> LONG: pass
extern def SetFilePointerEx(hFile: HANDLE, liDistanceToMove: LARGE_INTEGER | t.CPtr, lpNewFilePointer: LARGE_INTEGER | t.CPtr, dwMoveMethod: ULONG) -> BOOL: pass
extern def GetFileSize(hFile: HANDLE, lpFileSizeHigh: ULONG | t.CPtr) -> ULONG: pass
extern def GetFileSizeEx(hFile: HANDLE, lpFileSize: LARGE_INTEGER | t.CPtr) -> BOOL: pass
extern def SetEndOfFile(hFile: HANDLE) -> BOOL: pass
extern def FlushFileBuffers(hFile: HANDLE) -> BOOL: pass
extern def GetFileType(hFile: HANDLE) -> ULONG: pass
extern def GetFileAttributesA(lpFileName: LPCSTR) -> ULONG: pass
extern def GetFileAttributesW(lpFileName: LPCWSTR) -> ULONG: pass
extern def SetFileAttributesA(lpFileName: LPCSTR, dwFileAttributes: ULONG) -> BOOL: pass
extern def SetFileAttributesW(lpFileName: LPCWSTR, dwFileAttributes: ULONG) -> BOOL: pass
extern def DeleteFileA(lpFileName: LPCSTR) -> BOOL: pass
extern def DeleteFileW(lpFileName: LPCWSTR) -> BOOL: pass
extern def MoveFileA(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR) -> BOOL: pass
extern def MoveFileW(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR) -> BOOL: pass
extern def MoveFileExA(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, dwFlags: ULONG) -> BOOL: pass
extern def MoveFileExW(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, dwFlags: ULONG) -> BOOL: pass
extern def CopyFileA(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, bFailIfExists: BOOL) -> BOOL: pass
extern def CopyFileW(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, bFailIfExists: BOOL) -> BOOL: pass
extern def CreateDirectoryA(lpPathName: LPCSTR, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr) -> BOOL: pass
extern def CreateDirectoryW(lpPathName: LPCWSTR, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr) -> BOOL: pass
extern def RemoveDirectoryA(lpPathName: LPCSTR) -> BOOL: pass
extern def RemoveDirectoryW(lpPathName: LPCWSTR) -> BOOL: pass
extern def FindFirstFileA(lpFileName: LPCSTR, lpFindFileData: WIN32_FIND_DATAA | t.CPtr) -> HANDLE: pass
extern def FindFirstFileW(lpFileName: LPCWSTR, lpFindFileData: WIN32_FIND_DATAW | t.CPtr) -> HANDLE: pass
extern def FindNextFileA(hFindFile: HANDLE, lpFindFileData: WIN32_FIND_DATAA | t.CPtr) -> BOOL: pass
extern def FindNextFileW(hFindFile: HANDLE, lpFindFileData: WIN32_FIND_DATAW | t.CPtr) -> BOOL: pass
extern def FindClose(hFindFile: HANDLE) -> BOOL: pass
extern def GetStdHandle(nStdHandle: ULONG) -> HANDLE: pass
extern def SetStdHandle(nStdHandle: ULONG, hHandle: HANDLE) -> BOOL: pass
extern def GetFileInformationByHandle(hFile: HANDLE, lpFileInformation: BY_HANDLE_FILE_INFORMATION | t.CPtr) -> BOOL: pass
extern def LockFile(hFile: HANDLE, dwFileOffsetLow: ULONG, dwFileOffsetHigh: ULONG, nNumberOfBytesToLockLow: ULONG, nNumberOfBytesToLockHigh: ULONG) -> BOOL: pass
extern def UnlockFile(hFile: HANDLE, dwFileOffsetLow: ULONG, dwFileOffsetHigh: ULONG, nNumberOfBytesToUnlockLow: ULONG, nNumberOfBytesToUnlockHigh: ULONG) -> BOOL: pass
extern def GetTempPathA(nBufferLength: ULONG, lpBuffer: CHARPTR) -> ULONG: pass
extern def GetTempPathW(nBufferLength: ULONG, lpBuffer: WCHARPTR) -> ULONG: pass
extern def GetTempFileNameA(lpPathName: LPCSTR, lpPrefixString: LPCSTR, uUnique: UINT, lpTempFileName: CHARPTR) -> UINT: pass
extern def GetTempFileNameW(lpPathName: LPCWSTR, lpPrefixString: LPCWSTR, uUnique: UINT, lpTempFileName: WCHARPTR) -> UINT: pass
extern def GetCurrentDirectoryA(nBufferLength: ULONG, lpBuffer: CHARPTR) -> ULONG: pass
extern def GetCurrentDirectoryW(nBufferLength: ULONG, lpBuffer: WCHARPTR) -> ULONG: pass
extern def SetCurrentDirectoryA(lpPathName: LPCSTR) -> BOOL: pass
extern def SetCurrentDirectoryW(lpPathName: LPCWSTR) -> BOOL: pass
extern def GetModuleFileNameA(hModule: HANDLE, lpFilename: CHARPTR, nSize: ULONG) -> ULONG: pass
extern def GetModuleFileNameW(hModule: HANDLE, lpFilename: WCHARPTR, nSize: ULONG) -> ULONG: pass
extern def CreateFileA(lpFileName: LPCSTR, dwDesiredAccess: ULONG, dwShareMode: ULONG, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr, dwCreationDisposition: ULONG, dwFlagsAndAttributes: ULONG, hTemplateFile: HANDLE) -> HANDLE
extern def CreateFileW(lpFileName: LPCWSTR, dwDesiredAccess: ULONG, dwShareMode: ULONG, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr, dwCreationDisposition: ULONG, dwFlagsAndAttributes: ULONG, hTemplateFile: HANDLE) -> HANDLE
extern def ReadFile(hFile: HANDLE, lpBuffer: VOIDPTR, nNumberOfBytesToRead: ULONG, lpNumberOfBytesRead: ULONG | t.CPtr, lpOverlapped: OVERLAPPED | t.CPtr) -> BOOL
extern def WriteFile(hFile: HANDLE, lpBuffer: t.CConst | VOIDPTR, nNumberOfBytesToWrite: ULONG, lpNumberOfBytesWritten: ULONG | t.CPtr, lpOverlapped: OVERLAPPED | t.CPtr) -> BOOL
extern def SetFilePointer(hFile: HANDLE, lDistanceToMove: LONG, lpDistanceToMoveHigh: LONG | t.CPtr, dwMoveMethod: ULONG) -> LONG
extern def SetFilePointerEx(hFile: HANDLE, liDistanceToMove: LARGE_INTEGER | t.CPtr, lpNewFilePointer: LARGE_INTEGER | t.CPtr, dwMoveMethod: ULONG) -> BOOL
extern def GetFileSize(hFile: HANDLE, lpFileSizeHigh: ULONG | t.CPtr) -> ULONG
extern def GetFileSizeEx(hFile: HANDLE, lpFileSize: LARGE_INTEGER | t.CPtr) -> BOOL
extern def SetEndOfFile(hFile: HANDLE) -> BOOL
extern def FlushFileBuffers(hFile: HANDLE) -> BOOL
extern def GetFileType(hFile: HANDLE) -> ULONG
extern def GetFileAttributesA(lpFileName: LPCSTR) -> ULONG
extern def GetFileAttributesW(lpFileName: LPCWSTR) -> ULONG
extern def SetFileAttributesA(lpFileName: LPCSTR, dwFileAttributes: ULONG) -> BOOL
extern def SetFileAttributesW(lpFileName: LPCWSTR, dwFileAttributes: ULONG) -> BOOL
extern def DeleteFileA(lpFileName: LPCSTR) -> BOOL
extern def DeleteFileW(lpFileName: LPCWSTR) -> BOOL
extern def MoveFileA(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR) -> BOOL
extern def MoveFileW(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR) -> BOOL
extern def MoveFileExA(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, dwFlags: ULONG) -> BOOL
extern def MoveFileExW(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, dwFlags: ULONG) -> BOOL
extern def CopyFileA(lpExistingFileName: LPCSTR, lpNewFileName: LPCSTR, bFailIfExists: BOOL) -> BOOL
extern def CopyFileW(lpExistingFileName: LPCWSTR, lpNewFileName: LPCWSTR, bFailIfExists: BOOL) -> BOOL
extern def CreateDirectoryA(lpPathName: LPCSTR, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr) -> BOOL
extern def CreateDirectoryW(lpPathName: LPCWSTR, lpSecurityAttributes: SECURITY_ATTRIBUTES | t.CPtr) -> BOOL
extern def RemoveDirectoryA(lpPathName: LPCSTR) -> BOOL
extern def RemoveDirectoryW(lpPathName: LPCWSTR) -> BOOL
extern def FindFirstFileA(lpFileName: LPCSTR, lpFindFileData: WIN32_FIND_DATAA | t.CPtr) -> HANDLE
extern def FindFirstFileW(lpFileName: LPCWSTR, lpFindFileData: WIN32_FIND_DATAW | t.CPtr) -> HANDLE
extern def FindNextFileA(hFindFile: HANDLE, lpFindFileData: WIN32_FIND_DATAA | t.CPtr) -> BOOL
extern def FindNextFileW(hFindFile: HANDLE, lpFindFileData: WIN32_FIND_DATAW | t.CPtr) -> BOOL
extern def FindClose(hFindFile: HANDLE) -> BOOL
extern def GetStdHandle(nStdHandle: ULONG) -> HANDLE
extern def SetStdHandle(nStdHandle: ULONG, hHandle: HANDLE) -> BOOL
extern def GetFileInformationByHandle(hFile: HANDLE, lpFileInformation: BY_HANDLE_FILE_INFORMATION | t.CPtr) -> BOOL
extern def LockFile(hFile: HANDLE, dwFileOffsetLow: ULONG, dwFileOffsetHigh: ULONG, nNumberOfBytesToLockLow: ULONG, nNumberOfBytesToLockHigh: ULONG) -> BOOL
extern def UnlockFile(hFile: HANDLE, dwFileOffsetLow: ULONG, dwFileOffsetHigh: ULONG, nNumberOfBytesToUnlockLow: ULONG, nNumberOfBytesToUnlockHigh: ULONG) -> BOOL
extern def GetTempPathA(nBufferLength: ULONG, lpBuffer: CHARPTR) -> ULONG
extern def GetTempPathW(nBufferLength: ULONG, lpBuffer: WCHARPTR) -> ULONG
extern def GetTempFileNameA(lpPathName: LPCSTR, lpPrefixString: LPCSTR, uUnique: UINT, lpTempFileName: CHARPTR) -> UINT
extern def GetTempFileNameW(lpPathName: LPCWSTR, lpPrefixString: LPCWSTR, uUnique: UINT, lpTempFileName: WCHARPTR) -> UINT
extern def GetCurrentDirectoryA(nBufferLength: ULONG, lpBuffer: CHARPTR) -> ULONG
extern def GetCurrentDirectoryW(nBufferLength: ULONG, lpBuffer: WCHARPTR) -> ULONG
extern def SetCurrentDirectoryA(lpPathName: LPCSTR) -> BOOL
extern def SetCurrentDirectoryW(lpPathName: LPCWSTR) -> BOOL
extern def GetModuleFileNameA(hModule: HANDLE, lpFilename: CHARPTR, nSize: ULONG) -> ULONG
extern def GetModuleFileNameW(hModule: HANDLE, lpFilename: WCHARPTR, nSize: ULONG) -> ULONG
HANDLE_FLAG_INHERIT: t.CDefine = 0x00000001
HANDLE_FLAG_PROTECT_FROM_CLOSE: t.CDefine = 0x00000002
extern def CreatePipe(hReadPipe: HANDLE | t.CPtr, hWritePipe: HANDLE | t.CPtr, lpPipeAttributes: SECURITY_ATTRIBUTES | t.CPtr, nSize: ULONG) -> BOOL: pass
extern def SetHandleInformation(hObject: HANDLE, dwMask: ULONG, dwFlags: ULONG) -> BOOL: pass
extern def DuplicateHandle(hSourceProcessHandle: HANDLE, hSourceHandle: HANDLE, hTargetProcessHandle: HANDLE, lpTargetHandle: HANDLE | t.CPtr, dwDesiredAccess: ULONG, bInheritHandle: BOOL, dwOptions: ULONG) -> BOOL: pass
extern def CreatePipe(hReadPipe: HANDLE | t.CPtr, hWritePipe: HANDLE | t.CPtr, lpPipeAttributes: SECURITY_ATTRIBUTES | t.CPtr, nSize: ULONG) -> BOOL
extern def SetHandleInformation(hObject: HANDLE, dwMask: ULONG, dwFlags: ULONG) -> BOOL
extern def DuplicateHandle(hSourceProcessHandle: HANDLE, hSourceHandle: HANDLE, hTargetProcessHandle: HANDLE, lpTargetHandle: HANDLE | t.CPtr, dwDesiredAccess: ULONG, bInheritHandle: BOOL, dwOptions: ULONG) -> BOOL
DUPLICATE_SAME_ACCESS: t.CDefine = 0x00000002
+22 -22
View File
@@ -40,25 +40,25 @@ class MEMORY_BASIC_INFORMATION():
Protect: DWORD
Type: DWORD
extern def VirtualAlloc(lpAddress: VOIDPTR, dwSize: t.CSizeT, flAllocationType: ULONG, flProtect: ULONG) -> VOIDPTR: pass
extern def VirtualFree(lpAddress: VOIDPTR, dwSize: t.CSizeT, dwFreeType: ULONG) -> BOOL: pass
extern def VirtualProtect(lpAddress: VOIDPTR, dwSize: t.CSizeT, flNewProtect: ULONG, lpflOldProtect: ULONG | t.CPtr) -> BOOL: pass
extern def VirtualQuery(lpAddress: t.CConst | VOIDPTR, lpBuffer: MEMORY_BASIC_INFORMATION | t.CPtr, dwLength: t.CSizeT) -> t.CSizeT: pass
extern def VirtualLock(lpAddress: VOIDPTR, dwSize: t.CSizeT) -> BOOL: pass
extern def VirtualUnlock(lpAddress: VOIDPTR, dwSize: t.CSizeT) -> BOOL: pass
extern def GetProcessHeap() -> HANDLE: pass
extern def HeapCreate(flOptions: ULONG, dwInitialSize: t.CSizeT, dwMaximumSize: t.CSizeT) -> HANDLE: pass
extern def HeapDestroy(hHeap: HANDLE) -> BOOL: pass
extern def HeapAlloc(hHeap: HANDLE, dwFlags: ULONG, dwBytes: t.CSizeT) -> VOIDPTR: pass
extern def HeapReAlloc(hHeap: HANDLE, dwFlags: ULONG, lpMem: VOIDPTR, dwBytes: t.CSizeT) -> VOIDPTR: pass
extern def HeapFree(hHeap: HANDLE, dwFlags: ULONG, lpMem: VOIDPTR) -> BOOL: pass
extern def HeapSize(hHeap: HANDLE, dwFlags: ULONG, lpMem: t.CConst | VOIDPTR) -> t.CSizeT: pass
extern def HeapValidate(hHeap: HANDLE, dwFlags: ULONG, lpMem: t.CConst | VOIDPTR) -> BOOL: pass
extern def HeapCompact(hHeap: HANDLE, dwFlags: ULONG) -> t.CSizeT: pass
extern def GlobalAlloc(uFlags: UINT, dwBytes: t.CSizeT) -> VOIDPTR: pass
extern def GlobalFree(hMem: VOIDPTR) -> VOIDPTR: pass
extern def GlobalLock(hMem: VOIDPTR) -> VOIDPTR: pass
extern def GlobalUnlock(hMem: VOIDPTR) -> BOOL: pass
extern def GlobalSize(hMem: VOIDPTR) -> t.CSizeT: pass
extern def LocalAlloc(uFlags: UINT, dwBytes: t.CSizeT) -> VOIDPTR: pass
extern def LocalFree(hMem: VOIDPTR) -> VOIDPTR: pass
extern def VirtualAlloc(lpAddress: VOIDPTR, dwSize: t.CSizeT, flAllocationType: ULONG, flProtect: ULONG) -> VOIDPTR
extern def VirtualFree(lpAddress: VOIDPTR, dwSize: t.CSizeT, dwFreeType: ULONG) -> BOOL
extern def VirtualProtect(lpAddress: VOIDPTR, dwSize: t.CSizeT, flNewProtect: ULONG, lpflOldProtect: ULONG | t.CPtr) -> BOOL
extern def VirtualQuery(lpAddress: t.CConst | VOIDPTR, lpBuffer: MEMORY_BASIC_INFORMATION | t.CPtr, dwLength: t.CSizeT) -> t.CSizeT
extern def VirtualLock(lpAddress: VOIDPTR, dwSize: t.CSizeT) -> BOOL
extern def VirtualUnlock(lpAddress: VOIDPTR, dwSize: t.CSizeT) -> BOOL
extern def GetProcessHeap() -> HANDLE
extern def HeapCreate(flOptions: ULONG, dwInitialSize: t.CSizeT, dwMaximumSize: t.CSizeT) -> HANDLE
extern def HeapDestroy(hHeap: HANDLE) -> BOOL
extern def HeapAlloc(hHeap: HANDLE, dwFlags: ULONG, dwBytes: t.CSizeT) -> VOIDPTR
extern def HeapReAlloc(hHeap: HANDLE, dwFlags: ULONG, lpMem: VOIDPTR, dwBytes: t.CSizeT) -> VOIDPTR
extern def HeapFree(hHeap: HANDLE, dwFlags: ULONG, lpMem: VOIDPTR) -> BOOL
extern def HeapSize(hHeap: HANDLE, dwFlags: ULONG, lpMem: t.CConst | VOIDPTR) -> t.CSizeT
extern def HeapValidate(hHeap: HANDLE, dwFlags: ULONG, lpMem: t.CConst | VOIDPTR) -> BOOL
extern def HeapCompact(hHeap: HANDLE, dwFlags: ULONG) -> t.CSizeT
extern def GlobalAlloc(uFlags: UINT, dwBytes: t.CSizeT) -> VOIDPTR
extern def GlobalFree(hMem: VOIDPTR) -> VOIDPTR
extern def GlobalLock(hMem: VOIDPTR) -> VOIDPTR
extern def GlobalUnlock(hMem: VOIDPTR) -> BOOL
extern def GlobalSize(hMem: VOIDPTR) -> t.CSizeT
extern def LocalAlloc(uFlags: UINT, dwBytes: t.CSizeT) -> VOIDPTR
extern def LocalFree(hMem: VOIDPTR) -> VOIDPTR
+25 -25
View File
@@ -85,28 +85,28 @@ class PROCESS_INFORMATION():
dwProcessId: DWORD
dwThreadId: DWORD
extern def CreateProcessA(lpApplicationName: LPCSTR, lpCommandLine: CHARPTR, lpProcessAttributes: SECURITY_ATTRIBUTES | t.CPtr, lpThreadAttributes: SECURITY_ATTRIBUTES | t.CPtr, bInheritHandles: BOOL, dwCreationFlags: ULONG, lpEnvironment: VOIDPTR, lpCurrentDirectory: LPCSTR, lpStartupInfo: STARTUPINFOA | t.CPtr, lpProcessInformation: PROCESS_INFORMATION | t.CPtr) -> BOOL: pass
extern def CreateProcessW(lpApplicationName: LPCWSTR, lpCommandLine: WCHARPTR, lpProcessAttributes: SECURITY_ATTRIBUTES | t.CPtr, lpThreadAttributes: SECURITY_ATTRIBUTES | t.CPtr, bInheritHandles: BOOL, dwCreationFlags: ULONG, lpEnvironment: VOIDPTR, lpCurrentDirectory: LPCWSTR, lpStartupInfo: STARTUPINFOW | t.CPtr, lpProcessInformation: PROCESS_INFORMATION | t.CPtr) -> BOOL: pass
extern def TerminateProcess(hProcess: HANDLE, uExitCode: UINT) -> BOOL: pass
extern def GetExitCodeProcess(hProcess: HANDLE, lpExitCode: ULONG | t.CPtr) -> BOOL: pass
extern def GetExitCodeThread(hThread: HANDLE, lpExitCode: ULONG | t.CPtr) -> BOOL: pass
extern def OpenProcess(dwDesiredAccess: ULONG, bInheritHandle: BOOL, dwProcessId: ULONG) -> HANDLE: pass
extern def GetCurrentProcess() -> HANDLE: pass
extern def GetCurrentProcessId() -> ULONG: pass
extern def CreateThread(lpThreadAttributes: SECURITY_ATTRIBUTES | t.CPtr, dwStackSize: t.CSizeT, lpStartAddress: VOIDPTR, lpParameter: VOIDPTR, dwCreationFlags: ULONG, lpThreadId: ULONG | t.CPtr) -> HANDLE: pass
extern def OpenThread(dwDesiredAccess: ULONG, bInheritHandle: BOOL, dwThreadId: ULONG) -> HANDLE: pass
extern def SuspendThread(hThread: HANDLE) -> ULONG: pass
extern def ResumeThread(hThread: HANDLE) -> ULONG: pass
extern def TerminateThread(hThread: HANDLE, dwExitCode: ULONG) -> BOOL: pass
extern def GetCurrentThread() -> HANDLE: pass
extern def GetCurrentThreadId() -> ULONG: pass
extern def GetThreadId(hThread: HANDLE) -> ULONG: pass
extern def GetProcessId(hProcess: HANDLE) -> ULONG: pass
extern def SetThreadPriority(hThread: HANDLE, nPriority: INT) -> BOOL: pass
extern def GetThreadPriority(hThread: HANDLE) -> INT: pass
extern def ExitProcess(uExitCode: UINT) -> VOID: pass
extern def ExitThread(dwExitCode: ULONG) -> VOID: pass
extern def TlsAlloc() -> ULONG: pass
extern def TlsFree(dwTlsIndex: ULONG) -> BOOL: pass
extern def TlsGetValue(dwTlsIndex: ULONG) -> VOIDPTR: pass
extern def TlsSetValue(dwTlsIndex: ULONG, lpTlsValue: VOIDPTR) -> BOOL: pass
extern def CreateProcessA(lpApplicationName: LPCSTR, lpCommandLine: CHARPTR, lpProcessAttributes: SECURITY_ATTRIBUTES | t.CPtr, lpThreadAttributes: SECURITY_ATTRIBUTES | t.CPtr, bInheritHandles: BOOL, dwCreationFlags: ULONG, lpEnvironment: VOIDPTR, lpCurrentDirectory: LPCSTR, lpStartupInfo: STARTUPINFOA | t.CPtr, lpProcessInformation: PROCESS_INFORMATION | t.CPtr) -> BOOL
extern def CreateProcessW(lpApplicationName: LPCWSTR, lpCommandLine: WCHARPTR, lpProcessAttributes: SECURITY_ATTRIBUTES | t.CPtr, lpThreadAttributes: SECURITY_ATTRIBUTES | t.CPtr, bInheritHandles: BOOL, dwCreationFlags: ULONG, lpEnvironment: VOIDPTR, lpCurrentDirectory: LPCWSTR, lpStartupInfo: STARTUPINFOW | t.CPtr, lpProcessInformation: PROCESS_INFORMATION | t.CPtr) -> BOOL
extern def TerminateProcess(hProcess: HANDLE, uExitCode: UINT) -> BOOL
extern def GetExitCodeProcess(hProcess: HANDLE, lpExitCode: ULONG | t.CPtr) -> BOOL
extern def GetExitCodeThread(hThread: HANDLE, lpExitCode: ULONG | t.CPtr) -> BOOL
extern def OpenProcess(dwDesiredAccess: ULONG, bInheritHandle: BOOL, dwProcessId: ULONG) -> HANDLE
extern def GetCurrentProcess() -> HANDLE
extern def GetCurrentProcessId() -> ULONG
extern def CreateThread(lpThreadAttributes: SECURITY_ATTRIBUTES | t.CPtr, dwStackSize: t.CSizeT, lpStartAddress: VOIDPTR, lpParameter: VOIDPTR, dwCreationFlags: ULONG, lpThreadId: ULONG | t.CPtr) -> HANDLE
extern def OpenThread(dwDesiredAccess: ULONG, bInheritHandle: BOOL, dwThreadId: ULONG) -> HANDLE
extern def SuspendThread(hThread: HANDLE) -> ULONG
extern def ResumeThread(hThread: HANDLE) -> ULONG
extern def TerminateThread(hThread: HANDLE, dwExitCode: ULONG) -> BOOL
extern def GetCurrentThread() -> HANDLE
extern def GetCurrentThreadId() -> ULONG
extern def GetThreadId(hThread: HANDLE) -> ULONG
extern def GetProcessId(hProcess: HANDLE) -> ULONG
extern def SetThreadPriority(hThread: HANDLE, nPriority: INT) -> BOOL
extern def GetThreadPriority(hThread: HANDLE) -> INT
extern def ExitProcess(uExitCode: UINT) -> VOID
extern def ExitThread(dwExitCode: ULONG) -> VOID
extern def TlsAlloc() -> ULONG
extern def TlsFree(dwTlsIndex: ULONG) -> BOOL
extern def TlsGetValue(dwTlsIndex: ULONG) -> VOIDPTR
extern def TlsSetValue(dwTlsIndex: ULONG, lpTlsValue: VOIDPTR) -> BOOL
+39 -39
View File
@@ -10,48 +10,48 @@ class CRITICAL_SECTION():
LockSemaphore: HANDLE
SpinCount: QWORD
extern def InitializeCriticalSection(lpCriticalSection: CRITICAL_SECTION | t.CPtr) -> VOID: pass
extern def EnterCriticalSection(lpCriticalSection: CRITICAL_SECTION | t.CPtr) -> VOID: pass
extern def LeaveCriticalSection(lpCriticalSection: CRITICAL_SECTION | t.CPtr) -> VOID: pass
extern def DeleteCriticalSection(lpCriticalSection: CRITICAL_SECTION | t.CPtr) -> VOID: pass
extern def TryEnterCriticalSection(lpCriticalSection: CRITICAL_SECTION | t.CPtr) -> BOOL: pass
extern def SetCriticalSectionSpinCount(lpCriticalSection: CRITICAL_SECTION | t.CPtr, dwSpinCount: ULONG) -> ULONG: pass
extern def InitializeCriticalSectionAndSpinCount(lpCriticalSection: CRITICAL_SECTION | t.CPtr, dwSpinCount: ULONG) -> BOOL: pass
extern def CreateMutexA(lpMutexAttributes: SECURITY_ATTRIBUTES | t.CPtr, bInitialOwner: BOOL, lpName: LPCSTR) -> HANDLE: pass
extern def CreateMutexW(lpMutexAttributes: SECURITY_ATTRIBUTES | t.CPtr, bInitialOwner: BOOL, lpName: LPCWSTR) -> HANDLE: pass
extern def OpenMutexA(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCSTR) -> HANDLE: pass
extern def OpenMutexW(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCWSTR) -> HANDLE: pass
extern def ReleaseMutex(hMutex: HANDLE) -> BOOL: pass
extern def CreateEventA(lpEventAttributes: SECURITY_ATTRIBUTES | t.CPtr, bManualReset: BOOL, bInitialState: BOOL, lpName: LPCSTR) -> HANDLE: pass
extern def CreateEventW(lpEventAttributes: SECURITY_ATTRIBUTES | t.CPtr, bManualReset: BOOL, bInitialState: BOOL, lpName: LPCWSTR) -> HANDLE: pass
extern def OpenEventA(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCSTR) -> HANDLE: pass
extern def OpenEventW(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCWSTR) -> HANDLE: pass
extern def SetEvent(hEvent: HANDLE) -> BOOL: pass
extern def ResetEvent(hEvent: HANDLE) -> BOOL: pass
extern def PulseEvent(hEvent: HANDLE) -> BOOL: pass
extern def CreateSemaphoreA(lpSemaphoreAttributes: SECURITY_ATTRIBUTES | t.CPtr, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR) -> HANDLE: pass
extern def CreateSemaphoreW(lpSemaphoreAttributes: SECURITY_ATTRIBUTES | t.CPtr, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCWSTR) -> HANDLE: pass
extern def OpenSemaphoreA(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCSTR) -> HANDLE: pass
extern def OpenSemaphoreW(dwDesiredAccess: ULONG, bInheritHandle: BOOL, lpName: LPCWSTR) -> HANDLE: pass
extern def ReleaseSemaphore(hSemaphore: HANDLE, lReleaseCount: LONG, lpPreviousCount: LONG | t.CPtr) -> BOOL: pass
extern def WaitForSingleObject(hHandle: HANDLE, dwMilliseconds: ULONG) -> ULONG: pass
extern def WaitForSingleObjectEx(hHandle: HANDLE, dwMilliseconds: ULONG, bAlertable: BOOL) -> ULONG: pass
extern def WaitForMultipleObjects(nCount: ULONG, lpHandles: VOIDPTR, bWaitAll: BOOL, dwMilliseconds: ULONG) -> ULONG: pass
extern def WaitForMultipleObjectsEx(nCount: ULONG, lpHandles: VOIDPTR, bWaitAll: BOOL, dwMilliseconds: ULONG, bAlertable: BOOL) -> ULONG: pass
extern def InitializeSRWLock(SRWLock: VOIDPTR) -> VOID: pass
extern def AcquireSRWLockExclusive(SRWLock: VOIDPTR) -> VOID: pass
extern def AcquireSRWLockShared(SRWLock: VOIDPTR) -> VOID: pass
extern def ReleaseSRWLockExclusive(SRWLock: VOIDPTR) -> VOID: pass
extern def ReleaseSRWLockShared(SRWLock: VOIDPTR) -> VOID: pass
extern def InitializeCriticalSection(lpCriticalSection: CRITICAL_SECTION | t.CPtr) -> VOID
extern def EnterCriticalSection(lpCriticalSection: CRITICAL_SECTION | t.CPtr) -> VOID
extern def LeaveCriticalSection(lpCriticalSection: CRITICAL_SECTION | t.CPtr) -> VOID
extern def DeleteCriticalSection(lpCriticalSection: CRITICAL_SECTION | t.CPtr) -> VOID
extern def TryEnterCriticalSection(lpCriticalSection: CRITICAL_SECTION | t.CPtr) -> BOOL
extern def SetCriticalSectionSpinCount(lpCriticalSection: CRITICAL_SECTION | t.CPtr, dwSpinCount: ULONG) -> ULONG
extern def InitializeCriticalSectionAndSpinCount(lpCriticalSection: CRITICAL_SECTION | t.CPtr, dwSpinCount: ULONG) -> BOOL
extern def CreateMutexA(lpMutexAttributes: SECURITY_ATTRIBUTES | t.CPtr, bInitialOwner: BOOL, lpName: LPCSTR) -> HANDLE
extern def CreateMutexW(lpMutexAttributes: SECURITY_ATTRIBUTES | t.CPtr, 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 | t.CPtr, bManualReset: BOOL, bInitialState: BOOL, lpName: LPCSTR) -> HANDLE
extern def CreateEventW(lpEventAttributes: SECURITY_ATTRIBUTES | t.CPtr, 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 | t.CPtr, lInitialCount: LONG, lMaximumCount: LONG, lpName: LPCSTR) -> HANDLE
extern def CreateSemaphoreW(lpSemaphoreAttributes: SECURITY_ATTRIBUTES | t.CPtr, 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 | t.CPtr) -> 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: pass
extern def SleepConditionVariableCS(ConditionVariable: VOIDPTR, CriticalSection: CRITICAL_SECTION | t.CPtr, dwMilliseconds: ULONG) -> BOOL: pass
extern def SleepConditionVariableSRW(ConditionVariable: VOIDPTR, SRWLock: VOIDPTR, dwMilliseconds: ULONG, Flags: ULONG) -> BOOL: pass
extern def WakeConditionVariable(ConditionVariable: VOIDPTR) -> VOID: pass
extern def WakeAllConditionVariable(ConditionVariable: VOIDPTR) -> VOID: pass
extern def InitializeConditionVariable(ConditionVariable: VOIDPTR) -> VOID
extern def SleepConditionVariableCS(ConditionVariable: VOIDPTR, CriticalSection: CRITICAL_SECTION | t.CPtr, 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+
INIT_ONCE_STATIC_INIT: t.CDefine = 0x00000001
@@ -62,4 +62,4 @@ INIT_ONCE_INIT_FAILED: t.CDefine = 0x00000008
class INIT_ONCE:
Ptr: t.CPtr
extern def InitOnceExecuteOnce(InitOnce: INIT_ONCE | t.CPtr, InitFn: VOIDPTR, Parameter: VOIDPTR, Context: VOIDPTR | t.CPtr) -> BOOL: pass
extern def InitOnceExecuteOnce(InitOnce: INIT_ONCE | t.CPtr, InitFn: VOIDPTR, Parameter: VOIDPTR, Context: VOIDPTR | t.CPtr) -> BOOL
+17 -17
View File
@@ -84,21 +84,21 @@ class WinTimeVal:
# WinSock2 API 函数
# ============================================================
extern def WSAStartup(wVersionRequested: WORD, lpWSAData: WSAData | t.CPtr) -> INT: pass
extern def WSACleanup() -> INT: pass
extern def WSAGetLastError() -> INT: pass
extern def WSAStartup(wVersionRequested: WORD, lpWSAData: WSAData | t.CPtr) -> INT
extern def WSACleanup() -> INT
extern def WSAGetLastError() -> INT
extern def socket(family: INT, type: INT, protocol: INT) -> u64: pass
extern def closesocket(s: u64) -> INT: pass
extern def connect(s: u64, name: WSASocketAddr | t.CPtr, namelen: INT) -> INT: pass
extern def send(s: u64, buf: t.CVoid | t.CPtr, len: INT, flags: INT) -> INT: pass
extern def recv(s: u64, buf: t.CVoid | t.CPtr, len: INT, flags: INT) -> INT: pass
extern def bind(s: u64, name: WSASocketAddr | t.CPtr, namelen: INT) -> INT: pass
extern def listen(s: u64, backlog: INT) -> INT: pass
extern def accept(s: u64, addr: WSASocketAddr | t.CPtr, addrlen: INT | t.CPtr) -> u64: pass
extern def setsockopt(s: u64, level: INT, optname: INT, optval: t.CVoid | t.CPtr, optlen: INT) -> INT: pass
extern def shutdown(s: u64, how: INT) -> INT: pass
extern def gethostbyname(name: t.CChar | t.CConst | t.CPtr) -> WSAHostEnt | t.CPtr: pass
extern def ntohs(netshort: u16) -> u16: pass
extern def htons(hostshort: u16) -> u16: pass
extern def inet_addr(cp: t.CChar | t.CConst | t.CPtr) -> u32: pass
extern def socket(family: INT, type: INT, protocol: INT) -> u64
extern def closesocket(s: u64) -> INT
extern def connect(s: u64, name: WSASocketAddr | t.CPtr, namelen: INT) -> INT
extern def send(s: u64, buf: t.CVoid | t.CPtr, len: INT, flags: INT) -> INT
extern def recv(s: u64, buf: t.CVoid | t.CPtr, len: INT, flags: INT) -> INT
extern def bind(s: u64, name: WSASocketAddr | t.CPtr, namelen: INT) -> INT
extern def listen(s: u64, backlog: INT) -> INT
extern def accept(s: u64, addr: WSASocketAddr | t.CPtr, addrlen: INT | t.CPtr) -> u64
extern def setsockopt(s: u64, level: INT, optname: INT, optval: t.CVoid | t.CPtr, optlen: INT) -> INT
extern def shutdown(s: u64, how: INT) -> INT
extern def gethostbyname(name: t.CChar | t.CConst | t.CPtr) -> WSAHostEnt | t.CPtr
extern def ntohs(netshort: u16) -> u16
extern def htons(hostshort: u16) -> u16
extern def inet_addr(cp: t.CChar | t.CConst | t.CPtr) -> u32