📄 win2linux.h
字号:
/*
Copyright (c) 2008, Intel Corporation.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
* Neither the name of Intel Corporation nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
*/#ifndef MPSDK_WIN2LINUX_H#define MPSDK_WIN2LINUX_H/* * win2linux is a library to map some Windows' APIs to Linux native * APIs. * * $Id: win2linux.h,v 1.5 2005/12/22 06:05:13 nhu Exp $ * * */#include <pthread.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/time.h>#include <netinet/tcp.h>#include <sys/socket.h>#include <sys/mman.h>#include <netdb.h>#include <unistd.h>#include <stdarg.h>#undef queue#ifdef __cplusplusextern "C" {#endif#ifndef MAX#define MAX(a,b) ((a)<(b)?(b):(a))#endif#ifndef MIN#define MIN(a,b) ((a)<(b)?(a):(b))#endif#define _alloca alloca#define __stdcall//---------------------------------------------//Map basic Windows' types to Linux// Define this cast to NULL#define WINBASEAPI#define WINAPI#define near#define far#define FAR#define PASCAL#define NEAR#define __cdecl#define _DWORD_DEFINED#define WINBASEAPI#define RESTRICTED_POINTER// types definetypedef int SOCKET;typedef struct sockaddr_in SOCKADDR_IN;typedef wchar_t TCHAR;typedef unsigned char UCHAR;typedef unsigned long ULONG;typedef long HRESULT;typedef void *HKEY;typedef double DATE;typedef void* HINSTANCE;typedef HINSTANCE HMODULE;typedef signed __int64 LONG_PTR, *PLONG_PTR;typedef unsigned __int64 UINT_PTR, *PUINT_PTR, UINT64;typedef int INT_PTR, *PINT_PTR;typedef UINT_PTR WPARAM;typedef LONG_PTR LPARAM;typedef LONG_PTR LRESULT;typedef long *PLONG;#define CONST const#define VOID voidtypedef char CHAR;typedef short SHORT;typedef long LONG;typedef CHAR *PCHAR;typedef CHAR *LPCH, *PCH, *LPCTSTR;typedef CONST CHAR *LPCCH, *PCCH;typedef CHAR *NPSTR;typedef CHAR *LPSTR, *PSTR;typedef CHAR *LPTSTR;typedef CONST CHAR *LPCSTR, *PCSTR;typedef float FLOAT;typedef unsigned long DWORD, DWORD_PTR;typedef int BOOL;typedef unsigned char BYTE;typedef unsigned short WORD;typedef unsigned int UINT;typedef FLOAT *PFLOAT;typedef void *PVOID;typedef double DWORDLONG;typedef long long LONGLONG;typedef BOOL near *PBOOL;typedef BOOL far *LPBOOL;typedef BYTE near *PBYTE;typedef BYTE far *LPBYTE;typedef int near *PINT;typedef int far *LPINT;typedef WORD near *PWORD;typedef WORD far *LPWORD;typedef long far *LPLONG;typedef DWORD near *PDWORD;typedef DWORD far *LPDWORD;typedef void far *LPVOID;typedef CONST void far *LPCVOID;typedef void *HANDLE;typedef HANDLE FAR *LPHANDLE;typedef LPVOID LPLDT_ENTRY; /* DUMMY */typedef LPVOID LPSECURITY_ATTRIBUTES;typedef int SECURITY_ATTRIBUTES; /* DUMMY */typedef DWORD (WINAPI *PTHREAD_START_ROUTINE)( LPVOID lpThreadParameter );typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;//---------------------------// macro define#define TEXT(quote) L##quote#define _T(quote) L##quote//------------------------// error code define#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)#define FAILED(hr) ((HRESULT)(hr) < 0)#define S_OK ((HRESULT)0x00000000L)#define E_POINTER ((HRESULT)0x80004003L)#define E_FAIL ((HRESULT)0x80004005L)#define S_FALSE ((HRESULT)1L)//add end#ifndef TRUE#define TRUE 1#define FALSE 0#endiftypedef int (FAR WINAPI *FARPROC)(); typedef union _LARGE_INTEGER { struct { DWORD LowPart; LONG HighPart; } u; LONGLONG QuadPart;} LARGE_INTEGER;typedef LARGE_INTEGER *PLARGE_INTEGER;typedef union _ULARGE_INTEGER { DWORD LowPart; LONG HighPart; DWORDLONG QuadPart;} ULARGE_INTEGER;typedef ULARGE_INTEGER *PULARGE_INTEGER; typedef struct _LUID { DWORD LowPart; LONG HighPart;} LUID, *PLUID;typedef struct _FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime;} FILETIME, *PFILETIME, *LPFILETIME;typedef struct _LIST_ENTRY { struct _LIST_ENTRY * volatile Flink; struct _LIST_ENTRY * volatile Blink;} LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;typedef struct _SINGLE_LIST_ENTRY { struct _SINGLE_LIST_ENTRY *Next;} SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;#define RTL_CRITSECT_TYPE 0#define RTL_RESOURCE_TYPE 1typedef struct _RTL_CRITICAL_SECTION { // PRTL_CRITICAL_SECTION_DEBUG DebugInfo; LONG LockCount; LONG RecursionCount; HANDLE OwningThread; HANDLE LockSemaphore; DWORD Reserved;} RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION;typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;typedef struct _SYSTEM_INFO { union { DWORD dwOemId; WORD wProcessorArchitecture; WORD wReserved; }; DWORD dwPageSize; LPVOID lpMinimumApplicationAddress; LPVOID lpMaximumApplicationAddress; DWORD dwActiveProcessorMask; DWORD dwNumberOfProcessors; DWORD dwProcessorType; DWORD dwAllocationGranularity; WORD wProcessorLevel; WORD wProcessorRevision;} SYSTEM_INFO, *LPSYSTEM_INFO;//------------------------------------------// Dynamic library APIsWINBASEAPIHANDLEWINAPILoadLibrary(const char *Library);WINBASEAPIVOIDWINAPIFreeLibrary(HANDLE Library);WINBASEAPIVOID*WINAPIGetProcAddress(HANDLE Library,const char *FuncName);typedef struct _HandleInfo { DWORD handleType; /* handletype of this handle (see below)*/ void *obj; /* pointer to handled object*/ DWORD refcnt; }HandleInfo;typedef struct _Event_Struct_Typ { pthread_cond_t condition; pthread_mutex_t mutex; int count; BOOL State; BOOL Manual; }Event_Struct_Typ;/* not used yet*/#define HANDLETYPE_CONSOLE 0 // not supported#define HANDLETYPE_EVENTFILE 1#define HANDLETYPE_FILEMAPPING 2#define HANDLETYPE_MUTEX 3#define HANDLETYPE_NAMEDPIPE 4#define HANDLETYPE_PROCESS 5#define HANDLETYPE_SEMAPHORE 6#define HANDLETYPE_THREAD 7#define HANDLETYPE_TOKEN 8//-----------------------------// Thread APIs#define THR_SUSPENDED 0x1 /* DUMMY */#define thr_yield sched_yield#define CREATE_SUSPENDED THR_SUSPENDED /* DUMMY */#define CREATE_DETACHED 0x2 /* DUMMY */#define _beginthreadex (unsigned long)::CreateThread#define _endthreadex(ret) return retWINBASEAPIHANDLEWINAPICreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId );WINBASEAPIHANDLEWINAPICreateRemoteThread( HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId );WINBASEAPIHANDLEWINAPIGetCurrentThread( VOID );WINBASEAPIDWORDWINAPIGetCurrentThreadId( VOID );WINBASEAPIDWORDWINAPISetThreadAffinityMask( HANDLE hThread, DWORD dwThreadAffinityMask );WINBASEAPIBOOLWINAPISetThreadPriority( HANDLE hThread, int nPriority );WINBASEAPIintWINAPIGetThreadPriority( HANDLE hThread );WINBASEAPIBOOLWINAPIGetThreadTimes( HANDLE hThread, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime );WINBASEAPIVOIDWINAPIExitThread( DWORD dwExitCode );VOID ExitProcess(UINT uExitCode);WINBASEAPIBOOLWINAPITerminateThread( HANDLE hThread, DWORD dwExitCode );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -