#ifdef _MSC_VER
#pragma once
#endif // _MSC_VER
#ifndef _PROCESSTHREADSAPI_H_
#define _PROCESSTHREADSAPI_H_
#include <apiset.h>
#include <apisetcconv.h>
#include <minwindef.h>
#include <minwinbase.h>
#ifdef __cplusplus
extern
"C"
{
#endif
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
typedef
struct
{
;
;
;
;
}
, *
, *
;
typedef
struct
{
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
}
, *
;
typedef
struct
{
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
}
, *
;
#ifdef UNICODE
typedef
;
typedef
;
#else
typedef STARTUPINFOA STARTUPINFO;
typedef LPSTARTUPINFOA LPSTARTUPINFO;
#endif // UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
(
);
#endif /* _WIN32_WINNT >= 0x0400 || _WIN32_WINDOWS > 0x0400 */
(
_Out_ LPFILETIME lpCreationTime,
_Out_ LPFILETIME lpExitTime,
_Out_ LPFILETIME lpKernelTime,
_Out_ LPFILETIME lpUserTime
);
(
);
(
);
(
);
(
);
(
);
(
);
_Ret_maybenull_
(
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ __drv_aliasesMem LPVOID lpParameter,
_In_ DWORD dwCreationFlags,
_Out_opt_ LPDWORD lpThreadId
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Ret_maybenull_
(
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ LPVOID lpParameter,
_In_ DWORD dwCreationFlags,
_Out_opt_ LPDWORD lpThreadId
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
(
);
(
);
_Ret_maybenull_
(
_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
);
(
);
(
_In_ BOOL bDisablePriorityBoost
);
(
_Out_ PBOOL pDisablePriorityBoost
);
int
(
);
(
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
(
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
_Success_(return != 0)
(
);
(
);
(
);
#ifndef TLS_OUT_OF_INDEXES
#define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF)
#endif
_Must_inspect_result_
(
);
(
);
(
_In_opt_ LPVOID lpTlsValue
);
(
);
(
_In_opt_ LPCSTR lpApplicationName,
_Inout_opt_ LPSTR lpCommandLine,
_In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ BOOL bInheritHandles,
_In_ DWORD dwCreationFlags,
_In_opt_ LPVOID lpEnvironment,
_In_opt_ LPCSTR lpCurrentDirectory,
_In_ LPSTARTUPINFOA lpStartupInfo,
_Out_ LPPROCESS_INFORMATION lpProcessInformation
);
(
_In_opt_ LPCWSTR lpApplicationName,
_Inout_opt_ LPWSTR lpCommandLine,
_In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ BOOL bInheritHandles,
_In_ DWORD dwCreationFlags,
_In_opt_ LPVOID lpEnvironment,
_In_opt_ LPCWSTR lpCurrentDirectory,
_In_ LPSTARTUPINFOW lpStartupInfo,
_Out_ LPPROCESS_INFORMATION lpProcessInformation
);
#ifdef UNICODE
#define CreateProcess CreateProcessW
#else
#define CreateProcess CreateProcessA
#endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
SetProcessShutdownParameters
(
);
(
);
(
_Out_ LPSTARTUPINFOW lpStartupInfo
);
#ifdef UNICODE
#define GetStartupInfo GetStartupInfoW
#endif
(
_In_opt_ LPCWSTR lpApplicationName,
_Inout_opt_ LPWSTR lpCommandLine,
_In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ BOOL bInheritHandles,
_In_ DWORD dwCreationFlags,
_In_opt_ LPVOID lpEnvironment,
_In_opt_ LPCWSTR lpCurrentDirectory,
_In_ LPSTARTUPINFOW lpStartupInfo,
_Out_ LPPROCESS_INFORMATION lpProcessInformation
);
#ifdef UNICODE
#define CreateProcessAsUser CreateProcessAsUserW
#endif
#if !defined(MIDL_PASS)
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
(
)
{
return
(
)(
) -
4
;
}
(
)
{
return
(
)(
) -
5
;
}
GetCurrentThreadEffectiveToken
(
)
{
return
(
)(
) -
6
;
}
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
#endif // !defined(MIDL_PASS)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
_Must_inspect_result_
(
);
(
_In_ HANDLE ProcessHandle,
_In_ DWORD DesiredAccess,
_Outptr_ PHANDLE TokenHandle
);
(
_In_ HANDLE ThreadHandle,
_In_ DWORD DesiredAccess,
_Outptr_ PHANDLE TokenHandle
);
(
_In_ DWORD dwPriorityClass
);
(
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
(
_Inout_ PULONG StackSizeInBytes
);
(
);
typedef
struct
_PROC_THREAD_ATTRIBUTE_LIST *
PPROC_THREAD_ATTRIBUTE_LIST
, *
LPPROC_THREAD_ATTRIBUTE_LIST
;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0501)
(
);
#endif // _WIN32_WINNT >= 0x0501
#if (_WIN32_WINNT >= 0x0502)
(
);
#endif // _WIN32_WINNT >= 0x0502
#if (_WIN32_WINNT >= 0x0600)
(
);
#endif // _WIN32_WINNT >= 0x0600
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#if (_WIN32_WINNT >= 0x0600)
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
(
);
_Success_(return != FALSE)
InitializeProcThreadAttributeList
(
_Out_writes_bytes_to_opt_(*lpSize,*lpSize) LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
LPPROC_THREAD_ATTRIBUTE_LIST
,
_In_ DWORD dwAttributeCount,
_Reserved_ DWORD dwFlags,
_When_(lpAttributeList == nullptr,_Out_) _When_(lpAttributeList != nullptr,_Inout_) PSIZE_T lpSize
);
DeleteProcThreadAttributeList
(
_Inout_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList
LPPROC_THREAD_ATTRIBUTE_LIST
);
#define PROCESS_AFFINITY_ENABLE_AUTO_UPDATE 0x00000001UL
SetProcessAffinityUpdateMode
(
);
QueryProcessAffinityUpdateMode
(
_Out_opt_ LPDWORD lpdwFlags
);
#define PROC_THREAD_ATTRIBUTE_REPLACE_VALUE 0x00000001
UpdateProcThreadAttribute
(
_Inout_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
LPPROC_THREAD_ATTRIBUTE_LIST
,
_In_ DWORD_PTR Attribute,
_In_reads_bytes_opt_(cbSize) PVOID lpValue,
_Out_writes_bytes_opt_(cbSize) PVOID lpPreviousValue,
_In_opt_ PSIZE_T lpReturnSize
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#endif // (_WIN32_WINNT >= 0x0600)
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Ret_maybenull_
(
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ LPVOID lpParameter,
_In_ DWORD dwCreationFlags,
_In_opt_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
LPPROC_THREAD_ATTRIBUTE_LIST
,
_Out_opt_ LPDWORD lpThreadId
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#if !defined(MIDL_PASS)
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0602)
GetCurrentThreadStackLimits
(
_Out_ PULONG_PTR LowLimit,
_Out_ PULONG_PTR HighLimit
);
#endif
(
_Inout_ LPCONTEXT lpContext
);
#if (_WIN32_WINNT >= 0x0602)
GetProcessMitigationPolicy
(
_In_ PROCESS_MITIGATION_POLICY MitigationPolicy,
PROCESS_MITIGATION_POLICY
,
_Out_writes_bytes_(dwLength) PVOID lpBuffer,
);
#endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
(
_In_ CONST CONTEXT* lpContext
);
#if (_WIN32_WINNT >= 0x0602)
SetProcessMitigationPolicy
(
_In_ PROCESS_MITIGATION_POLICY MitigationPolicy,
PROCESS_MITIGATION_POLICY
,
_In_reads_bytes_(dwLength) PVOID lpBuffer,
);
#endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#endif// defined(MIDL_PASS)
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
(
_In_reads_bytes_opt_(dwSize) LPCVOID lpBaseAddress,
);
(
_Out_ LPFILETIME lpCreationTime,
_Out_ LPFILETIME lpExitTime,
_Out_ LPFILETIME lpKernelTime,
_Out_ LPFILETIME lpUserTime
);
(
_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
);
IsProcessorFeaturePresent
(
_In_ DWORD ProcessorFeature
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#if (_WIN32_WINNT >= 0x0501)
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
(
_Out_ PDWORD pdwHandleCount
);
#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#pragma endregion
#endif // (_WIN32_WINNT >= 0x0501)
#if (_WIN32_WINNT >= 0x0502)
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
GetCurrentProcessorNumber
(
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#endif // (_WIN32_WINNT >= 0x0502)
#if (_WIN32_WINNT >= 0x0601)
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
SetThreadIdealProcessorEx
(
_In_ PPROCESSOR_NUMBER lpIdealProcessor,
_Out_opt_ PPROCESSOR_NUMBER lpPreviousIdealProcessor
);
GetThreadIdealProcessorEx
(
_Out_ PPROCESSOR_NUMBER lpIdealProcessor
);
GetCurrentProcessorNumberEx
(
_Out_ PPROCESSOR_NUMBER ProcNumber
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#endif // (_WIN32_WINNT >= 0x0601)
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
(
_Out_ PBOOL pDisablePriorityBoost
);
(
_In_ BOOL bDisablePriorityBoost
);
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
(
_Out_ PBOOL lpIOIsPending
);
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
(
_Out_opt_ PFILETIME lpIdleTime,
_Out_opt_ PFILETIME lpKernelTime,
_Out_opt_ PFILETIME lpUserTime
);
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
typedef
enum
{
,
,
,
,
}
;
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
typedef
struct
{
;
}
, *
;
(
_In_ THREAD_INFORMATION_CLASS ThreadInformationClass,
_Out_writes_bytes_(ThreadInformationSize) LPVOID ThreadInformation,
_In_ DWORD ThreadInformationSize
);
(
_In_ THREAD_INFORMATION_CLASS ThreadInformationClass,
_In_reads_bytes_(ThreadInformationSize) LPVOID ThreadInformation,
_In_ DWORD ThreadInformationSize
);
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10_RS3)
#define THREAD_POWER_THROTTLING_CURRENT_VERSION 1
#define THREAD_POWER_THROTTLING_EXECUTION_SPEED 0x1
#define THREAD_POWER_THROTTLING_VALID_FLAGS (THREAD_POWER_THROTTLING_EXECUTION_SPEED)
typedef
struct
_THREAD_POWER_THROTTLING_STATE
{
;
;
;
}
THREAD_POWER_THROTTLING_STATE
;
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN10_RS3)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE)
(
);
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE)
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
(
_In_ ULONG_PTR PolicyValue,
_Out_opt_ PULONG_PTR OldPolicyValue
);
(
_Out_ PULONG_PTR PolicyValue
);
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
(
_In_ DWORD dwIdealProcessor
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
typedef
enum
{
,
,
,
,
,
,
,
,
,
}
;
typedef
struct
{
;
;
;
;
}
, *
;
#define PME_CURRENT_VERSION 1
typedef
enum
_PROCESS_MEMORY_EXHAUSTION_TYPE
{
PMETypeFailFastOnCommitFailure
,
}
PROCESS_MEMORY_EXHAUSTION_TYPE
, *
PPROCESS_MEMORY_EXHAUSTION_TYPE
;
#define PME_FAILFAST_ON_COMMIT_FAIL_DISABLE 0x0
#define PME_FAILFAST_ON_COMMIT_FAIL_ENABLE 0x1
typedef
struct
_PROCESS_MEMORY_EXHAUSTION_INFO
{
;
;
PROCESS_MEMORY_EXHAUSTION_TYPE
;
;
}
PROCESS_MEMORY_EXHAUSTION_INFO
, *
PPROCESS_MEMORY_EXHAUSTION_INFO
;
#define PROCESS_POWER_THROTTLING_CURRENT_VERSION 1
#define PROCESS_POWER_THROTTLING_EXECUTION_SPEED 0x1
#define PROCESS_POWER_THROTTLING_VALID_FLAGS (PROCESS_POWER_THROTTLING_EXECUTION_SPEED)
typedef
struct
_PROCESS_POWER_THROTTLING_STATE
{
;
;
;
}
PROCESS_POWER_THROTTLING_STATE
, *
PPROCESS_POWER_THROTTLING_STATE
;
typedef
struct
{
;
}
PROCESS_PROTECTION_LEVEL_INFORMATION
;
#define PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND 0x1
#define PROCESS_LEAP_SECOND_INFO_VALID_FLAGS (PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND)
typedef
struct
_PROCESS_LEAP_SECOND_INFO
{
;
;
}
, *
PPROCESS_LEAP_SECOND_INFO
;
#if (_WIN32_WINNT >= 0x0602)
(
_In_ PROCESS_INFORMATION_CLASS ProcessInformationClass,
PROCESS_INFORMATION_CLASS
,
_In_reads_bytes_(ProcessInformationSize) LPVOID ProcessInformation,
_In_ DWORD ProcessInformationSize
);
(
_In_ PROCESS_INFORMATION_CLASS ProcessInformationClass,
PROCESS_INFORMATION_CLASS
,
_Out_writes_bytes_(ProcessInformationSize) LPVOID ProcessInformation,
_In_ DWORD ProcessInformationSize
);
#endif //(_WIN32_WINNT >= 0x0602)
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
_Success_(return != FALSE)
(
_Out_writes_bytes_to_opt_(BufferLength,*ReturnedLength) PSYSTEM_CPU_SET_INFORMATION Information,
PSYSTEM_CPU_SET_INFORMATION
,
_Always_(_Out_) PULONG ReturnedLength,
);
_Success_(return != FALSE)
(
_Out_writes_to_opt_(CpuSetIdCount,*RequiredIdCount) PULONG CpuSetIds,
_In_ ULONG CpuSetIdCount,
_Always_(_Out_) PULONG RequiredIdCount
);
_Success_(return != FALSE)
(
_In_reads_opt_(CpuSetIdCount) const ULONG* CpuSetIds,
);
_Success_(return != FALSE)
(
_Out_writes_to_opt_(CpuSetIdCount,*RequiredIdCount) PULONG CpuSetIds,
_In_ ULONG CpuSetIdCount,
_Always_(_Out_) PULONG RequiredIdCount
);
_Success_(return != FALSE)
(
_In_reads_(CpuSetIdCount) const ULONG* CpuSetIds,
);
#endif // (_WIN32_WINNT >= WIN32_WINNT_WIN10)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
(
_In_opt_ LPCSTR lpApplicationName,
_Inout_opt_ LPSTR lpCommandLine,
_In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ BOOL bInheritHandles,
_In_ DWORD dwCreationFlags,
_In_opt_ LPVOID lpEnvironment,
_In_opt_ LPCSTR lpCurrentDirectory,
_In_ LPSTARTUPINFOA lpStartupInfo,
_Out_ LPPROCESS_INFORMATION lpProcessInformation
);
#ifndef UNICODE
#define CreateProcessAsUser CreateProcessAsUserA
#endif
GetProcessShutdownParameters
(
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
(
_In_ PCWSTR lpThreadDescription
);
(
_Outptr_result_z_ PWSTR* ppszThreadDescription
);
#ifdef __cplusplus
}
#endif
#endif // _PROCESSTHREADSAPI_H_