📄 win2linux.h
字号:
WINBASEAPIBOOLWINAPIGetExitCodeThread( HANDLE hThread, LPDWORD lpExitCode );WINBASEAPIBOOLWINAPIGetThreadSelectorEntry( HANDLE hThread, DWORD dwSelector, LPLDT_ENTRY lpSelectorEntry );#define MAXCHAR 0x7f#define MAXIMUM_SUSPEND_COUNT MAXCHARDWORD ResumeThread(HANDLE hThread);DWORD SuspendThread(HANDLE hThread);//------------------------------// Handle APIs#define DUPLICATE_SAME_ACCESS 0#define SYNCHRONIZE 0WINBASEAPIBOOLWINAPICloseHandle( HANDLE hObject );WINBASEAPIBOOLWINAPIDuplicateHandle( HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lpTargetHandle, DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwOptions );WINBASEAPIBOOLWINAPIGetHandleInformation( HANDLE hObject, LPDWORD lpdwFlags );#define INFINITE 0xFFFFFFFFDWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds );DWORD WaitForMultipleObjects(DWORD nCount, CONST HANDLE *lpHandles, BOOL bWaitAll, DWORD dwMilliseconds); //--------------------------------------// Process APIs#define CREATE_NEW_CONSOLE 0typedef struct _PROCESS_INFORMATION { HANDLE hProcess; HANDLE hThread; DWORD dwProcessId; DWORD dwThreadId; } PROCESS_INFORMATION;typedef struct _STARTUPINFO { DWORD cb; LPTSTR lpReserved; LPTSTR lpDesktop; LPTSTR lpTitle; DWORD dwX; DWORD dwY; DWORD dwXSize; DWORD dwYSize; DWORD dwXCountChars; DWORD dwYCountChars; DWORD dwFillAttribute; DWORD dwFlags; WORD wShowWindow; WORD cbReserved2; LPBYTE lpReserved2; HANDLE hStdInput; HANDLE hStdOutput; HANDLE hStdError; } STARTUPINFO, *LPSTARTUPINFO;BOOL WINAPI GetProcessAffinityMask(HANDLE,PDWORD,PDWORD);BOOL WINAPI SetProcessAffinityMask(HANDLE,DWORD_PTR);WINBASEAPIDWORDWINAPIGetCurrentProcessId(VOID);WINBASEAPIHANDLEWINAPIGetCurrentProcess(VOID);WINBASEAPIHANDLEWINAPIOpenProcess(DWORD dwDesiredAccess, /* access flag */ BOOL bInheritHandle, /* handle inheritance flag */ DWORD dwProcessId); /* process identifier *///-------------------------------------------// Thread sync APIsWINBASEAPIVOIDWINAPIInitializeCriticalSection( LPCRITICAL_SECTION lpCriticalSection );WINBASEAPIVOIDWINAPIDeleteCriticalSection( LPCRITICAL_SECTION lpCriticalSection );WINBASEAPIVOIDWINAPIEnterCriticalSection( LPCRITICAL_SECTION lpCriticalSection );WINBASEAPIVOIDWINAPILeaveCriticalSection( LPCRITICAL_SECTION lpCriticalSection );WINBASEAPIHANDLEWINAPICreateMutex(LPSECURITY_ATTRIBUTES lpMutex_Attributes, BOOL bInitialOwner, LPCTSTR lpName);WINBASEAPIBOOLWINAPIReleaseMutex(HANDLE hMutex);WINBASEAPIHANDLEWINAPICreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCTSTR lpName);WINBASEAPIBOOLResetEvent (HANDLE hEvent); WINBASEAPIBOOLWINAPISetEvent (HANDLE hEvent);WINBASEAPIHANDLECreateSemaphore(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCTSTR lpName);WINBASEAPIBOOLReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount);//---------------------------------------// Misc#if !(defined _VA_LIST_DEFINED) typedef void* va_list;#define _VA_LIST_DEFINED /*Si*/ /*conflicts with typedef __gnuc_va_list va_list; in stdarg.h*/#endifVOID QueryPerformanceCounter(LARGE_INTEGER *v);VOID QueryPerformanceFrequency(LARGE_INTEGER *f);DWORD FormatMessage (DWORD dwFlags, LPVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPTSTR lpBuffer, DWORD nSize, va_list *Arguments);#define MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT) 0DWORD GetModuleFileName(HANDLE hModule, LPTSTR lpFilename, DWORD nSize);DWORD GetLastError(VOID); VOID SetLastError(DWORD dwErrCode); VOID Sleep(DWORD dwMilliseconds);#define FORMAT_MESSAGE_ALLOCATE_BUFFER 0#define FORMAT_MESSAGE_FROM_SYSTEM 1#define FORMAT_MESSAGE_FROM_STRING 3#define LANG_NEUTRAL 4#define SUBLANG_DEFAULT 5#define SEM_FAILCRITICALERRORS 0x0001#define SEM_NOGPFAULTERRORBOX 0x0002#define SEM_NOALIGNMENTFAULTEXCEPT 0x0004#define SEM_NOOPENFILEERRORBOX 0x8000UINT SetErrorMode(UINT uMode); /*#define PROCESSOR_INTEL_386 386#define PROCESSOR_INTEL_486 486#define PROCESSOR_INTEL_PENTIUM 586#define PROCESSOR_MIPS_R4000 4000#define PROCESSOR_ALPHA_21064 21064#define PROCESSOR_ARCHITECTURE_INTEL 0#define PROCESSOR_ARCHITECTURE_MIPS 1#define PROCESSOR_ARCHITECTURE_ALPHA 2#define PROCESSOR_ARCHITECTURE_PPC 3#define PROCESSOR_ARCHITECTURE_SPARC 4 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF*/WINBASEAPIVOIDWINAPIGetSystemInfo(LPSYSTEM_INFO lpSystemInfo); #define MAX_COMPUTERNAME_LENGTH MAXHOSTNAMELEN /* DUMMY */WINBASEAPIBOOLWINAPIGetComputerName(LPTSTR lpBuffer, LPDWORD nSize); BOOL SetEnvironmentVariable( LPCTSTR lpName, /* address of environment variable name */ LPCTSTR lpValue); /* address of new value for variable*/ DWORD GetEnvironmentVariable(LPCTSTR lpName, /* address of environment variable name */ LPTSTR lpBuffer, /* address of buffer for variable value */ DWORD nSize); /* size of buffer, in characters*/WINBASEAPI LPSTR WINAPI GetEnvironmentStrings( VOID );WINBASEAPI LPSTR WINAPI GetCommandLine( VOID );//int stricmp (const char* string1, const char* string2);DWORD WINAPI GetTickCount(void);//XXX: only use on i386 GNU system, need fix//LONG WINAPI InterlockedExchangeAdd( long *dst, long incr );extern inline LONG WINAPI InterlockedCompareExchange( PLONG dst, LONG xchg, LONG compare );extern inline LONG WINAPI InterlockedCompareExchange( PLONG dst, LONG xchg, LONG compare ){ LONG retval; __asm__ __volatile__( "lock; cmpxchgl %2,(%1)" : "=a" (retval) : "r" (dst), "r" (xchg), "0" (compare) : "memory" ); return retval;}extern inline LONG WINAPI InterlockedExchange( PLONG dst, LONG val );extern inline LONG WINAPI InterlockedExchange( PLONG dst, LONG val ){ LONG retval; __asm__ __volatile__( "lock; xchgl %0,(%1)" : "=r" (retval) :"r" (dst), "0" (val) : "memory" ); return retval;}extern inline LONG WINAPI InterlockedExchangeAdd( PLONG dst, LONG incr );extern inline LONG WINAPI InterlockedExchangeAdd( PLONG dst, LONG incr ){ LONG retval;#ifdef ARMV4L LONG a, b, c; __asm__ __volatile__( "0: \n\t" "ldr %0, [%3]\n\t" "add %1, %0, %4\n\t" "swp %2, %1, [%3]\n\t" "cmp %0, %2\n\t" "swpne %1, %2, [%3]\n\t" "bne 0b" : "=r" (a), "=r" (b), "=r" (c) : "r" (dst), "r" (incr) : "cc", "memory"); retval = a;#else __asm__ __volatile__( "lock; xaddl %0,(%1)" : "=r" (retval) : "r" (dst), "0" (incr) : "memory" );#endif return retval;}extern inline LONG WINAPI InterlockedIncrement( PLONG dst );extern inline LONG WINAPI InterlockedIncrement( PLONG dst ){ LONG ret; ret = InterlockedExchangeAdd( dst, 1 ) + 1; return ret;}extern inline LONG WINAPI InterlockedDecrement( PLONG dst );extern inline LONG WINAPI InterlockedDecrement( PLONG dst ){ LONG ret; ret = InterlockedExchangeAdd( dst, -1 ) - 1; return ret;}#define STATUS_WAIT_0 ((DWORD )0x00000000L)#define STATUS_TIMEOUT ((DWORD )0x00000102L)#define STATUS_PENDING ((DWORD )0x00000103L)#define INVALID_HANDLE_VALUE (HANDLE)-1#define INVALID_FILE_SIZE (DWORD)0xFFFFFFFF#define MAX_PATH 256#define FILE_BEGIN 0#define FILE_CURRENT 1#define FILE_END 2#define TIME_ZONE_ID_INVALID (DWORD)0xFFFFFFFF#define WAIT_FAILED (DWORD)0xFFFFFFFF#define WAIT_OBJECT_0 ((STATUS_WAIT_0 ) + 0 )#define WAIT_ABANDONED ((STATUS_ABANDONED_WAIT_0 ) + 0 )#define WAIT_ABANDONED_0 ((STATUS_ABANDONED_WAIT_0 ) + 0 )#define WAIT_TIMEOUT STATUS_TIMEOUT#define WAIT_IO_COMPLETION STATUS_USER_APC#define STILL_ACTIVE STATUS_PENDING#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR#define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION#define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION#define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW#define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION#define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION#define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT#define MoveMemory RtlMoveMemory#define CopyMemory RtlCopyMemory#define FillMemory RtlFillMemory#define ZeroMemory RtlZeroMemory#define RtlZeroMemory(a,b) memset(a,0,b)#define RtlCopyMemory(a,b,c) memcpy(a,b,c)#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -