diff --git a/includes/ast/parser.vp b/includes/ast/parser.vp index 3f49e0e..9ee5c85 100644 --- a/includes/ast/parser.vp +++ b/includes/ast/parser.vp @@ -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 diff --git a/includes/w32/win32base.vp b/includes/w32/win32base.vp index e17efd8..aba48d3 100644 --- a/includes/w32/win32base.vp +++ b/includes/w32/win32base.vp @@ -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 diff --git a/includes/w32/win32console.vp b/includes/w32/win32console.vp index 65ae1a1..b7a7113 100644 --- a/includes/w32/win32console.vp +++ b/includes/w32/win32console.vp @@ -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 diff --git a/includes/w32/win32file.vp b/includes/w32/win32file.vp index fabc83e..4fcbfb0 100644 --- a/includes/w32/win32file.vp +++ b/includes/w32/win32file.vp @@ -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 diff --git a/includes/w32/win32memory.vp b/includes/w32/win32memory.vp index 7ffa93e..ebeb811 100644 --- a/includes/w32/win32memory.vp +++ b/includes/w32/win32memory.vp @@ -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 diff --git a/includes/w32/win32process.vp b/includes/w32/win32process.vp index 0dd2544..89ed3e3 100644 --- a/includes/w32/win32process.vp +++ b/includes/w32/win32process.vp @@ -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 diff --git a/includes/w32/win32sync.vp b/includes/w32/win32sync.vp index 2f7433a..a054423 100644 --- a/includes/w32/win32sync.vp +++ b/includes/w32/win32sync.vp @@ -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 diff --git a/includes/w32/winsock2.vp b/includes/w32/winsock2.vp index 48b58da..990b248 100644 --- a/includes/w32/winsock2.vp +++ b/includes/w32/winsock2.vp @@ -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 \ No newline at end of file +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 \ No newline at end of file