Home | History | Annotate | Download | only in include
      1 /**
      2  * This file is part of the mingw-w64 runtime package.
      3  * No warranty is given; refer to the file DISCLAIMER within this package.
      4  */
      5 #ifndef _PROCESSTHREADSAPI_H_
      6 #define _PROCESSTHREADSAPI_H_
      7 
      8 #include <apiset.h>
      9 #include <apisetcconv.h>
     10 #include <minwindef.h>
     11 #include <minwinbase.h>
     12 
     13 #ifdef __cplusplus
     14 extern "C" {
     15 #endif
     16 
     17 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
     18 #ifndef FLS_OUT_OF_INDEXES
     19 #define FLS_OUT_OF_INDEXES ((DWORD)0xffffffff)
     20 #endif
     21 
     22 #define TLS_OUT_OF_INDEXES ((DWORD)0xffffffff)
     23 
     24   typedef struct _PROCESS_INFORMATION {
     25     HANDLE hProcess;
     26     HANDLE hThread;
     27     DWORD dwProcessId;
     28     DWORD dwThreadId;
     29   } PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
     30 
     31   typedef struct _STARTUPINFOA {
     32     DWORD cb;
     33     LPSTR lpReserved;
     34     LPSTR lpDesktop;
     35     LPSTR lpTitle;
     36     DWORD dwX;
     37     DWORD dwY;
     38     DWORD dwXSize;
     39     DWORD dwYSize;
     40     DWORD dwXCountChars;
     41     DWORD dwYCountChars;
     42     DWORD dwFillAttribute;
     43     DWORD dwFlags;
     44     WORD wShowWindow;
     45     WORD cbReserved2;
     46     LPBYTE lpReserved2;
     47     HANDLE hStdInput;
     48     HANDLE hStdOutput;
     49     HANDLE hStdError;
     50   } STARTUPINFOA, *LPSTARTUPINFOA;
     51 
     52   typedef struct _STARTUPINFOW {
     53     DWORD cb;
     54     LPWSTR lpReserved;
     55     LPWSTR lpDesktop;
     56     LPWSTR lpTitle;
     57     DWORD dwX;
     58     DWORD dwY;
     59     DWORD dwXSize;
     60     DWORD dwYSize;
     61     DWORD dwXCountChars;
     62     DWORD dwYCountChars;
     63     DWORD dwFillAttribute;
     64     DWORD dwFlags;
     65     WORD wShowWindow;
     66     WORD cbReserved2;
     67     LPBYTE lpReserved2;
     68     HANDLE hStdInput;
     69     HANDLE hStdOutput;
     70     HANDLE hStdError;
     71   } STARTUPINFOW, *LPSTARTUPINFOW;
     72 
     73   __MINGW_TYPEDEF_AW(STARTUPINFO)
     74   __MINGW_TYPEDEF_AW(LPSTARTUPINFO)
     75 
     76   typedef struct _PROC_THREAD_ATTRIBUTE_LIST *PPROC_THREAD_ATTRIBUTE_LIST, *LPPROC_THREAD_ATTRIBUTE_LIST;
     77 
     78   WINBASEAPI DWORD WINAPI QueueUserAPC (PAPCFUNC pfnAPC, HANDLE hThread, ULONG_PTR dwData);
     79   WINBASEAPI WINBOOL WINAPI GetProcessTimes (HANDLE hProcess, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime);
     80   WINBASEAPI DECLSPEC_NORETURN VOID WINAPI ExitProcess (UINT uExitCode);
     81   WINBASEAPI WINBOOL WINAPI TerminateProcess (HANDLE hProcess, UINT uExitCode);
     82   WINBASEAPI WINBOOL WINAPI GetExitCodeProcess (HANDLE hProcess, LPDWORD lpExitCode);
     83   WINBASEAPI WINBOOL WINAPI SwitchToThread (VOID);
     84   WINBASEAPI HANDLE WINAPI CreateRemoteThread (HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
     85   WINBASEAPI HANDLE WINAPI OpenThread (DWORD dwDesiredAccess, WINBOOL bInheritHandle, DWORD dwThreadId);
     86   WINBASEAPI WINBOOL WINAPI SetThreadPriorityBoost (HANDLE hThread, WINBOOL bDisablePriorityBoost);
     87   WINBASEAPI WINBOOL WINAPI GetThreadPriorityBoost (HANDLE hThread, PBOOL pDisablePriorityBoost);
     88   WINBASEAPI WINBOOL WINAPI TerminateThread (HANDLE hThread, DWORD dwExitCode);
     89   WINBASEAPI WINBOOL WINAPI SetProcessShutdownParameters (DWORD dwLevel, DWORD dwFlags);
     90   WINBASEAPI DWORD WINAPI GetProcessVersion (DWORD ProcessId);
     91   WINBASEAPI VOID WINAPI GetStartupInfoW (LPSTARTUPINFOW lpStartupInfo);
     92   WINADVAPI WINBOOL APIENTRY SetThreadToken (PHANDLE Thread, HANDLE Token);
     93   WINADVAPI WINBOOL WINAPI OpenProcessToken (HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle);
     94   WINADVAPI WINBOOL WINAPI OpenThreadToken (HANDLE ThreadHandle, DWORD DesiredAccess, WINBOOL OpenAsSelf, PHANDLE TokenHandle);
     95   WINBASEAPI WINBOOL WINAPI SetPriorityClass (HANDLE hProcess, DWORD dwPriorityClass);
     96   WINBASEAPI WINBOOL WINAPI SetThreadStackGuarantee (PULONG StackSizeInBytes);
     97   WINBASEAPI DWORD WINAPI GetPriorityClass (HANDLE hProcess);
     98   WINBASEAPI WINBOOL WINAPI ProcessIdToSessionId (DWORD dwProcessId, DWORD *pSessionId);
     99   WINBASEAPI DWORD WINAPI GetProcessId (HANDLE Process);
    100   WINBASEAPI DWORD WINAPI GetThreadId (HANDLE Thread);
    101   WINBASEAPI HANDLE WINAPI CreateRemoteThreadEx (HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, LPDWORD lpThreadId);
    102   WINBASEAPI WINBOOL WINAPI GetThreadContext (HANDLE hThread, LPCONTEXT lpContext);
    103   WINBASEAPI WINBOOL WINAPI SetThreadContext (HANDLE hThread, CONST CONTEXT *lpContext);
    104   WINBASEAPI WINBOOL WINAPI FlushInstructionCache (HANDLE hProcess, LPCVOID lpBaseAddress, SIZE_T dwSize);
    105   WINBASEAPI WINBOOL WINAPI GetThreadTimes (HANDLE hThread, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime);
    106   WINBASEAPI HANDLE WINAPI OpenProcess (DWORD dwDesiredAccess, WINBOOL bInheritHandle, DWORD dwProcessId);
    107   WINBASEAPI WINBOOL WINAPI GetProcessHandleCount (HANDLE hProcess, PDWORD pdwHandleCount);
    108   WINBASEAPI DWORD WINAPI GetCurrentProcessorNumber (VOID);
    109 
    110 #ifdef UNICODE
    111 #define GetStartupInfo GetStartupInfoW
    112 #endif
    113 
    114 #ifndef _APISET_EXPORTS_FILTER
    115   WINBASEAPI WINBOOL WINAPI CreateProcessA (LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
    116   WINBASEAPI WINBOOL WINAPI CreateProcessW (LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
    117 #define CreateProcess __MINGW_NAME_AW(CreateProcess)
    118 #endif
    119 
    120 #ifndef _APISET_EXPORTS_FILTER
    121   WINADVAPI WINBOOL WINAPI CreateProcessAsUserW (HANDLE hToken, LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
    122 
    123 #ifdef UNICODE
    124 #define CreateProcessAsUser CreateProcessAsUserW
    125 #endif
    126 #endif
    127 
    128 #if _WIN32_WINNT >= 0x0600
    129 #define PROCESS_AFFINITY_ENABLE_AUTO_UPDATE __MSABI_LONG(0x1U)
    130 #define PROC_THREAD_ATTRIBUTE_REPLACE_VALUE 0x00000001
    131 
    132   WINBASEAPI DWORD WINAPI GetProcessIdOfThread (HANDLE Thread);
    133   WINBASEAPI WINBOOL WINAPI InitializeProcThreadAttributeList (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, DWORD dwAttributeCount, DWORD dwFlags, PSIZE_T lpSize);
    134   WINBASEAPI VOID WINAPI DeleteProcThreadAttributeList (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList);
    135   WINBASEAPI WINBOOL WINAPI SetProcessAffinityUpdateMode (HANDLE hProcess, DWORD dwFlags);
    136   WINBASEAPI WINBOOL WINAPI QueryProcessAffinityUpdateMode (HANDLE hProcess, LPDWORD lpdwFlags);
    137   WINBASEAPI WINBOOL WINAPI UpdateProcThreadAttribute (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, DWORD dwFlags, DWORD_PTR Attribute, PVOID lpValue, SIZE_T cbSize, PVOID lpPreviousValue, PSIZE_T lpReturnSize);
    138 #endif
    139 #if _WIN32_WINNT >= 0x0601
    140   WINBASEAPI WINBOOL WINAPI GetThreadIdealProcessorEx (HANDLE hThread, PPROCESSOR_NUMBER lpIdealProcessor);
    141   WINBASEAPI VOID WINAPI GetCurrentProcessorNumberEx (PPROCESSOR_NUMBER ProcNumber);
    142 #endif
    143 #if _WIN32_WINNT >= 0x0602
    144   WINBASEAPI VOID WINAPI GetCurrentThreadStackLimits (PULONG_PTR LowLimit, PULONG_PTR HighLimit);
    145   WINBASEAPI WINBOOL WINAPI SetProcessMitigationPolicy (PROCESS_MITIGATION_POLICY MitigationPolicy, PVOID lpBuffer, SIZE_T dwLength);
    146   WINBASEAPI WINBOOL WINAPI GetProcessMitigationPolicy (HANDLE hProcess, PROCESS_MITIGATION_POLICY MitigationPolicy, PVOID lpBuffer, SIZE_T dwLength);
    147 #endif
    148 
    149 #endif
    150 
    151 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
    152   WINBASEAPI HANDLE WINAPI GetCurrentProcess (VOID);
    153   WINBASEAPI DWORD WINAPI GetCurrentProcessId (VOID);
    154   WINBASEAPI HANDLE WINAPI GetCurrentThread (VOID);
    155   WINBASEAPI DWORD WINAPI GetCurrentThreadId (VOID);
    156   WINBOOL WINAPI IsProcessorFeaturePresent (DWORD ProcessorFeature);
    157 #if _WIN32_WINNT >= 0x0600
    158   WINBASEAPI VOID WINAPI FlushProcessWriteBuffers (VOID);
    159 #endif
    160   WINBASEAPI HANDLE WINAPI CreateThread (LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
    161   WINBASEAPI WINBOOL WINAPI SetThreadPriority (HANDLE hThread, int nPriority);
    162   WINBASEAPI int WINAPI GetThreadPriority (HANDLE hThread);
    163   WINBASEAPI DECLSPEC_NORETURN VOID WINAPI ExitThread (DWORD dwExitCode);
    164   WINBASEAPI WINBOOL WINAPI GetExitCodeThread (HANDLE hThread, LPDWORD lpExitCode);
    165   WINBASEAPI DWORD WINAPI SuspendThread (HANDLE hThread);
    166   WINBASEAPI DWORD WINAPI ResumeThread (HANDLE hThread);
    167   WINBASEAPI DWORD WINAPI TlsAlloc (VOID);
    168   WINBASEAPI LPVOID WINAPI TlsGetValue (DWORD dwTlsIndex);
    169   WINBASEAPI WINBOOL WINAPI TlsSetValue (DWORD dwTlsIndex, LPVOID lpTlsValue);
    170   WINBASEAPI WINBOOL WINAPI TlsFree (DWORD dwTlsIndex);
    171 #if _WIN32_WINNT >= 0x0601
    172   WINBASEAPI WINBOOL WINAPI SetThreadIdealProcessorEx (HANDLE hThread, PPROCESSOR_NUMBER lpIdealProcessor, PPROCESSOR_NUMBER lpPreviousIdealProcessor);
    173 #endif
    174 
    175 #endif
    176 
    177 #ifdef __cplusplus
    178 }
    179 #endif
    180 #endif
    181