Headers diff for advapi32.dll between 6.3.9600.17415-Windows 8.1 and 10.0.10586.63-Windows 10 1511 10586.494 versions



 comadmin.h (6.3.9600.17415-Windows 8.1)   comadmin.h (10.0.10586.63-Windows 10 1511 10586.494) 
/* this ALWAYS GENERATED file contains the definitions for the interfaces */ /* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 8.00.0603 */ /* File created by MIDL compiler version 8.00.0613 */
/* @@MIDL_FILE_HEADING( ) */ /* @@MIDL_FILE_HEADING( ) */
#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* verify that the <rpcndr.h> version is high enough to compile this file*/ /* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__ #ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500 #define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif #endif
/* verify that the <rpcsal.h> version is high enough to compile this file*/ /* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__ #ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100 #define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif #endif
#include "rpc.h" #include "rpc.h"
#include "rpcndr.h" #include "rpcndr.h"
#ifndef __RPCNDR_H_VERSION__ #ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h> #error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__ #endif /* __RPCNDR_H_VERSION__ */
#ifndef COM_NO_WINDOWS_H #ifndef COM_NO_WINDOWS_H
#include "windows.h" #include "windows.h"
#include "ole2.h" #include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/ #endif /*COM_NO_WINDOWS_H*/
#ifndef __comadmin_h__ #ifndef __comadmin_h__
#define __comadmin_h__ #define __comadmin_h__
#if defined(_MSC_VER) && (_MSC_VER >= 1020) #if defined(_MSC_VER) && (_MSC_VER >= 1020)
skipping to change at line 128 skipping to change at line 126
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#include <objbase.h> #include <objbase.h>
#ifndef DECLSPEC_UUID #ifndef DECLSPEC_UUID
#if (_MSC_VER >= 1100) && defined (__cplusplus) #if (_MSC_VER >= 1100) && defined (__cplusplus)
#define DECLSPEC_UUID(x) __declspec(uuid(x)) #define DECLSPEC_UUID(x) __declspec(uuid(x))
#else #else
#define DECLSPEC_UUID(x) #define DECLSPEC_UUID(x)
#endif #endif
#endif #endif
#pragma once #pragma once
#pragma warning(push)
#pragma warning(disable:4668)
#pragma once #pragma once
#pragma region Input Buffer SAL 1 compatibility macros #pragma region Input Buffer SAL 1 compatibility macros
#pragma endregion Input Buffer SAL 1 compatibility macros #pragma endregion Input Buffer SAL 1 compatibility macros
#pragma once #pragma once
#pragma once #pragma once
#pragma warning(pop)
extern RPC_IF_HANDLE __MIDL_itf_comadmin_0000_0000_v0_0_c_ifspec; extern RPC_IF_HANDLE __MIDL_itf_comadmin_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_comadmin_0000_0000_v0_0_s_ifspec; extern RPC_IF_HANDLE __MIDL_itf_comadmin_0000_0000_v0_0_s_ifspec;
#ifndef __ICOMAdminCatalog_INTERFACE_DEFINED__ #ifndef __ICOMAdminCatalog_INTERFACE_DEFINED__
#define __ICOMAdminCatalog_INTERFACE_DEFINED__ #define __ICOMAdminCatalog_INTERFACE_DEFINED__
/* interface ICOMAdminCatalog */ /* interface ICOMAdminCatalog */
/* [unique][helpstring][dual][uuid][object] */ /* [unique][helpstring][dual][uuid][object] */
 End of changes. 5 change blocks. 
4 lines changed or deleted 5 lines changed or added


 evntcons.h (6.3.9600.17415-Windows 8.1)   evntcons.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 27 skipping to change at line 27
Created the file. Created the file.
--*/ --*/
#ifndef _EVNTCONS_H_ #ifndef _EVNTCONS_H_
#define _EVNTCONS_H_ #define _EVNTCONS_H_
#pragma once #pragma once
#include <winapifamily.h> #include <winapifamily.h>
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#include <wmistr.h> #include <wmistr.h>
#include <evntrace.h> #include <evntrace.h>
#include <evntprov.h> #include <evntprov.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#if defined (_MSC_VER) #if defined (_MSC_VER)
skipping to change at line 55 skipping to change at line 55
#define EVENT_HEADER_EXT_TYPE_RELATED_ACTIVITYID 0x0001 #define EVENT_HEADER_EXT_TYPE_RELATED_ACTIVITYID 0x0001
#define EVENT_HEADER_EXT_TYPE_SID 0x0002 #define EVENT_HEADER_EXT_TYPE_SID 0x0002
#define EVENT_HEADER_EXT_TYPE_TS_ID 0x0003 #define EVENT_HEADER_EXT_TYPE_TS_ID 0x0003
#define EVENT_HEADER_EXT_TYPE_INSTANCE_INFO 0x0004 #define EVENT_HEADER_EXT_TYPE_INSTANCE_INFO 0x0004
#define EVENT_HEADER_EXT_TYPE_STACK_TRACE32 0x0005 #define EVENT_HEADER_EXT_TYPE_STACK_TRACE32 0x0005
#define EVENT_HEADER_EXT_TYPE_STACK_TRACE64 0x0006 #define EVENT_HEADER_EXT_TYPE_STACK_TRACE64 0x0006
#define EVENT_HEADER_EXT_TYPE_PEBS_INDEX 0x0007 #define EVENT_HEADER_EXT_TYPE_PEBS_INDEX 0x0007
#define EVENT_HEADER_EXT_TYPE_PMC_COUNTERS 0x0008 #define EVENT_HEADER_EXT_TYPE_PMC_COUNTERS 0x0008
#define EVENT_HEADER_EXT_TYPE_PSM_KEY 0x0009 #define EVENT_HEADER_EXT_TYPE_PSM_KEY 0x0009
#define EVENT_HEADER_EXT_TYPE_EVENT_KEY 0x000A
#define EVENT_HEADER_EXT_TYPE_EVENT_SCHEMA_TL 0x000B #define EVENT_HEADER_EXT_TYPE_EVENT_SCHEMA_TL 0x000B
#define EVENT_HEADER_EXT_TYPE_PROV_TRAITS 0x000C #define EVENT_HEADER_EXT_TYPE_PROV_TRAITS 0x000C
#define EVENT_HEADER_EXT_TYPE_PROCESS_START_KEY 0x000D #define EVENT_HEADER_EXT_TYPE_PROCESS_START_KEY 0x000D
#define EVENT_HEADER_EXT_TYPE_MAX 0x000E #define EVENT_HEADER_EXT_TYPE_MAX 0x000E
#ifndef EVENT_HEADER_EXTENDED_DATA_ITEM_DEF #ifndef EVENT_HEADER_EXTENDED_DATA_ITEM_DEF
#define EVENT_HEADER_EXTENDED_DATA_ITEM_DEF #define EVENT_HEADER_EXTENDED_DATA_ITEM_DEF
typedef struct _EVENT_HEADER_EXTENDED_DATA_ITEM { typedef struct _EVENT_HEADER_EXTENDED_DATA_ITEM {
USHORT Reserved1; // Reserved for internal use USHORT Reserved1; // Reserved for internal use
skipping to change at line 117 skipping to change at line 118
} EVENT_EXTENDED_ITEM_PEBS_INDEX, *PEVENT_EXTENDED_ITEM_PEBS_INDEX; } EVENT_EXTENDED_ITEM_PEBS_INDEX, *PEVENT_EXTENDED_ITEM_PEBS_INDEX;
typedef struct _EVENT_EXTENDED_ITEM_PMC_COUNTERS { typedef struct _EVENT_EXTENDED_ITEM_PMC_COUNTERS {
ULONG64 Counter[ANYSIZE_ARRAY]; ULONG64 Counter[ANYSIZE_ARRAY];
} EVENT_EXTENDED_ITEM_PMC_COUNTERS, *PEVENT_EXTENDED_ITEM_PMC_COUNTERS; } EVENT_EXTENDED_ITEM_PMC_COUNTERS, *PEVENT_EXTENDED_ITEM_PMC_COUNTERS;
typedef struct _EVENT_EXTENDED_ITEM_PROCESS_START_KEY { typedef struct _EVENT_EXTENDED_ITEM_PROCESS_START_KEY {
ULONG64 ProcessStartKey; ULONG64 ProcessStartKey;
} EVENT_EXTENDED_ITEM_PROCESS_START_KEY, *PEVENT_EXTENDED_ITEM_PROCESS_START_KEY ; } EVENT_EXTENDED_ITEM_PROCESS_START_KEY, *PEVENT_EXTENDED_ITEM_PROCESS_START_KEY ;
typedef struct _EVENT_EXTENDED_ITEM_EVENT_KEY {
ULONG64 Key;
} EVENT_EXTENDED_ITEM_EVENT_KEY, *PEVENT_EXTENDED_ITEM_EVENT_KEY;
#define EVENT_HEADER_PROPERTY_XML 0x0001 #define EVENT_HEADER_PROPERTY_XML 0x0001
#define EVENT_HEADER_PROPERTY_FORWARDED_XML 0x0002 #define EVENT_HEADER_PROPERTY_FORWARDED_XML 0x0002
#define EVENT_HEADER_PROPERTY_LEGACY_EVENTLOG 0x0004 #define EVENT_HEADER_PROPERTY_LEGACY_EVENTLOG 0x0004
#define EVENT_HEADER_PROPERTY_RELOGGABLE 0x0008
#define EVENT_HEADER_FLAG_EXTENDED_INFO 0x0001 #define EVENT_HEADER_FLAG_EXTENDED_INFO 0x0001
#define EVENT_HEADER_FLAG_PRIVATE_SESSION 0x0002 #define EVENT_HEADER_FLAG_PRIVATE_SESSION 0x0002
#define EVENT_HEADER_FLAG_STRING_ONLY 0x0004 #define EVENT_HEADER_FLAG_STRING_ONLY 0x0004
#define EVENT_HEADER_FLAG_TRACE_MESSAGE 0x0008 #define EVENT_HEADER_FLAG_TRACE_MESSAGE 0x0008
#define EVENT_HEADER_FLAG_NO_CPUTIME 0x0010 #define EVENT_HEADER_FLAG_NO_CPUTIME 0x0010
#define EVENT_HEADER_FLAG_32_BIT_HEADER 0x0020 #define EVENT_HEADER_FLAG_32_BIT_HEADER 0x0020
#define EVENT_HEADER_FLAG_64_BIT_HEADER 0x0040 #define EVENT_HEADER_FLAG_64_BIT_HEADER 0x0040
#define EVENT_HEADER_FLAG_CLASSIC_HEADER 0x0100 #define EVENT_HEADER_FLAG_CLASSIC_HEADER 0x0100
#define EVENT_HEADER_FLAG_PROCESSOR_INDEX 0x0200 #define EVENT_HEADER_FLAG_PROCESSOR_INDEX 0x0200
skipping to change at line 183 skipping to change at line 189
#endif #endif
#define EVENT_ENABLE_PROPERTY_SID 0x00000001 #define EVENT_ENABLE_PROPERTY_SID 0x00000001
#define EVENT_ENABLE_PROPERTY_TS_ID 0x00000002 #define EVENT_ENABLE_PROPERTY_TS_ID 0x00000002
#define EVENT_ENABLE_PROPERTY_STACK_TRACE 0x00000004 #define EVENT_ENABLE_PROPERTY_STACK_TRACE 0x00000004
#define EVENT_ENABLE_PROPERTY_PSM_KEY 0x00000008 #define EVENT_ENABLE_PROPERTY_PSM_KEY 0x00000008
#define EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 0x00000010 #define EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 0x00000010
#define EVENT_ENABLE_PROPERTY_PROVIDER_GROUP 0x00000020 #define EVENT_ENABLE_PROPERTY_PROVIDER_GROUP 0x00000020
#define EVENT_ENABLE_PROPERTY_ENABLE_KEYWORD_0 0x00000040 #define EVENT_ENABLE_PROPERTY_ENABLE_KEYWORD_0 0x00000040
#define EVENT_ENABLE_PROPERTY_PROCESS_START_KEY 0x00000080 #define EVENT_ENABLE_PROPERTY_PROCESS_START_KEY 0x00000080
#define EVENT_ENABLE_PROPERTY_EVENT_KEY 0x00000100
#define EVENT_ENABLE_PROPERTY_EXCLUDE_INPRIVATE 0x00000200
// //
// Consumer API // Consumer API
// //
#define PROCESS_TRACE_MODE_REAL_TIME 0x00000100 #define PROCESS_TRACE_MODE_REAL_TIME 0x00000100
#define PROCESS_TRACE_MODE_RAW_TIMESTAMP 0x00001000 #define PROCESS_TRACE_MODE_RAW_TIMESTAMP 0x00001000
#define PROCESS_TRACE_MODE_EVENT_RECORD 0x10000000 #define PROCESS_TRACE_MODE_EVENT_RECORD 0x10000000
FORCEINLINE FORCEINLINE
skipping to change at line 298 skipping to change at line 306
EventSecuritySetSACL, EventSecuritySetSACL,
EventSecurityAddDACL, EventSecurityAddDACL,
EventSecurityAddSACL, EventSecurityAddSACL,
EventSecurityMax EventSecurityMax
} EVENTSECURITYOPERATION; } EVENTSECURITYOPERATION;
#if (WINVER >= _WIN32_WINNT_LONGHORN) #if (WINVER >= _WIN32_WINNT_LONGHORN)
ULONG ULONG
EVNTAPI EVNTAPI
EventAccessControl( EventAccessControl(
IN LPGUID Guid, _In_ LPGUID Guid,
IN ULONG Operation, _In_ ULONG Operation,
IN PSID Sid, _In_ PSID Sid,
IN ULONG Rights, _In_ ULONG Rights,
IN BOOLEAN AllowOrDeny _In_ BOOLEAN AllowOrDeny
); );
#endif #endif
#if (WINVER >= _WIN32_WINNT_LONGHORN) #if (WINVER >= _WIN32_WINNT_LONGHORN)
ULONG ULONG
EVNTAPI EVNTAPI
EventAccessQuery( EventAccessQuery(
_In_ LPGUID Guid, _In_ LPGUID Guid,
_Out_writes_bytes_opt_(*BufferSize) PSECURITY_DESCRIPTOR Buffer, _Out_writes_bytes_opt_(*BufferSize) PSECURITY_DESCRIPTOR Buffer,
_Inout_ PULONG BufferSize _Inout_ PULONG BufferSize
); );
#endif #endif
#if (WINVER >= _WIN32_WINNT_LONGHORN) #if (WINVER >= _WIN32_WINNT_LONGHORN)
ULONG ULONG
EVNTAPI EVNTAPI
EventAccessRemove( EventAccessRemove(
IN LPGUID Guid _In_ LPGUID Guid
); );
#endif #endif
#if defined (_MSC_VER) #if defined (_MSC_VER)
#if _MSC_VER >= 1200 #if _MSC_VER >= 1200
#pragma warning(pop) // restore 4201,4214 #pragma warning(pop) // restore 4201,4214
#else #else
#pragma warning(default:4201) // nonstandard extension used : nameless struct/un ion #pragma warning(default:4201) // nonstandard extension used : nameless struct/un ion
#pragma warning(default:4214) // nonstandard extension used : bit field types ot her then int #pragma warning(default:4214) // nonstandard extension used : bit field types ot her then int
#endif #endif
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif #endif
 End of changes. 8 change blocks. 
9 lines changed or deleted 17 lines changed or added


 evntprov.h (6.3.9600.17415-Windows 8.1)   evntprov.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 77 skipping to change at line 77
#define EVENT_FILTER_TYPE_EXECUTABLE_NAME (0x80000008) #define EVENT_FILTER_TYPE_EXECUTABLE_NAME (0x80000008)
#define EVENT_FILTER_TYPE_PACKAGE_ID (0x80000010) #define EVENT_FILTER_TYPE_PACKAGE_ID (0x80000010)
#define EVENT_FILTER_TYPE_PACKAGE_APP_ID (0x80000020) // Package Relative A pp Id (PRAID) #define EVENT_FILTER_TYPE_PACKAGE_APP_ID (0x80000020) // Package Relative A pp Id (PRAID)
#define EVENT_FILTER_TYPE_PAYLOAD (0x80000100) #define EVENT_FILTER_TYPE_PAYLOAD (0x80000100)
#define EVENT_FILTER_TYPE_EVENT_ID (0x80000200) #define EVENT_FILTER_TYPE_EVENT_ID (0x80000200)
#define EVENT_FILTER_TYPE_STACKWALK (0x80001000) #define EVENT_FILTER_TYPE_STACKWALK (0x80001000)
#define EVENT_DATA_DESCRIPTOR_TYPE_NONE (0) #define EVENT_DATA_DESCRIPTOR_TYPE_NONE (0)
#define EVENT_DATA_DESCRIPTOR_TYPE_EVENT_METADATA (1) #define EVENT_DATA_DESCRIPTOR_TYPE_EVENT_METADATA (1)
#define EVENT_DATA_DESCRIPTOR_TYPE_PROVIDER_METADATA (2) #define EVENT_DATA_DESCRIPTOR_TYPE_PROVIDER_METADATA (2)
// #define EVENT_DATA_DESCRIPTOR_TYPE_TIMESTAMP_OVERRIDE (3) // Win10+ only #define EVENT_DATA_DESCRIPTOR_TYPE_TIMESTAMP_OVERRIDE (3)
//
// EVENT_WRITE_FLAG values are used in the Flag parameter of EventWriteEx and Et
wWriteEx.
//
//
// EVENT_WRITE_FLAG_NO_FAULTING is a Kernel mode only flag, that is only necessa
ry
// if in a no-paging-tolerant situation that calls ETW from low IRQL (below Disp
atch).
// It disables certain functionality of ETW that requires paging.
//
#define EVENT_WRITE_FLAG_NO_FAULTING 0x00000001
//
// EVENT_WRITE_FLAG_INPRIVATE indicates that an event should be dropped on any l
ogger
// the uses EVENT_ENABLE_PROPERTY_EXCLUDE_INPRIVATE.
//
#define EVENT_WRITE_FLAG_INPRIVATE 0x00000002
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4201) #pragma warning(disable:4201)
// //
// EVENT_DATA_DESCRIPTOR is used to pass in user data items // EVENT_DATA_DESCRIPTOR is used to pass in user data items
// in events. // in events.
// //
typedef struct _EVENT_DATA_DESCRIPTOR { typedef struct _EVENT_DATA_DESCRIPTOR {
ULONGLONG Ptr; // Pointer to data ULONGLONG Ptr; // Pointer to data
skipping to change at line 160 skipping to change at line 179
BOOLEAN FilterIn; BOOLEAN FilterIn;
UCHAR Reserved; UCHAR Reserved;
USHORT Count; USHORT Count;
USHORT Events[ANYSIZE_ARRAY]; USHORT Events[ANYSIZE_ARRAY];
} EVENT_FILTER_EVENT_ID, *PEVENT_FILTER_EVENT_ID; } EVENT_FILTER_EVENT_ID, *PEVENT_FILTER_EVENT_ID;
#ifndef MIDL_PASS #ifndef MIDL_PASS
typedef enum _EVENT_INFO_CLASS { typedef enum _EVENT_INFO_CLASS {
EventProviderBinaryTrackInfo, EventProviderBinaryTrackInfo,
// Enum value 1 is an available reserved value. It was used EventProviderSetEnableAllKeywords,
// temporarily in development but removed prior to release. EventProviderSetTraits,
EventProviderSetTraits = 2,
EventProviderUseDescriptorType, EventProviderUseDescriptorType,
MaxEventInfo MaxEventInfo
} EVENT_INFO_CLASS; } EVENT_INFO_CLASS;
#ifndef _ETW_KM_ #ifndef _ETW_KM_
// //
// Optional callback function that users provide // Optional callback function that users provide
// //
typedef typedef
VOID VOID
(NTAPI *PENABLECALLBACK) ( (NTAPI *PENABLECALLBACK) (
_In_ LPCGUID SourceId, _In_ LPCGUID SourceId,
_In_ ULONG IsEnabled, _In_ ULONG IsEnabled,
_In_ UCHAR Level, _In_ UCHAR Level,
_In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAnyKeyword,
_In_ ULONGLONG MatchAllKeyword, _In_ ULONGLONG MatchAllKeyword,
_In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData,
_Inout_opt_ PVOID CallbackContext _Inout_opt_ PVOID CallbackContext
skipping to change at line 186 skipping to change at line 205
_In_ ULONG IsEnabled, _In_ ULONG IsEnabled,
_In_ UCHAR Level, _In_ UCHAR Level,
_In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAnyKeyword,
_In_ ULONGLONG MatchAllKeyword, _In_ ULONGLONG MatchAllKeyword,
_In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData, _In_opt_ PEVENT_FILTER_DESCRIPTOR FilterData,
_Inout_opt_ PVOID CallbackContext _Inout_opt_ PVOID CallbackContext
); );
#ifndef _APISET_EVENTING #ifndef _APISET_EVENTING
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// //
// Registration APIs // Registration APIs
// //
#if (WINVER >= _WIN32_WINNT_VISTA) #if (WINVER >= _WIN32_WINNT_VISTA)
ULONG ULONG
EVNTAPI EVNTAPI
EventRegister( EventRegister(
_In_ LPCGUID ProviderId, _In_ LPCGUID ProviderId,
_In_opt_ PENABLECALLBACK EnableCallback, _In_opt_ PENABLECALLBACK EnableCallback,
_In_opt_ PVOID CallbackContext, _In_opt_ PVOID CallbackContext,
_Out_ PREGHANDLE RegHandle _Out_ PREGHANDLE RegHandle
); );
#endif #endif
skipping to change at line 223 skipping to change at line 243
ULONG ULONG
EVNTAPI EVNTAPI
EventSetInformation( EventSetInformation(
_In_ REGHANDLE RegHandle, _In_ REGHANDLE RegHandle,
_In_ EVENT_INFO_CLASS InformationClass, _In_ EVENT_INFO_CLASS InformationClass,
_In_reads_bytes_(InformationLength) PVOID EventInformation, _In_reads_bytes_(InformationLength) PVOID EventInformation,
_In_ ULONG InformationLength _In_ ULONG InformationLength
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
// //
// Control (Is Enabled) APIs // Control (Is Enabled) APIs
// //
#if (WINVER >= _WIN32_WINNT_VISTA) #if (WINVER >= _WIN32_WINNT_VISTA)
BOOLEAN BOOLEAN
EVNTAPI EVNTAPI
EventEnabled( EventEnabled(
_In_ REGHANDLE RegHandle, _In_ REGHANDLE RegHandle,
skipping to change at line 256 skipping to change at line 276
_In_ REGHANDLE RegHandle, _In_ REGHANDLE RegHandle,
_In_ UCHAR Level, _In_ UCHAR Level,
_In_ ULONGLONG Keyword _In_ ULONGLONG Keyword
); );
#endif #endif
// //
// Writing (Publishing/Logging) APIs // Writing (Publishing/Logging) APIs
// //
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (WINVER >= _WIN32_WINNT_VISTA) #if (WINVER >= _WIN32_WINNT_VISTA)
ULONG ULONG
EVNTAPI EVNTAPI
EventWrite( EventWrite(
_In_ REGHANDLE RegHandle, _In_ REGHANDLE RegHandle,
_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ PCEVENT_DESCRIPTOR EventDescriptor,
_In_ ULONG UserDataCount, _In_ ULONG UserDataCount,
_In_reads_opt_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData _In_reads_opt_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData
); );
skipping to change at line 286 skipping to change at line 306
EventWriteTransfer( EventWriteTransfer(
_In_ REGHANDLE RegHandle, _In_ REGHANDLE RegHandle,
_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ PCEVENT_DESCRIPTOR EventDescriptor,
_In_opt_ LPCGUID ActivityId, _In_opt_ LPCGUID ActivityId,
_In_opt_ LPCGUID RelatedActivityId, _In_opt_ LPCGUID RelatedActivityId,
_In_ ULONG UserDataCount, _In_ ULONG UserDataCount,
_In_reads_opt_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData _In_reads_opt_(UserDataCount) PEVENT_DATA_DESCRIPTOR UserData
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
ULONG ULONG
EVNTAPI EVNTAPI
EventWriteEx( EventWriteEx(
_In_ REGHANDLE RegHandle, _In_ REGHANDLE RegHandle,
_In_ PCEVENT_DESCRIPTOR EventDescriptor, _In_ PCEVENT_DESCRIPTOR EventDescriptor,
_In_ ULONG64 Filter, _In_ ULONG64 Filter,
_In_ ULONG Flags, _In_ ULONG Flags,
_In_opt_ LPCGUID ActivityId, _In_opt_ LPCGUID ActivityId,
_In_opt_ LPCGUID RelatedActivityId, _In_opt_ LPCGUID RelatedActivityId,
skipping to change at line 331 skipping to change at line 345
#if (WINVER >= _WIN32_WINNT_VISTA) #if (WINVER >= _WIN32_WINNT_VISTA)
ULONG ULONG
EVNTAPI EVNTAPI
EventActivityIdControl( EventActivityIdControl(
_In_ ULONG ControlCode, _In_ ULONG ControlCode,
_Inout_ LPGUID ActivityId _Inout_ LPGUID ActivityId
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#endif // _APISET_EVENTING #endif // _APISET_EVENTING
#endif // _ETW_KM_ #endif // _ETW_KM_
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// //
// Macros to create Event and Event Data Descriptors // Macros to create Event and Event Data Descriptors
// //
FORCEINLINE FORCEINLINE
VOID VOID
EventDataDescCreate( EventDataDescCreate(
_Out_ PEVENT_DATA_DESCRIPTOR EventDataDescriptor, _Out_ PEVENT_DATA_DESCRIPTOR EventDataDescriptor,
_In_reads_bytes_(DataSize) const VOID* DataPtr, _In_reads_bytes_(DataSize) const VOID* DataPtr,
_In_ ULONG DataSize _In_ ULONG DataSize
) )
{ {
EventDataDescriptor->Ptr = (ULONGLONG)(ULONG_PTR)DataPtr; EventDataDescriptor->Ptr = (ULONGLONG)(ULONG_PTR)DataPtr;
EventDataDescriptor->Size = DataSize; EventDataDescriptor->Size = DataSize;
EventDataDescriptor->Reserved = 0; EventDataDescriptor->Reserved = 0;
return; return;
} }
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
FORCEINLINE FORCEINLINE
VOID VOID
EventDescCreate( EventDescCreate(
_Out_ PEVENT_DESCRIPTOR EventDescriptor, _Out_ PEVENT_DESCRIPTOR EventDescriptor,
_In_ USHORT Id, _In_ USHORT Id,
_In_ UCHAR Version, _In_ UCHAR Version,
_In_ UCHAR Channel, _In_ UCHAR Channel,
_In_ UCHAR Level, _In_ UCHAR Level,
_In_ USHORT Task, _In_ USHORT Task,
skipping to change at line 557 skipping to change at line 571
PEVENT_DESCRIPTOR PEVENT_DESCRIPTOR
EventDescOrKeyword( EventDescOrKeyword(
_In_ PEVENT_DESCRIPTOR EventDescriptor, _In_ PEVENT_DESCRIPTOR EventDescriptor,
_In_ ULONGLONG Keyword _In_ ULONGLONG Keyword
) )
{ {
EventDescriptor->Keyword |= Keyword; EventDescriptor->Keyword |= Keyword;
return (EventDescriptor); return (EventDescriptor);
} }
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // MIDL_PASS #endif // MIDL_PASS
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 15 change blocks. 
25 lines changed or deleted 43 lines changed or added


 evntrace.h (6.3.9600.17415-Windows 8.1)   evntrace.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 27 skipping to change at line 27
#ifndef _EVNTRACE_ #ifndef _EVNTRACE_
#define _EVNTRACE_ #define _EVNTRACE_
#pragma once #pragma once
#if defined(_WINNT_) || defined(WINNT) #if defined(_WINNT_) || defined(WINNT)
#if !defined(NO_ETW_APP_DEPRECATION_WARNINGS) #if !defined(NO_ETW_APP_DEPRECATION_WARNINGS)
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WI NAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WI NAPI_PARTITION_DESKTOP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_SYSTEM)
#define ETW_APP_DECLSPEC_DEPRECATED __declspec(deprecated("This API is not recom mended for general usage in Windows Store Apps and may not be supported in futur e versions of Windows")) #define ETW_APP_DECLSPEC_DEPRECATED __declspec(deprecated("This API is not recom mended for general usage in Windows Store Apps and may not be supported in futur e versions of Windows"))
#else #else
#define ETW_APP_DECLSPEC_DEPRECATED #define ETW_APP_DECLSPEC_DEPRECATED
#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTIT ION(WINAPI_PARTITION_DESKTOP) #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTIT ION(WINAPI_PARTITION_DESKTOP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_SYSTE M)
#else #else
#define ETW_APP_DECLSPEC_DEPRECATED #define ETW_APP_DECLSPEC_DEPRECATED
#endif // NO_ETW_APP_DEPRECATION_WARNINGS #endif // NO_ETW_APP_DEPRECATION_WARNINGS
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#ifndef WMIAPI #ifndef WMIAPI
#ifndef MIDL_PASS #ifndef MIDL_PASS
#ifdef _WMI_SOURCE_ #ifdef _WMI_SOURCE_
#define WMIAPI __stdcall #define WMIAPI __stdcall
#else #else
#define WMIAPI DECLSPEC_IMPORT __stdcall #define WMIAPI DECLSPEC_IMPORT __stdcall
#endif // _WMI_SOURCE #endif // _WMI_SOURCE
#endif // MIDL_PASS #endif // MIDL_PASS
skipping to change at line 282 skipping to change at line 282
#define EVENT_TRACE_TYPE_CONFIG_IRQ 0x15 // IRQ assigned to devi ces #define EVENT_TRACE_TYPE_CONFIG_IRQ 0x15 // IRQ assigned to devi ces
#define EVENT_TRACE_TYPE_CONFIG_PNP 0x16 // PnP device info #define EVENT_TRACE_TYPE_CONFIG_PNP 0x16 // PnP device info
#define EVENT_TRACE_TYPE_CONFIG_IDECHANNEL 0x17 // Primary/Secondary ID E channel Configuration #define EVENT_TRACE_TYPE_CONFIG_IDECHANNEL 0x17 // Primary/Secondary ID E channel Configuration
#define EVENT_TRACE_TYPE_CONFIG_NUMANODE 0x18 // Numa configuration #define EVENT_TRACE_TYPE_CONFIG_NUMANODE 0x18 // Numa configuration
#define EVENT_TRACE_TYPE_CONFIG_PLATFORM 0x19 // Platform Configurati on #define EVENT_TRACE_TYPE_CONFIG_PLATFORM 0x19 // Platform Configurati on
#define EVENT_TRACE_TYPE_CONFIG_PROCESSORGROUP 0x1A // Processor Group Conf iguration #define EVENT_TRACE_TYPE_CONFIG_PROCESSORGROUP 0x1A // Processor Group Conf iguration
#define EVENT_TRACE_TYPE_CONFIG_PROCESSORNUMBER 0x1B // ProcessorIndex -> Pr ocNumber mapping #define EVENT_TRACE_TYPE_CONFIG_PROCESSORNUMBER 0x1B // ProcessorIndex -> Pr ocNumber mapping
#define EVENT_TRACE_TYPE_CONFIG_DPI 0x1C // Display DPI Configur ation #define EVENT_TRACE_TYPE_CONFIG_DPI 0x1C // Display DPI Configur ation
#define EVENT_TRACE_TYPE_CONFIG_CI_INFO 0x1D // Display System Code Integrity Information #define EVENT_TRACE_TYPE_CONFIG_CI_INFO 0x1D // Display System Code Integrity Information
#define EVENT_TRACE_TYPE_CONFIG_MACHINEID 0x1E // SQM Machine Id
#define EVENT_TRACE_TYPE_CONFIG_DEFRAG 0x1F // Logical Disk Defragm
enter Information
// //
// Event types for Optical IO subsystem // Event types for Optical IO subsystem
// //
#define EVENT_TRACE_TYPE_OPTICAL_IO_READ 0x37 #define EVENT_TRACE_TYPE_OPTICAL_IO_READ 0x37
#define EVENT_TRACE_TYPE_OPTICAL_IO_WRITE 0x38 #define EVENT_TRACE_TYPE_OPTICAL_IO_WRITE 0x38
#define EVENT_TRACE_TYPE_OPTICAL_IO_FLUSH 0x39 #define EVENT_TRACE_TYPE_OPTICAL_IO_FLUSH 0x39
#define EVENT_TRACE_TYPE_OPTICAL_IO_READ_INIT 0x3a #define EVENT_TRACE_TYPE_OPTICAL_IO_READ_INIT 0x3a
#define EVENT_TRACE_TYPE_OPTICAL_IO_WRITE_INIT 0x3b #define EVENT_TRACE_TYPE_OPTICAL_IO_WRITE_INIT 0x3b
skipping to change at line 328 skipping to change at line 330
#define EVENT_TRACE_FLAG_NETWORK_TCPIP 0x00010000 // tcpip send & receive #define EVENT_TRACE_FLAG_NETWORK_TCPIP 0x00010000 // tcpip send & receive
#define EVENT_TRACE_FLAG_REGISTRY 0x00020000 // registry calls #define EVENT_TRACE_FLAG_REGISTRY 0x00020000 // registry calls
#define EVENT_TRACE_FLAG_DBGPRINT 0x00040000 // DbgPrint(ex) Calls #define EVENT_TRACE_FLAG_DBGPRINT 0x00040000 // DbgPrint(ex) Calls
// //
// Enable flags for Kernel Events on Vista and above // Enable flags for Kernel Events on Vista and above
// //
#define EVENT_TRACE_FLAG_PROCESS_COUNTERS 0x00000008 // process perf counters #define EVENT_TRACE_FLAG_PROCESS_COUNTERS 0x00000008 // process perf counters
#define EVENT_TRACE_FLAG_CSWITCH 0x00000010 // context switches #define EVENT_TRACE_FLAG_CSWITCH 0x00000010 // context switches
#define EVENT_TRACE_FLAG_DPC 0x00000020 // deffered procedure ca lls #define EVENT_TRACE_FLAG_DPC 0x00000020 // deferred procedure ca lls
#define EVENT_TRACE_FLAG_INTERRUPT 0x00000040 // interrupts #define EVENT_TRACE_FLAG_INTERRUPT 0x00000040 // interrupts
#define EVENT_TRACE_FLAG_SYSTEMCALL 0x00000080 // system calls #define EVENT_TRACE_FLAG_SYSTEMCALL 0x00000080 // system calls
#define EVENT_TRACE_FLAG_DISK_IO_INIT 0x00000400 // physical disk IO init iation #define EVENT_TRACE_FLAG_DISK_IO_INIT 0x00000400 // physical disk IO init iation
#define EVENT_TRACE_FLAG_ALPC 0x00100000 // ALPC traces #define EVENT_TRACE_FLAG_ALPC 0x00100000 // ALPC traces
#define EVENT_TRACE_FLAG_SPLIT_IO 0x00200000 // split io traces (Volu meManager) #define EVENT_TRACE_FLAG_SPLIT_IO 0x00200000 // split io traces (Volu meManager)
#define EVENT_TRACE_FLAG_DRIVER 0x00800000 // driver delays #define EVENT_TRACE_FLAG_DRIVER 0x00800000 // driver delays
#define EVENT_TRACE_FLAG_PROFILE 0x01000000 // sample based profilin g #define EVENT_TRACE_FLAG_PROFILE 0x01000000 // sample based profilin g
#define EVENT_TRACE_FLAG_FILE_IO 0x02000000 // file IO #define EVENT_TRACE_FLAG_FILE_IO 0x02000000 // file IO
skipping to change at line 354 skipping to change at line 356
#define EVENT_TRACE_FLAG_DISPATCHER 0x00000800 // scheduler (ReadyThrea d) #define EVENT_TRACE_FLAG_DISPATCHER 0x00000800 // scheduler (ReadyThrea d)
#define EVENT_TRACE_FLAG_VIRTUAL_ALLOC 0x00004000 // VM operations #define EVENT_TRACE_FLAG_VIRTUAL_ALLOC 0x00004000 // VM operations
// //
// Enable flags for Kernel Events on Win8 and above // Enable flags for Kernel Events on Win8 and above
// //
#define EVENT_TRACE_FLAG_VAMAP 0x00008000 // map/unmap (excluding images) #define EVENT_TRACE_FLAG_VAMAP 0x00008000 // map/unmap (excluding images)
#define EVENT_TRACE_FLAG_NO_SYSCONFIG 0x10000000 // Do not do sys config rundown #define EVENT_TRACE_FLAG_NO_SYSCONFIG 0x10000000 // Do not do sys config rundown
// //
// Enable flags for Kernel Events on Threshold and above
//
#define EVENT_TRACE_FLAG_JOB 0x00080000 // job start & end
#define EVENT_TRACE_FLAG_DEBUG_EVENTS 0x00400000 // debugger events (brea
k/continue/...)
//
// Pre-defined Enable flags for everybody else // Pre-defined Enable flags for everybody else
// //
#define EVENT_TRACE_FLAG_EXTENSION 0x80000000 // Indicates more flags #define EVENT_TRACE_FLAG_EXTENSION 0x80000000 // Indicates more flags
#define EVENT_TRACE_FLAG_FORWARD_WMI 0x40000000 // Can forward to WMI #define EVENT_TRACE_FLAG_FORWARD_WMI 0x40000000 // Can forward to WMI
#define EVENT_TRACE_FLAG_ENABLE_RESERVE 0x20000000 // Reserved #define EVENT_TRACE_FLAG_ENABLE_RESERVE 0x20000000 // Reserved
// //
// Logger Mode flags // Logger Mode flags
// //
#define EVENT_TRACE_FILE_MODE_NONE 0x00000000 // Logfile is off #define EVENT_TRACE_FILE_MODE_NONE 0x00000000 // Logfile is off
skipping to change at line 965 skipping to change at line 973
} DUMMYUNIONNAME; } DUMMYUNIONNAME;
} EVENT_TRACE, *PEVENT_TRACE; } EVENT_TRACE, *PEVENT_TRACE;
#if _MSC_VER >= 1200 #if _MSC_VER >= 1200
#pragma warning(pop) #pragma warning(pop)
#endif #endif
#define EVENT_CONTROL_CODE_DISABLE_PROVIDER 0 #define EVENT_CONTROL_CODE_DISABLE_PROVIDER 0
#define EVENT_CONTROL_CODE_ENABLE_PROVIDER 1 #define EVENT_CONTROL_CODE_ENABLE_PROVIDER 1
#define EVENT_CONTROL_CODE_CAPTURE_STATE 2 #define EVENT_CONTROL_CODE_CAPTURE_STATE 2
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#if !defined(_EVNTRACE_KERNEL_MODE) #if !defined(_EVNTRACE_KERNEL_MODE)
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
typedef struct _EVENT_RECORD typedef struct _EVENT_RECORD
EVENT_RECORD, *PEVENT_RECORD; EVENT_RECORD, *PEVENT_RECORD;
typedef struct _EVENT_TRACE_LOGFILEW typedef struct _EVENT_TRACE_LOGFILEW
EVENT_TRACE_LOGFILEW, *PEVENT_TRACE_LOGFILEW; EVENT_TRACE_LOGFILEW, *PEVENT_TRACE_LOGFILEW;
typedef struct _EVENT_TRACE_LOGFILEA typedef struct _EVENT_TRACE_LOGFILEA
EVENT_TRACE_LOGFILEA, *PEVENT_TRACE_LOGFILEA; EVENT_TRACE_LOGFILEA, *PEVENT_TRACE_LOGFILEA;
skipping to change at line 1109 skipping to change at line 1117
#define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKA #define PEVENT_TRACE_BUFFER_CALLBACK PEVENT_TRACE_BUFFER_CALLBACKA
#define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEA #define EVENT_TRACE_LOGFILE EVENT_TRACE_LOGFILEA
#define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEA #define PEVENT_TRACE_LOGFILE PEVENT_TRACE_LOGFILEA
#define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEA #define KERNEL_LOGGER_NAME KERNEL_LOGGER_NAMEA
#define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEA #define GLOBAL_LOGGER_NAME GLOBAL_LOGGER_NAMEA
#define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEA #define EVENT_LOGGER_NAME EVENT_LOGGER_NAMEA
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#ifndef _APISET_EVENTING #ifndef _APISET_EVENTING
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// //
// Logger control APIs // Logger control APIs
// //
// //
// Use the routine below to start an event trace session // Use the routine below to start an event trace session
// //
// ULONG // ULONG
skipping to change at line 1145 skipping to change at line 1153
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
StartTraceW ( StartTraceW (
_Out_ PTRACEHANDLE TraceHandle, _Out_ PTRACEHANDLE TraceHandle,
_In_ LPCWSTR InstanceName, _In_ LPCWSTR InstanceName,
_Inout_ PEVENT_TRACE_PROPERTIES Properties _Inout_ PEVENT_TRACE_PROPERTIES Properties
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
StartTraceA ( StartTraceA (
_Out_ PTRACEHANDLE TraceHandle, _Out_ PTRACEHANDLE TraceHandle,
_In_ LPCSTR InstanceName, _In_ LPCSTR InstanceName,
_Inout_ PEVENT_TRACE_PROPERTIES Properties _Inout_ PEVENT_TRACE_PROPERTIES Properties
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// //
// Use the routine below to stop an event trace session // Use the routine below to stop an event trace session
// //
// //
// ULONG // ULONG
// StopTrace( // StopTrace(
// _In_ TRACEHANDLE TraceHandle, // _In_ TRACEHANDLE TraceHandle,
// _In_opt_ LPTSTR InstanceName, // _In_opt_ LPTSTR InstanceName,
skipping to change at line 1187 skipping to change at line 1195
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
StopTraceW ( StopTraceW (
_In_ TRACEHANDLE TraceHandle, _In_ TRACEHANDLE TraceHandle,
_In_opt_ LPCWSTR InstanceName, _In_opt_ LPCWSTR InstanceName,
_Inout_ PEVENT_TRACE_PROPERTIES Properties _Inout_ PEVENT_TRACE_PROPERTIES Properties
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
StopTraceA ( StopTraceA (
_In_ TRACEHANDLE TraceHandle, _In_ TRACEHANDLE TraceHandle,
skipping to change at line 1321 skipping to change at line 1329
FlushTraceA ( FlushTraceA (
_In_ TRACEHANDLE TraceHandle, _In_ TRACEHANDLE TraceHandle,
_In_opt_ LPCSTR InstanceName, _In_opt_ LPCSTR InstanceName,
_Inout_ PEVENT_TRACE_PROPERTIES Properties _Inout_ PEVENT_TRACE_PROPERTIES Properties
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// //
// Generic trace control routine // Generic trace control routine
// //
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
ControlTraceW ( ControlTraceW (
_In_ TRACEHANDLE TraceHandle, _In_ TRACEHANDLE TraceHandle,
_In_opt_ LPCWSTR InstanceName, _In_opt_ LPCWSTR InstanceName,
_Inout_ PEVENT_TRACE_PROPERTIES Properties, _Inout_ PEVENT_TRACE_PROPERTIES Properties,
_In_ ULONG ControlCode _In_ ULONG ControlCode
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
ControlTraceA ( ControlTraceA (
_In_ TRACEHANDLE TraceHandle, _In_ TRACEHANDLE TraceHandle,
skipping to change at line 1362 skipping to change at line 1370
// //
// ULONG // ULONG
// QueryAllTraces( // QueryAllTraces(
// _Out_writes_(PropertyArrayCount) PEVENT_TRACE_PROPERTIES *PropertyArray, // _Out_writes_(PropertyArrayCount) PEVENT_TRACE_PROPERTIES *PropertyArray,
// _In_ ULONG PropertyArrayCount, // _In_ ULONG PropertyArrayCount,
// _Out_ PULONG LoggerCount // _Out_ PULONG LoggerCount
// ); // );
// //
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
QueryAllTracesW ( QueryAllTracesW (
_Out_writes_(PropertyArrayCount) PEVENT_TRACE_PROPERTIES *PropertyArray, _Out_writes_(PropertyArrayCount) PEVENT_TRACE_PROPERTIES *PropertyArray,
_In_ ULONG PropertyArrayCount, _In_ ULONG PropertyArrayCount,
_Out_ PULONG LoggerCount _Out_ PULONG LoggerCount
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
QueryAllTracesA ( QueryAllTracesA (
_Out_writes_(PropertyArrayCount) PEVENT_TRACE_PROPERTIES *PropertyArray, _Out_writes_(PropertyArrayCount) PEVENT_TRACE_PROPERTIES *PropertyArray,
_In_ ULONG PropertyArrayCount, _In_ ULONG PropertyArrayCount,
_Out_ PULONG LoggerCount _Out_ PULONG LoggerCount
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
skipping to change at line 1411 skipping to change at line 1431
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion #pragma endregion
#endif // _APISET_EVENTING #endif // _APISET_EVENTING
typedef struct _EVENT_FILTER_DESCRIPTOR typedef struct _EVENT_FILTER_DESCRIPTOR
EVENT_FILTER_DESCRIPTOR, *PEVENT_FILTER_DESCRIPTOR; EVENT_FILTER_DESCRIPTOR, *PEVENT_FILTER_DESCRIPTOR;
#ifndef _APISET_EVENTING #ifndef _APISET_EVENTING
#pragma region Desktop Family #pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#if (WINVER >= _WIN32_WINNT_VISTA) #if (WINVER >= _WIN32_WINNT_VISTA)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
EnableTraceEx ( EnableTraceEx (
_In_ LPCGUID ProviderId, _In_ LPCGUID ProviderId,
_In_opt_ LPCGUID SourceId, _In_opt_ LPCGUID SourceId,
_In_ TRACEHANDLE TraceHandle, _In_ TRACEHANDLE TraceHandle,
_In_ ULONG IsEnabled, _In_ ULONG IsEnabled,
_In_ UCHAR Level, _In_ UCHAR Level,
_In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAnyKeyword,
_In_ ULONGLONG MatchAllKeyword, _In_ ULONGLONG MatchAllKeyword,
_In_ ULONG EnableProperty, _In_ ULONG EnableProperty,
_In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc _In_opt_ PEVENT_FILTER_DESCRIPTOR EnableFilterDesc
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion #pragma endregion
#endif // _APISET_EVENTING #endif // _APISET_EVENTING
#define ENABLE_TRACE_PARAMETERS_VERSION 1 #define ENABLE_TRACE_PARAMETERS_VERSION 1
#define ENABLE_TRACE_PARAMETERS_VERSION_2 2 #define ENABLE_TRACE_PARAMETERS_VERSION_2 2
typedef struct _ENABLE_TRACE_PARAMETERS_V1 { typedef struct _ENABLE_TRACE_PARAMETERS_V1 {
ULONG Version; ULONG Version;
ULONG EnableProperty; ULONG EnableProperty;
skipping to change at line 1458 skipping to change at line 1478
ULONG Version; ULONG Version;
ULONG EnableProperty; ULONG EnableProperty;
ULONG ControlFlags; ULONG ControlFlags;
GUID SourceId; GUID SourceId;
PEVENT_FILTER_DESCRIPTOR EnableFilterDesc; PEVENT_FILTER_DESCRIPTOR EnableFilterDesc;
ULONG FilterDescCount; ULONG FilterDescCount;
} ENABLE_TRACE_PARAMETERS, *PENABLE_TRACE_PARAMETERS; } ENABLE_TRACE_PARAMETERS, *PENABLE_TRACE_PARAMETERS;
#ifndef _APISET_EVENTING #ifndef _APISET_EVENTING
#pragma region Desktop Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
EnableTraceEx2 ( EnableTraceEx2 (
_In_ TRACEHANDLE TraceHandle, _In_ TRACEHANDLE TraceHandle,
_In_ LPCGUID ProviderId, _In_ LPCGUID ProviderId,
_In_ ULONG ControlCode, _In_ ULONG ControlCode,
_In_ UCHAR Level, _In_ UCHAR Level,
_In_ ULONGLONG MatchAnyKeyword, _In_ ULONGLONG MatchAnyKeyword,
_In_ ULONGLONG MatchAllKeyword, _In_ ULONGLONG MatchAllKeyword,
_In_ ULONG Timeout, _In_ ULONG Timeout,
_In_opt_ PENABLE_TRACE_PARAMETERS EnableParameters _In_opt_ PENABLE_TRACE_PARAMETERS EnableParameters
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#endif // _APISET_EVENTING #endif // _APISET_EVENTING
typedef enum _TRACE_QUERY_INFO_CLASS { typedef enum _TRACE_QUERY_INFO_CLASS {
TraceGuidQueryList, TraceGuidQueryList,
TraceGuidQueryInfo, TraceGuidQueryInfo,
TraceGuidQueryProcess, TraceGuidQueryProcess,
TraceStackTracingInfo, // Win7 TraceStackTracingInfo, // Win7
TraceSystemTraceEnableFlagsInfo, TraceSystemTraceEnableFlagsInfo,
TraceSampledProfileIntervalInfo, TraceSampledProfileIntervalInfo,
TraceProfileSourceConfigInfo, TraceProfileSourceConfigInfo,
TraceProfileSourceListInfo, TraceProfileSourceListInfo,
TracePmcEventListInfo, TracePmcEventListInfo,
TracePmcCounterListInfo, TracePmcCounterListInfo,
TraceSetDisallowList, TraceSetDisallowList,
TraceVersionInfo,
TraceGroupQueryList,
TraceGroupQueryInfo,
TraceDisallowListQuery,
MaxTraceSetInfoClass MaxTraceSetInfoClass
} TRACE_QUERY_INFO_CLASS, TRACE_INFO_CLASS; } TRACE_QUERY_INFO_CLASS, TRACE_INFO_CLASS;
#ifndef _APISET_EVENTING #ifndef _APISET_EVENTING
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (WINVER >= _WIN32_WINNT_VISTA) #if (WINVER >= _WIN32_WINNT_VISTA)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
EnumerateTraceGuidsEx ( EnumerateTraceGuidsEx (
_In_ TRACE_QUERY_INFO_CLASS TraceQueryInfoClass, _In_ TRACE_QUERY_INFO_CLASS TraceQueryInfoClass,
_In_reads_bytes_opt_(InBufferSize) PVOID InBuffer, _In_reads_bytes_opt_(InBufferSize) PVOID InBuffer,
_In_ ULONG InBufferSize, _In_ ULONG InBufferSize,
_Out_writes_bytes_opt_(OutBufferSize) PVOID OutBuffer, _Out_writes_bytes_opt_(OutBufferSize) PVOID OutBuffer,
_In_ ULONG OutBufferSize, _In_ ULONG OutBufferSize,
_Out_ PULONG ReturnLength _Out_ PULONG ReturnLength
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // _APISET_EVENTING #endif // _APISET_EVENTING
typedef struct _CLASSIC_EVENT_ID { typedef struct _CLASSIC_EVENT_ID {
GUID EventGuid; GUID EventGuid;
UCHAR Type; UCHAR Type;
UCHAR Reserved[7]; UCHAR Reserved[7];
} CLASSIC_EVENT_ID, *PCLASSIC_EVENT_ID; } CLASSIC_EVENT_ID, *PCLASSIC_EVENT_ID;
typedef struct _TRACE_PROFILE_INTERVAL { typedef struct _TRACE_PROFILE_INTERVAL {
ULONG Source; ULONG Source;
ULONG Interval; ULONG Interval;
} TRACE_PROFILE_INTERVAL, *PTRACE_PROFILE_INTERVAL; } TRACE_PROFILE_INTERVAL, *PTRACE_PROFILE_INTERVAL;
typedef struct _TRACE_VERSION_INFO {
UINT EtwTraceProcessingVersion;
UINT Reserved;
} TRACE_VERSION_INFO, *PTRACE_VERSION_INFO;
#ifndef _APISET_EVENTING #ifndef _APISET_EVENTING
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (WINVER >= _WIN32_WINNT_WIN7) #if (WINVER >= _WIN32_WINNT_WIN7)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
TraceSetInformation ( TraceSetInformation (
_In_ TRACEHANDLE SessionHandle, _In_ TRACEHANDLE SessionHandle,
_In_ TRACE_INFO_CLASS InformationClass, _In_ TRACE_INFO_CLASS InformationClass,
_In_reads_bytes_(InformationLength) PVOID TraceInformation, _In_reads_bytes_(InformationLength) PVOID TraceInformation,
_In_ ULONG InformationLength _In_ ULONG InformationLength
skipping to change at line 1562 skipping to change at line 1591
WMIAPI WMIAPI
TraceQueryInformation ( TraceQueryInformation (
_In_ TRACEHANDLE SessionHandle, _In_ TRACEHANDLE SessionHandle,
_In_ TRACE_INFO_CLASS InformationClass, _In_ TRACE_INFO_CLASS InformationClass,
_Out_writes_bytes_(InformationLength) PVOID TraceInformation, _Out_writes_bytes_(InformationLength) PVOID TraceInformation,
_In_ ULONG InformationLength, _In_ ULONG InformationLength,
_Out_opt_ PULONG ReturnLength _Out_opt_ PULONG ReturnLength
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
// //
// Data Provider APIs // Data Provider APIs
// //
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
CreateTraceInstanceId ( CreateTraceInstanceId (
_In_ HANDLE RegHandle, _In_ HANDLE RegHandle,
_Inout_ PEVENT_INSTANCE_INFO InstInfo _Inout_ PEVENT_INSTANCE_INFO InstInfo
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
// //
// Use the routine below to generate and record an event trace // Use the routine below to generate and record an event trace
// //
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
TraceEvent ( TraceEvent (
_In_ TRACEHANDLE TraceHandle, _In_ TRACEHANDLE TraceHandle,
_In_ PEVENT_TRACE_HEADER EventTrace _In_ PEVENT_TRACE_HEADER EventTrace
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
TraceEventInstance ( TraceEventInstance (
_In_ TRACEHANDLE TraceHandle, _In_ TRACEHANDLE TraceHandle,
_In_ PEVENT_INSTANCE_HEADER EventTrace, _In_ PEVENT_INSTANCE_HEADER EventTrace,
_In_ PEVENT_INSTANCE_INFO InstInfo, _In_ PEVENT_INSTANCE_INFO InstInfo,
_In_opt_ PEVENT_INSTANCE_INFO ParentInstInfo _In_opt_ PEVENT_INSTANCE_INFO ParentInstInfo
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// //
// Use the routine below to register a guid for tracing. // Use the routine below to register a guid for tracing.
// //
// //
// ULONG // ULONG
// RegisterTraceGuids( // RegisterTraceGuids(
// _In_ WMIDPREQUEST RequestAddress, // _In_ WMIDPREQUEST RequestAddress,
// _In_opt_ PVOID RequestContext, // _In_opt_ PVOID RequestContext,
skipping to change at line 1634 skipping to change at line 1681
_In_ WMIDPREQUEST RequestAddress, _In_ WMIDPREQUEST RequestAddress,
_In_opt_ PVOID RequestContext, _In_opt_ PVOID RequestContext,
_In_ LPCGUID ControlGuid, _In_ LPCGUID ControlGuid,
_In_ ULONG GuidCount, _In_ ULONG GuidCount,
_In_reads_opt_(GuidCount) PTRACE_GUID_REGISTRATION TraceGuidReg, _In_reads_opt_(GuidCount) PTRACE_GUID_REGISTRATION TraceGuidReg,
_In_opt_ LPCWSTR MofImagePath, _In_opt_ LPCWSTR MofImagePath,
_In_opt_ LPCWSTR MofResourceName, _In_opt_ LPCWSTR MofResourceName,
_Out_ PTRACEHANDLE RegistrationHandle _Out_ PTRACEHANDLE RegistrationHandle
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
RegisterTraceGuidsA ( RegisterTraceGuidsA (
_In_ WMIDPREQUEST RequestAddress, _In_ WMIDPREQUEST RequestAddress,
skipping to change at line 1668 skipping to change at line 1715
EnumerateTraceGuids ( EnumerateTraceGuids (
_Inout_updates_(PropertyArrayCount) PTRACE_GUID_PROPERTIES *GuidPropertiesAr ray, _Inout_updates_(PropertyArrayCount) PTRACE_GUID_PROPERTIES *GuidPropertiesAr ray,
_In_ ULONG PropertyArrayCount, _In_ ULONG PropertyArrayCount,
_Out_ PULONG GuidCount _Out_ PULONG GuidCount
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
UnregisterTraceGuids ( UnregisterTraceGuids (
_In_ TRACEHANDLE RegistrationHandle _In_ TRACEHANDLE RegistrationHandle
); );
EXTERN_C EXTERN_C
TRACEHANDLE TRACEHANDLE
skipping to change at line 1737 skipping to change at line 1784
); );
ETW_APP_DECLSPEC_DEPRECATED ETW_APP_DECLSPEC_DEPRECATED
EXTERN_C EXTERN_C
ULONG ULONG
WMIAPI WMIAPI
CloseTrace ( CloseTrace (
_In_ TRACEHANDLE TraceHandle _In_ TRACEHANDLE TraceHandle
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// Data Consumer APIs and structures start here // Data Consumer APIs and structures start here
// //
// //
skipping to change at line 1783 skipping to change at line 1830
_In_ LPCGUID pGuid _In_ LPCGUID pGuid
); );
// //
// The routines for tracing Messages follow // The routines for tracing Messages follow
// //
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
EXTERN_C EXTERN_C
ULONG ULONG
__cdecl __cdecl
TraceMessage ( TraceMessage (
_In_ TRACEHANDLE LoggerHandle, _In_ TRACEHANDLE LoggerHandle,
_In_ ULONG MessageFlags, _In_ ULONG MessageFlags,
_In_ LPCGUID MessageGuid, _In_ LPCGUID MessageGuid,
_In_ USHORT MessageNumber, _In_ USHORT MessageNumber,
... ...
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
EXTERN_C EXTERN_C
ULONG ULONG
TraceMessageVa ( TraceMessageVa (
_In_ TRACEHANDLE LoggerHandle, _In_ TRACEHANDLE LoggerHandle,
_In_ ULONG MessageFlags, _In_ ULONG MessageFlags,
_In_ LPCGUID MessageGuid, _In_ LPCGUID MessageGuid,
_In_ USHORT MessageNumber, _In_ USHORT MessageNumber,
_In_ va_list MessageArgList _In_ va_list MessageArgList
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // _APISET_EVENTING #endif // _APISET_EVENTING
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
#endif #endif
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#define INVALID_PROCESSTRACE_HANDLE ((TRACEHANDLE)INVALID_HANDLE_VALUE) #define INVALID_PROCESSTRACE_HANDLE ((TRACEHANDLE)INVALID_HANDLE_VALUE)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#ifndef _APISET_EVENTING #ifndef _APISET_EVENTING
// //
// //
// Define the encoding independent routines // Define the encoding independent routines
// //
#if defined(UNICODE) || defined(_UNICODE) #if defined(UNICODE) || defined(_UNICODE)
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#define RegisterTraceGuids RegisterTraceGuidsW #define RegisterTraceGuids RegisterTraceGuidsW
#define StartTrace StartTraceW #define StartTrace StartTraceW
#define ControlTrace ControlTraceW #define ControlTrace ControlTraceW
#if defined(__TRACE_W2K_COMPATIBLE) #if defined(__TRACE_W2K_COMPATIBLE)
#define StopTrace(a,b,c) ControlTraceW((a),(b),(c), \ #define StopTrace(a,b,c) ControlTraceW((a),(b),(c), \
EVENT_TRACE_CONTROL_STOP) EVENT_TRACE_CONTROL_STOP)
#define QueryTrace(a,b,c) ControlTraceW((a),(b),(c), \ #define QueryTrace(a,b,c) ControlTraceW((a),(b),(c), \
EVENT_TRACE_CONTROL_QUERY) EVENT_TRACE_CONTROL_QUERY)
#define UpdateTrace(a,b,c) ControlTraceW((a),(b),(c), \ #define UpdateTrace(a,b,c) ControlTraceW((a),(b),(c), \
skipping to change at line 1863 skipping to change at line 1910
#define StopTrace StopTraceW #define StopTrace StopTraceW
#define QueryTrace QueryTraceW #define QueryTrace QueryTraceW
#define UpdateTrace UpdateTraceW #define UpdateTrace UpdateTraceW
#endif #endif
#if (NTDDI_VERSION >= NTDDI_WINXP) #if (NTDDI_VERSION >= NTDDI_WINXP)
#define FlushTrace FlushTraceW #define FlushTrace FlushTraceW
#endif // NTDDI_VERSION >= NTDDI_WINXP #endif // NTDDI_VERSION >= NTDDI_WINXP
#define QueryAllTraces QueryAllTracesW #define QueryAllTraces QueryAllTracesW
#define OpenTrace OpenTraceW #define OpenTrace OpenTraceW
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP| WINAPI_PARTITION_SYSTEM) */
#pragma endregion #pragma endregion
#else #else
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#define RegisterTraceGuids RegisterTraceGuidsA #define RegisterTraceGuids RegisterTraceGuidsA
#define StartTrace StartTraceA #define StartTrace StartTraceA
#define ControlTrace ControlTraceA #define ControlTrace ControlTraceA
 End of changes. 42 change blocks. 
47 lines changed or deleted 99 lines changed or added


 lmserver.h (6.3.9600.17415-Windows 8.1)   lmserver.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 35 skipping to change at line 35
--*/ --*/
#ifndef _LMSERVER_ #ifndef _LMSERVER_
#define _LMSERVER_ #define _LMSERVER_
#if _MSC_VER > 1000 #if _MSC_VER > 1000
#pragma once #pragma once
#endif #endif
#include <winapifamily.h> #include <winapifamily.h>
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#include <winsvc.h> // SERVICE_STATUS_HANDLE #include <winsvc.h> // SERVICE_STATUS_HANDLE
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#include <lmcons.h> #include <lmcons.h>
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// Function Prototypes - SERVER // Function Prototypes - SERVER
// //
NET_API_STATUS NET_API_FUNCTION NET_API_STATUS NET_API_FUNCTION
NetServerEnum ( NetServerEnum (
_In_opt_ IN LMCSTR servername OPTIONAL, _In_opt_ IN LMCSTR servername OPTIONAL,
_In_ IN DWORD level, _In_ IN DWORD level,
_Outptr_result_buffer_(_Inexpressible_(entriesread)) OUT LPBYTE *bufptr, _Outptr_result_buffer_(_Inexpressible_(entriesread)) OUT LPBYTE *bufptr,
_In_ IN DWORD prefmaxlen, _In_ IN DWORD prefmaxlen,
skipping to change at line 77 skipping to change at line 83
_Outptr_result_buffer_(_Inexpressible_(*EntriesRead)) _Outptr_result_buffer_(_Inexpressible_(*EntriesRead))
LPBYTE *Bufptr, LPBYTE *Bufptr,
_In_ IN DWORD PrefMaxlen, _In_ IN DWORD PrefMaxlen,
_Out_ OUT LPDWORD EntriesRead, _Out_ OUT LPDWORD EntriesRead,
_Out_ OUT LPDWORD totalentries, _Out_ OUT LPDWORD totalentries,
_In_ IN DWORD servertype, _In_ IN DWORD servertype,
_In_opt_ IN LMCSTR domain OPTIONAL, _In_opt_ IN LMCSTR domain OPTIONAL,
_In_opt_ IN LMCSTR FirstNameToReturn OPTIONAL _In_opt_ IN LMCSTR FirstNameToReturn OPTIONAL
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Check_return_ _Check_return_
_Success_( return == 0 ) _Success_( return == 0 )
NET_API_STATUS NET_API_FUNCTION NET_API_STATUS NET_API_FUNCTION
NetServerGetInfo ( NetServerGetInfo (
_In_opt_ LMSTR servername, _In_opt_ LMSTR servername,
_In_ DWORD level, _In_ DWORD level,
_When_( level == 100, _Outptr_result_bytebuffer_(sizeof(SERVER_INFO_100)) ) _When_( level == 100, _Outptr_result_bytebuffer_(sizeof(SERVER_INFO_100)) )
_When_( level == 101, _Outptr_result_bytebuffer_(sizeof(SERVER_INFO_101)) ) _When_( level == 101, _Outptr_result_bytebuffer_(sizeof(SERVER_INFO_101)) )
_When_( level == 102, _Outptr_result_bytebuffer_(sizeof(SERVER_INFO_102)) ) _When_( level == 102, _Outptr_result_bytebuffer_(sizeof(SERVER_INFO_102)) )
LPBYTE *bufptr LPBYTE *bufptr
); );
_Check_return_ _Check_return_
NET_API_STATUS NET_API_FUNCTION NET_API_STATUS NET_API_FUNCTION
NetServerSetInfo( NetServerSetInfo(
_In_opt_ LMSTR servername, _In_opt_ LMSTR servername,
_In_ DWORD level, _In_ DWORD level,
_When_( level == 102, _In_reads_bytes_(sizeof(SERVER_INFO_101)) ) _When_( level == 100, _In_reads_bytes_(sizeof(SERVER_INFO_100)) )
_When_( level == 101, _In_reads_bytes_(sizeof(SERVER_INFO_101)) )
_When_( level == 102, _In_reads_bytes_(sizeof(SERVER_INFO_102)) )
_When_( level == 402, _In_reads_bytes_(sizeof(SERVER_INFO_402)) ) _When_( level == 402, _In_reads_bytes_(sizeof(SERVER_INFO_402)) )
_When_( level == 403, _In_reads_bytes_(sizeof(SERVER_INFO_403)) ) _When_( level == 403, _In_reads_bytes_(sizeof(SERVER_INFO_403)) )
_When_( level == 1001, _In_reads_bytes_(sizeof(SERVER_INFO_1001)) )
_When_( level == 1002, _In_reads_bytes_(sizeof(SERVER_INFO_1002)) )
_When_( level == 1003, _In_reads_bytes_(sizeof(SERVER_INFO_1003)) )
_When_( level == 1004, _In_reads_bytes_(sizeof(SERVER_INFO_1004)) )
_When_( level == 1005, _In_reads_bytes_(sizeof(SERVER_INFO_1005)) ) _When_( level == 1005, _In_reads_bytes_(sizeof(SERVER_INFO_1005)) )
_When_( level == 1006, _In_reads_bytes_(sizeof(SERVER_INFO_1006)) )
_When_( level == 1009, _In_reads_bytes_(sizeof(SERVER_INFO_1009)) )
_When_( level == 1010, _In_reads_bytes_(sizeof(SERVER_INFO_1010)) ) _When_( level == 1010, _In_reads_bytes_(sizeof(SERVER_INFO_1010)) )
_When_( level == 1011, _In_reads_bytes_(sizeof(SERVER_INFO_1011)) )
_When_( level == 1016, _In_reads_bytes_(sizeof(SERVER_INFO_1016)) ) _When_( level == 1016, _In_reads_bytes_(sizeof(SERVER_INFO_1016)) )
_When_( level == 1017, _In_reads_bytes_(sizeof(SERVER_INFO_1017)) ) _When_( level == 1017, _In_reads_bytes_(sizeof(SERVER_INFO_1017)) )
_When_( level == 1018, _In_reads_bytes_(sizeof(SERVER_INFO_1018)) ) _When_( level == 1018, _In_reads_bytes_(sizeof(SERVER_INFO_1018)) )
_When_( level == 1021, _In_reads_bytes_(sizeof(SERVER_INFO_1021)) )
_When_( level == 1022, _In_reads_bytes_(sizeof(SERVER_INFO_1022)) )
_When_( level == 1028, _In_reads_bytes_(sizeof(SERVER_INFO_1028)) )
_When_( level == 1029, _In_reads_bytes_(sizeof(SERVER_INFO_1029)) )
_When_( level == 1037, _In_reads_bytes_(sizeof(SERVER_INFO_1037)) )
_When_( level == 1043, _In_reads_bytes_(sizeof(SERVER_INFO_1043)) )
LPBYTE buf, LPBYTE buf,
_Out_opt_ LPDWORD ParmError _Out_opt_ LPDWORD ParmError
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// Temporary hack function. // Temporary hack function.
// //
NET_API_STATUS NET_API_STATUS
NetServerSetInfoCommandLine ( NetServerSetInfoCommandLine (
_In_ WORD argc, _In_ WORD argc,
_In_reads_(argc) LMSTR argv[] _In_reads_(argc) LMSTR argv[]
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Check_return_ _Check_return_
_Success_( return == 0 || return == ERROR_MORE_DATA ) _Success_( return == 0 || return == ERROR_MORE_DATA )
NET_API_STATUS NET_API_FUNCTION NET_API_STATUS NET_API_FUNCTION
NetServerDiskEnum ( NetServerDiskEnum (
_In_opt_ LMSTR servername, _In_opt_ LMSTR servername,
_In_ DWORD level, _In_ DWORD level,
_Outptr_result_bytebuffer_((sizeof(TCHAR) * 3 * (*entriesread)) + sizeof(TCH AR)) LPBYTE *bufptr, _Outptr_result_bytebuffer_((sizeof(TCHAR) * 3 * (*entriesread)) + sizeof(TCH AR)) LPBYTE *bufptr,
_In_ DWORD prefmaxlen, _In_ DWORD prefmaxlen,
_Out_ LPDWORD entriesread, _Out_ LPDWORD entriesread,
_Out_ LPDWORD totalentries, _Out_ LPDWORD totalentries,
skipping to change at line 177 skipping to change at line 189
NetServerTransportAddEx( NetServerTransportAddEx(
_In_opt_ LMSTR servername, _In_opt_ LMSTR servername,
_In_ DWORD level, _In_ DWORD level,
_When_( level == 0, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_0)) ) _When_( level == 0, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_0)) )
_When_( level == 1, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_1)) ) _When_( level == 1, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_1)) )
_When_( level == 2, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_2)) ) _When_( level == 2, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_2)) )
_When_( level == 3, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_3)) ) _When_( level == 3, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_3)) )
LPBYTE bufptr LPBYTE bufptr
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
_Check_return_ _Check_return_
NET_API_STATUS NET_API_FUNCTION NET_API_STATUS NET_API_FUNCTION
NetServerTransportAddForInstance( NetServerTransportAddForInstance(
_In_opt_ LMSTR servername, _In_opt_ LMSTR servername,
_In_ DWORD level, _In_ DWORD level,
_When_( level == 0, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_0)) ) _When_( level == 0, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_0)) )
_When_( level == 1, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_1)) ) _When_( level == 1, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_1)) )
_When_( level == 2, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_2)) ) _When_( level == 2, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_2)) )
_When_( level == 3, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_3)) ) _When_( level == 3, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_3)) )
LPBYTE bufptr, LPBYTE bufptr,
_In_ LPDWORD InstanceHandle _In_ LPDWORD InstanceHandle
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Check_return_ _Check_return_
NET_API_STATUS NET_API_FUNCTION NET_API_STATUS NET_API_FUNCTION
NetServerTransportDel( NetServerTransportDel(
_In_opt_ LMSTR servername, _In_opt_ LMSTR servername,
_In_ DWORD level, _In_ DWORD level,
_When_( level == 0, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_0)) ) _When_( level == 0, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_0)) )
_When_( level == 1, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_1)) ) _When_( level == 1, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_1)) )
LPBYTE bufptr LPBYTE bufptr
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
_Check_return_ _Check_return_
NET_API_STATUS NET_API_FUNCTION NET_API_STATUS NET_API_FUNCTION
NetServerTransportDelForInstance( NetServerTransportDelForInstance(
_In_opt_ LMSTR servername, _In_opt_ LMSTR servername,
_In_ DWORD level, _In_ DWORD level,
_When_( level == 0, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_0)) ) _When_( level == 0, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_0)) )
_When_( level == 1, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_1)) ) _When_( level == 1, _In_reads_bytes_(sizeof(SERVER_TRANSPORT_INFO_1)) )
LPBYTE bufptr, LPBYTE bufptr,
_In_ LPDWORD InstanceHandle _In_ LPDWORD InstanceHandle
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Check_return_ _Check_return_
_Success_( return == 0 || return == ERROR_MORE_DATA ) _Success_( return == 0 || return == ERROR_MORE_DATA )
NET_API_STATUS NET_API_FUNCTION NET_API_STATUS NET_API_FUNCTION
NetServerTransportEnum ( NetServerTransportEnum (
_In_opt_ LMSTR servername, _In_opt_ LMSTR servername,
_In_ DWORD level, _In_ DWORD level,
_When_( level == 0, _Outptr_result_bytebuffer_(*entriesread * sizeof(SERVER_ TRANSPORT_INFO_0)) ) _When_( level == 0, _Outptr_result_bytebuffer_(*entriesread * sizeof(SERVER_ TRANSPORT_INFO_0)) )
_When_( level == 1, _Outptr_result_bytebuffer_(*entriesread * sizeof(SERVER_ TRANSPORT_INFO_1)) ) _When_( level == 1, _Outptr_result_bytebuffer_(*entriesread * sizeof(SERVER_ TRANSPORT_INFO_1)) )
_When_( level == 2, _Outptr_result_bytebuffer_(*entriesread * sizeof(SERVER_ TRANSPORT_INFO_2)) ) _When_( level == 2, _Outptr_result_bytebuffer_(*entriesread * sizeof(SERVER_ TRANSPORT_INFO_2)) )
LPBYTE *bufptr, LPBYTE *bufptr,
_In_ DWORD prefmaxlen, _In_ DWORD prefmaxlen,
_Out_ LPDWORD entriesread, _Out_ LPDWORD entriesread,
_Out_ LPDWORD totalentries, _Out_ LPDWORD totalentries,
_Inout_opt_ LPDWORD resume_handle _Inout_opt_ LPDWORD resume_handle
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// //
// The following function can be called by Win NT services to register // The following function can be called by Win NT services to register
// their service type. This function is exported from advapi32.dll. // their service type. This function is exported from advapi32.dll.
// Therefore, if this is the only function called by that service, then // Therefore, if this is the only function called by that service, then
// it is not necessary to link to netapi32.lib. // it is not necessary to link to netapi32.lib.
// //
BOOL NET_API_FUNCTION BOOL NET_API_FUNCTION
SetServiceBits( SetServiceBits(
IN SERVICE_STATUS_HANDLE hServiceStatus, IN SERVICE_STATUS_HANDLE hServiceStatus,
IN DWORD dwServiceBits, IN DWORD dwServiceBits,
IN BOOL bSetBitsOn, IN BOOL bSetBitsOn,
IN BOOL bUpdateImmediately IN BOOL bUpdateImmediately
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
// //
// Data Structures - SERVER // Data Structures - SERVER
// //
typedef struct _SERVER_INFO_100 { typedef struct _SERVER_INFO_100 {
DWORD sv100_platform_id; DWORD sv100_platform_id;
LMSTR sv100_name; LMSTR sv100_name;
} SERVER_INFO_100, *PSERVER_INFO_100, *LPSERVER_INFO_100; } SERVER_INFO_100, *PSERVER_INFO_100, *LPSERVER_INFO_100;
typedef struct _SERVER_INFO_101 { typedef struct _SERVER_INFO_101 {
skipping to change at line 1492 skipping to change at line 1540
// Server capability information // Server capability information
// //
#define SRV_SUPPORT_HASH_GENERATION 0x0001 #define SRV_SUPPORT_HASH_GENERATION 0x0001
#define SRV_HASH_GENERATION_ACTIVE 0x0002 #define SRV_HASH_GENERATION_ACTIVE 0x0002
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // _LMSERVER_ #endif // _LMSERVER_
 End of changes. 17 change blocks. 
17 lines changed or deleted 70 lines changed or added


 namedpipeapi.h (6.3.9600.17415-Windows 8.1)   namedpipeapi.h (10.0.10586.63-Windows 10 1511 10586.494) 
// begin_1_0 // begin_1_0
// begin_2_1
// begin_2_2
/******************************************************************************* * /******************************************************************************* *
* * * *
* namedpipeapi.h - ApiSet Contract for api-ms-win-core-namedpipe-l1-1-0 * * namedpipeapi.h - ApiSet Contract for api-ms-win-core-namedpipe-l1-1-0 *
* * * *
* Copyright (c) Microsoft Corporation. All rights reserved. * * Copyright (c) Microsoft Corporation. All rights reserved. *
* * * *
******************************************************************************** / ******************************************************************************** /
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma once #pragma once
skipping to change at line 25 skipping to change at line 27
#ifndef _NAMEDPIPE_H_ #ifndef _NAMEDPIPE_H_
#define _NAMEDPIPE_H_ #define _NAMEDPIPE_H_
#include <apiset.h> #include <apiset.h>
#include <apisetcconv.h> #include <apisetcconv.h>
#include <minwindef.h> #include <minwindef.h>
#include <minwinbase.h> #include <minwinbase.h>
/* APISET_NAME: api-ms-win-core-namedpipe-l1 */ /* APISET_NAME: api-ms-win-core-namedpipe-l1 */
#if !defined(RC_INVOKED)
#ifndef _APISET_NAMEDPIPE_VER #ifndef _APISET_NAMEDPIPE_VER
#ifdef _APISET_MINWIN_VERSION #ifdef _APISET_TARGET_VERSION
#if _APISET_MINWIN_VERSION > 0x0100 #if _APISET_TARGET_VERSION >= _APISET_TARGET_VERSION_WIN10_TH2
#define _APISET_NAMEDPIPE_VER 0x0202
#elif _APISET_TARGET_VERSION >= _APISET_TARGET_VERSION_WINTHRESHOLD
#define _APISET_NAMEDPIPE_VER 0x0201
#elif _APISET_TARGET_VERSION >= _APISET_TARGET_VERSION_WIN8
#define _APISET_NAMEDPIPE_VER 0x0200 #define _APISET_NAMEDPIPE_VER 0x0200
#elif _APISET_MINWIN_VERSION <= 0x0100 #elif _APISET_TARGET_VERSION == _APISET_TARGET_VERSION_WIN7
#define _APISET_NAMEDPIPE_VER 0x0100 #define _APISET_NAMEDPIPE_VER 0x0100
#endif #endif
#endif #endif
#endif #endif
#endif // !defined(RC_INVOKED)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
// end_1_0 // end_1_0
// end_2_1
// end_2_2
// begin_1_0 // begin_1_0
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CreatePipe( CreatePipe(
_Out_ PHANDLE hReadPipe, _Out_ PHANDLE hReadPipe,
_Out_ PHANDLE hWritePipe, _Out_ PHANDLE hWritePipe,
_In_opt_ LPSECURITY_ATTRIBUTES lpPipeAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpPipeAttributes,
_In_ DWORD nSize _In_ DWORD nSize
); );
skipping to change at line 152 skipping to change at line 164
_Out_writes_bytes_(ClientComputerNameLength) LPWSTR ClientComputerName, _Out_writes_bytes_(ClientComputerNameLength) LPWSTR ClientComputerName,
_In_ ULONG ClientComputerNameLength _In_ ULONG ClientComputerNameLength
); );
#endif // (_WIN32_WINNT >= 0x0600) #endif // (_WIN32_WINNT >= 0x0600)
#ifdef UNICODE #ifdef UNICODE
#define GetNamedPipeClientComputerName GetNamedPipeClientComputerNameW #define GetNamedPipeClientComputerName GetNamedPipeClientComputerNameW
#endif #endif
#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// end_1_0
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINADVAPI WINADVAPI
_Must_inspect_result_ _Must_inspect_result_
BOOL BOOL
WINAPI WINAPI
ImpersonateNamedPipeClient( ImpersonateNamedPipeClient(
_In_ HANDLE hNamedPipe _In_ HANDLE hNamedPipe
); );
#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM)
// end_1_0
// begin_2_1
#if !defined(_CONTRACT_GEN) || (_APISET_NAMEDPIPE_VER >= 0x0201)
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI
BOOL
WINAPI
GetNamedPipeInfo(
_In_ HANDLE hNamedPipe,
_Out_opt_ LPDWORD lpFlags,
_Out_opt_ LPDWORD lpOutBufferSize,
_Out_opt_ LPDWORD lpInBufferSize,
_Out_opt_ LPDWORD lpMaxInstances
);
WINBASEAPI
BOOL
WINAPI
GetNamedPipeHandleStateW(
_In_ HANDLE hNamedPipe,
_Out_opt_ LPDWORD lpState,
_Out_opt_ LPDWORD lpCurInstances,
_Out_opt_ LPDWORD lpMaxCollectionCount,
_Out_opt_ LPDWORD lpCollectDataTimeout,
_Out_writes_opt_(nMaxUserNameSize) LPWSTR lpUserName,
_In_ DWORD nMaxUserNameSize
);
#ifdef UNICODE
#define GetNamedPipeHandleState GetNamedPipeHandleStateW
#endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#endif // !defined(_CONTRACT_GEN) || (_APISET_NAMEDPIPE_VER >= 0x0201)
// end_2_1
// begin_2_2
#if !defined(_CONTRACT_GEN) || (_APISET_NAMEDPIPE_VER >= 0x0202)
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI
BOOL
WINAPI
CallNamedPipeW(
_In_ LPCWSTR lpNamedPipeName,
_In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer,
_In_ DWORD nInBufferSize,
_Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesRead) LPVOID lpOutBuffer,
_In_ DWORD nOutBufferSize,
_Out_ LPDWORD lpBytesRead,
_In_ DWORD nTimeOut
);
#ifdef UNICODE
#define CallNamedPipe CallNamedPipeW
#endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#endif // !defined(_CONTRACT_GEN) || (_APISET_NAMEDPIPE_VER >= 0x0202)
// end_2_2
// begin_1_0 // begin_1_0
// begin_2_1
// begin_2_2
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // _NAMEDPIPE_H_ #endif // _NAMEDPIPE_H_
// end_1_0 // end_1_0
// end_2_1
// end_2_2
 End of changes. 11 change blocks. 
11 lines changed or deleted 99 lines changed or added


 ntsecapi.h (6.3.9600.17415-Windows 8.1)   ntsecapi.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 19 skipping to change at line 19
Abstract: Abstract:
This module defines the Local Security Authority APIs. This module defines the Local Security Authority APIs.
Revision History: Revision History:
--*/ --*/
#include <winapifamily.h> #include <winapifamily.h>
#pragma region Desktop Family #if _MSC_VER >= 1200
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #pragma warning(push)
#pragma warning(disable:4820) // padding added after data member
#endif
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
// //
// All the subcategories are named as <Audit_CategoryName_SubCategoryName> // All the subcategories are named as <Audit_CategoryName_SubCategoryName>
// //
#ifdef DEFINE_GUID #ifdef DEFINE_GUID
/* 0cce9210-69ae-11d9-bed3-505054503030 */ /* 0cce9210-69ae-11d9-bed3-505054503030 */
#if !defined(INITGUID) || !defined(Audit_System_SecurityStateChange_defined) #if !defined(INITGUID) || !defined(Audit_System_SecurityStateChange_defined)
DEFINE_GUID( DEFINE_GUID(
skipping to change at line 708 skipping to change at line 713
DEFINE_GUID( DEFINE_GUID(
Audit_Logon_Claims, Audit_Logon_Claims,
0x0cce9247, 0x0cce9247,
0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30
); );
#ifdef INITGUID #ifdef INITGUID
#define Audit_Logon_Claims_defined #define Audit_Logon_Claims_defined
#endif #endif
#endif #endif
/* 0cce9248-69ae-11d9-bed3-505054503030 */
#if !defined(INITGUID) || !defined(Audit_DetailedTracking_PnpActivity_defined)
DEFINE_GUID(
Audit_DetailedTracking_PnpActivity,
0x0cce9248,
0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30
);
#ifdef INITGUID
#define Audit_DetailedTracking_PnpActivity_defined
#endif
#endif
/* 0cce9249-69ae-11d9-bed3-505054503030 */
#if !defined(INITGUID) || !defined(Audit_Logon_Groups_defined)
DEFINE_GUID(
Audit_Logon_Groups,
0x0cce9249,
0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30
);
#ifdef INITGUID
#define Audit_Logon_Groups_defined
#endif
#endif
#endif // DEFINE_GUID #endif // DEFINE_GUID
// //
// All categories are named as <Audit_CategoryName> // All categories are named as <Audit_CategoryName>
// //
#ifdef DEFINE_GUID #ifdef DEFINE_GUID
/* 69979848-797a-11d9-bed3-505054503030 */ /* 69979848-797a-11d9-bed3-505054503030 */
#if !defined(INITGUID) || !defined(Audit_System_defined) #if !defined(INITGUID) || !defined(Audit_System_defined)
skipping to change at line 834 skipping to change at line 863
#endif // DEFINE_GUID #endif // DEFINE_GUID
#ifndef _NTSECAPI_ #ifndef _NTSECAPI_
#define _NTSECAPI_ #define _NTSECAPI_
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#ifndef _NTDEF_ #ifndef _NTDEF_
typedef LONG NTSTATUS, *PNTSTATUS; typedef _Return_type_success_(return >= 0) LONG NTSTATUS, *PNTSTATUS;
#endif #endif
#include <lsalookup.h> #include <lsalookup.h>
#ifndef _NTLSA_IFS_ #ifndef _NTLSA_IFS_
// begin_ntifs // begin_ntifs
// //
// Security operation mode of the system is held in a control // Security operation mode of the system is held in a control
// longword. // longword.
// //
skipping to change at line 1334 skipping to change at line 1363
// //
// Received value: // Received value:
// //
// pointer to SE_ADT_ACCESS_REASON structure // pointer to SE_ADT_ACCESS_REASON structure
// //
// Results in: // Results in:
// //
// String representation of the access reaso n. // String representation of the access reaso n.
// //
// //
// Everything below this exists only in Windows Server 2012 and greater? // Everything below this exists only in Windows Server 2012 and greater
// //
SeAdtParmTypeStagingReason, // Produces 1 parameters SeAdtParmTypeStagingReason, // Produces 1 parameters
// //
// Received value: // Received value:
// //
// pointer to SE_ADT_ACCESS_REASON structure // pointer to SE_ADT_ACCESS_REASON structure
// //
// Results in: // Results in:
// //
skipping to change at line 1388 skipping to change at line 1417
// //
// SID (variable length) // SID (variable length)
// //
//Results in: //Results in:
// //
// param 1: Sid string (based on SID and no t derived from the LUID) // param 1: Sid string (based on SID and no t derived from the LUID)
// param 2: - // param 2: -
// param 3: - // param 3: -
// param 4: - // param 4: -
SeAdtParmTypeMultiSzString, //Produces 1 parameter
//Received value:
//
// PZZWSTR string
//
//Results in:
//
// Unicode string with each null replaced wi
th /r/n
SeAdtParmTypeLogonIdEx, //Produces 4 parameters.
//Received Value:
//
// LUID (fixed length)
//
//Results in:
//
// param 1: Sid string
// param 2: Username string
// param 3: domain name string
// param 4: Logon ID (Luid) string
} SE_ADT_PARAMETER_TYPE, *PSE_ADT_PARAMETER_TYPE; } SE_ADT_PARAMETER_TYPE, *PSE_ADT_PARAMETER_TYPE;
#ifndef GUID_DEFINED #ifndef GUID_DEFINED
#include <guiddef.h> #include <guiddef.h>
#endif /* GUID_DEFINED */ #endif /* GUID_DEFINED */
typedef struct _SE_ADT_OBJECT_TYPE { typedef struct _SE_ADT_OBJECT_TYPE {
GUID ObjectType; GUID ObjectType;
USHORT Flags; USHORT Flags;
#define SE_ADT_OBJECT_ONLY 0x1 #define SE_ADT_OBJECT_ONLY 0x1
skipping to change at line 1447 skipping to change at line 1497
ULONG AuditId; ULONG AuditId;
ULONG ParameterCount; ULONG ParameterCount;
ULONG Length; ULONG Length;
USHORT FlatSubCategoryId; USHORT FlatSubCategoryId;
USHORT Type; USHORT Type;
ULONG Flags; ULONG Flags;
SE_ADT_PARAMETER_ARRAY_ENTRY Parameters[ SE_MAX_AUDIT_PARAMETERS ]; SE_ADT_PARAMETER_ARRAY_ENTRY Parameters[ SE_MAX_AUDIT_PARAMETERS ];
} SE_ADT_PARAMETER_ARRAY, *PSE_ADT_PARAMETER_ARRAY; } SE_ADT_PARAMETER_ARRAY, *PSE_ADT_PARAMETER_ARRAY;
typedef struct _SE_ADT_PARAMETER_ARRAY_EX {
ULONG CategoryId;
ULONG AuditId;
ULONG Version;
ULONG ParameterCount;
ULONG Length;
USHORT FlatSubCategoryId;
USHORT Type;
ULONG Flags;
SE_ADT_PARAMETER_ARRAY_ENTRY Parameters[ SE_MAX_AUDIT_PARAMETERS ];
} SE_ADT_PARAMETER_ARRAY_EX, *PSE_ADT_PARAMETER_ARRAY_EX;
#define SE_ADT_PARAMETERS_SELF_RELATIVE 0x00000001 #define SE_ADT_PARAMETERS_SELF_RELATIVE 0x00000001
#define SE_ADT_PARAMETERS_SEND_TO_LSA 0x00000002 #define SE_ADT_PARAMETERS_SEND_TO_LSA 0x00000002
#define SE_ADT_PARAMETER_EXTENSIBLE_AUDIT 0x00000004 #define SE_ADT_PARAMETER_EXTENSIBLE_AUDIT 0x00000004
#define SE_ADT_PARAMETER_GENERIC_AUDIT 0x00000008 #define SE_ADT_PARAMETER_GENERIC_AUDIT 0x00000008
#define SE_ADT_PARAMETER_WRITE_SYNCHRONOUS 0x00000010 #define SE_ADT_PARAMETER_WRITE_SYNCHRONOUS 0x00000010
// //
// This macro only existed in Windows Server 2008 and after // This macro only existed in Windows Server 2008 and after
// //
skipping to change at line 2345 skipping to change at line 2409
#if (_WIN32_WINNT >= 0x0502) #if (_WIN32_WINNT >= 0x0502)
#define TRUST_ATTRIBUTE_CROSS_ORGANIZATION 0x00000010 // This trust is to a domain/forest which is not part of this enterprise #define TRUST_ATTRIBUTE_CROSS_ORGANIZATION 0x00000010 // This trust is to a domain/forest which is not part of this enterprise
#define TRUST_ATTRIBUTE_WITHIN_FOREST 0x00000020 // Trust is in ternal to this forest #define TRUST_ATTRIBUTE_WITHIN_FOREST 0x00000020 // Trust is in ternal to this forest
#define TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL 0x00000040 // Trust is to be treated as external for trust boundary purposes #define TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL 0x00000040 // Trust is to be treated as external for trust boundary purposes
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
#define TRUST_ATTRIBUTE_TRUST_USES_RC4_ENCRYPTION 0x00000080 // MIT trust w ith RC4 #define TRUST_ATTRIBUTE_TRUST_USES_RC4_ENCRYPTION 0x00000080 // MIT trust w ith RC4
#define TRUST_ATTRIBUTE_TRUST_USES_AES_KEYS 0x00000100 // Use AES key s to encrypte KRB TGTs #define TRUST_ATTRIBUTE_TRUST_USES_AES_KEYS 0x00000100 // Use AES key s to encrypte KRB TGTs
#endif #endif
#if (_WIN32_WINNT >= 0x0602) #if (_WIN32_WINNT >= 0x0602)
#define TRUST_ATTRIBUTE_CROSS_ORGANIZATION_NO_TGT_DELEGATION 0x00000200 // do n ot forward TGT to the other side of the trust which is not part of this enterpri se #define TRUST_ATTRIBUTE_CROSS_ORGANIZATION_NO_TGT_DELEGATION 0x00000200 // do n ot forward TGT to the other side of the trust which is not part of this enterpri se
#define TRUST_ATTRIBUTE_PIM_TRUST 0x00000400 // Outgoing tr ust to a PIM forest.
#endif #endif
// Trust attributes 0x00000040 through 0x00200000 are reserved for future use // Trust attributes 0x00000040 through 0x00200000 are reserved for future use
#else #else
// Trust attributes 0x00000010 through 0x00200000 are reserved for future use // Trust attributes 0x00000010 through 0x00200000 are reserved for future use
#endif #endif
// Trust attributes 0x00400000 through 0x00800000 were used previously (up to W2 K) and should not be re-used // Trust attributes 0x00400000 through 0x00800000 were used previously (up to W2 K) and should not be re-used
// Trust attributes 0x01000000 through 0x80000000 are reserved for user // Trust attributes 0x01000000 through 0x80000000 are reserved for user
#define TRUST_ATTRIBUTES_VALID 0xFF03FFFF #define TRUST_ATTRIBUTES_VALID 0xFF03FFFF
#endif #endif
#define TRUST_ATTRIBUTES_USER 0xFF000000 #define TRUST_ATTRIBUTES_USER 0xFF000000
skipping to change at line 3213 skipping to change at line 3278
#define _PASSWORD_NOTIFICATION_DEFINED #define _PASSWORD_NOTIFICATION_DEFINED
typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE) ( typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE) (
PUNICODE_STRING UserName, PUNICODE_STRING UserName,
ULONG RelativeId, ULONG RelativeId,
PUNICODE_STRING NewPassword PUNICODE_STRING NewPassword
); );
#define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify" #define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify"
typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE) ( typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE) (
); VOID
);
#define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify" #define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify"
#define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter" #define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter"
typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE) ( typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE) (
_In_ PUNICODE_STRING AccountName, _In_ PUNICODE_STRING AccountName,
_In_ PUNICODE_STRING FullName, _In_ PUNICODE_STRING FullName,
_In_ PUNICODE_STRING Password, _In_ PUNICODE_STRING Password,
_In_ BOOLEAN SetOperation _In_ BOOLEAN SetOperation
skipping to change at line 3572 skipping to change at line 3638
UNICODE_STRING LogonServer; UNICODE_STRING LogonServer;
UNICODE_STRING UserParameters; UNICODE_STRING UserParameters;
} MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE; } MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE;
// //
// Supplemental credentials structure used for passing credentials into // Supplemental credentials structure used for passing credentials into
// MSV1_0 from other packages // MSV1_0 from other packages
// //
#define MSV1_0_OWF_PASSWORD_LENGTH 16 #define MSV1_0_OWF_PASSWORD_LENGTH 16
#define MSV1_0_CRED_LM_PRESENT 0x1 #define MSV1_0_CRED_LM_PRESENT 0x0001
#define MSV1_0_CRED_NT_PRESENT 0x2 #define MSV1_0_CRED_NT_PRESENT 0x0002
#define MSV1_0_CRED_REMOVED 0x4 #define MSV1_0_CRED_REMOVED 0x0004
#define MSV1_0_CRED_VERSION 0 #define MSV1_0_CRED_CREDKEY_PRESENT 0x0008
#define MSV1_0_CRED_VERSION 0
#define MSV1_0_CRED_VERSION_V2 2
#define MSV1_0_CRED_VERSION_IUM 0xffff0001
#define MSV1_0_CRED_VERSION_INVALID 0xffffffff
typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL { typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL {
ULONG Version; ULONG Version;
ULONG Flags; ULONG Flags;
UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH]; UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH];
UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH]; UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH];
} MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL; } MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL;
// V2 Drops support for LM hash, but adds the credential key
typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL_V2 {
ULONG Version;
ULONG Flags;
UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH];
UCHAR CredentialKey[MSV1_0_OWF_PASSWORD_LENGTH];
} MSV1_0_SUPPLEMENTAL_CREDENTIAL_V2, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL_V2;
typedef struct _MSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL {
ULONG Version;
ULONG EncryptedCredsSize;
#ifdef MIDL_PASS
[size_is(EncryptedCredsSize)]
UCHAR EncryptedCreds[*];
#else
UCHAR EncryptedCreds[ANYSIZE_ARRAY];
#endif
} MSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL;
#define MSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL_SIZE(Creds) \
(FIELD_OFFSET(MSV1_0_IUM_SUPPLEMENTAL_CREDENTIAL, EncryptedCreds) + (Creds)-
>EncryptedCredsSize)
// //
// NTLM3 definitions. // NTLM3 definitions.
// //
#define MSV1_0_NTLM3_RESPONSE_LENGTH 16 #define MSV1_0_NTLM3_RESPONSE_LENGTH 16
#define MSV1_0_NTLM3_OWF_LENGTH 16 #define MSV1_0_NTLM3_OWF_LENGTH 16
// //
// this is the longest amount of time we'll allow challenge response // this is the longest amount of time we'll allow challenge response
// pairs to be used. Note that this also has to allow for worst case clock skew // pairs to be used. Note that this also has to allow for worst case clock skew
skipping to change at line 3706 skipping to change at line 3799
#endif #endif
#if (_WIN32_WINNT >= 0x0601) #if (_WIN32_WINNT >= 0x0601)
MsV1_0LookupToken, // Both submission and response MsV1_0LookupToken, // Both submission and response
#endif #endif
#if (_WIN32_WINNT >= 0x0602) #if (_WIN32_WINNT >= 0x0602)
MsV1_0ValidateAuth, MsV1_0ValidateAuth,
MsV1_0CacheLookupEx, // Both submission and response MsV1_0CacheLookupEx, // Both submission and response
MsV1_0GetCredentialKey, // Both submission and response MsV1_0GetCredentialKey, // Both submission and response
MsV1_0SetThreadOption, // Submission only MsV1_0SetThreadOption, // Submission only
#endif #endif
#if (_WIN32_WINNT >= 0x0604)
MsV1_0DecryptDpapiMasterKey, // Both submission and response
MsV1_0GetStrongCredentialKey, // Both submission and response
#endif
#if (_WIN32_WINNT >= 0x0A00)
MsV1_0TransferCred,
#endif
} MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE; } MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE;
typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST { typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST {
MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
UNICODE_STRING DomainName; UNICODE_STRING DomainName;
UNICODE_STRING AccountName; UNICODE_STRING AccountName;
UNICODE_STRING OldPassword; UNICODE_STRING OldPassword;
UNICODE_STRING NewPassword; UNICODE_STRING NewPassword;
BOOLEAN Impersonating; BOOLEAN Impersonating;
} MSV1_0_CHANGEPASSWORD_REQUEST, *PMSV1_0_CHANGEPASSWORD_REQUEST; } MSV1_0_CHANGEPASSWORD_REQUEST, *PMSV1_0_CHANGEPASSWORD_REQUEST;
skipping to change at line 3779 skipping to change at line 3879
#if(_WIN32_WINNT >= 0x0501) #if(_WIN32_WINNT >= 0x0501)
#define RtlGenRandom SystemFunction036 #define RtlGenRandom SystemFunction036
#endif #endif
#if(_WIN32_WINNT >= 0x0500) #if(_WIN32_WINNT >= 0x0500)
#define RtlEncryptMemory SystemFunction040 #define RtlEncryptMemory SystemFunction040
#define RtlDecryptMemory SystemFunction041 #define RtlDecryptMemory SystemFunction041
#endif #endif
#if(_WIN32_WINNT >= 0x0501) #if(_WIN32_WINNT >= 0x0501)
BOOLEAN BOOLEAN
__stdcall
RtlGenRandom( RtlGenRandom(
_Out_writes_bytes_(RandomBufferLength) PVOID RandomBuffer, _Out_writes_bytes_(RandomBufferLength) PVOID RandomBuffer,
_In_ ULONG RandomBufferLength _In_ ULONG RandomBufferLength
); );
#endif #endif
/* /*
* #if(_WIN32_WINNT >= 0x0500) -- Disabled until WinHTTP fixes their target vers ion. * #if(_WIN32_WINNT >= 0x0500) -- Disabled until WinHTTP fixes their target vers ion.
*/ */
skipping to change at line 3811 skipping to change at line 3912
#define RTL_ENCRYPT_OPTION_CROSS_PROCESS 0x01 #define RTL_ENCRYPT_OPTION_CROSS_PROCESS 0x01
// //
// Allow Encrypt/Decrypt across callers with same LogonId. // Allow Encrypt/Decrypt across callers with same LogonId.
// eg: encrypted buffer passed across LPC to another process which calls RtlDecr yptMemory whilst impersonating. // eg: encrypted buffer passed across LPC to another process which calls RtlDecr yptMemory whilst impersonating.
// //
#define RTL_ENCRYPT_OPTION_SAME_LOGON 0x02 #define RTL_ENCRYPT_OPTION_SAME_LOGON 0x02
NTSTATUS NTSTATUS
__stdcall
RtlEncryptMemory( RtlEncryptMemory(
_Inout_updates_bytes_(MemorySize) PVOID Memory, _Inout_updates_bytes_(MemorySize) PVOID Memory,
_In_ ULONG MemorySize, _In_ ULONG MemorySize,
_In_ ULONG OptionFlags _In_ ULONG OptionFlags
); );
NTSTATUS NTSTATUS
__stdcall
RtlDecryptMemory( RtlDecryptMemory(
_Inout_updates_bytes_(MemorySize) PVOID Memory, _Inout_updates_bytes_(MemorySize) PVOID Memory,
_In_ ULONG MemorySize, _In_ ULONG MemorySize,
_In_ ULONG OptionFlags _In_ ULONG OptionFlags
); );
//#endif //#endif
// Revision of the Kerberos Protocol. MS uses Version 5, Revision 6 // Revision of the Kerberos Protocol. MS uses Version 5, Revision 6
#define KERBEROS_VERSION 5 #define KERBEROS_VERSION 5
skipping to change at line 3862 skipping to change at line 3965
#define KERB_ETYPE_RC4_PLAIN_EXP -141 #define KERB_ETYPE_RC4_PLAIN_EXP -141
// //
// used internally by userapi.cxx // used internally by userapi.cxx
// //
#define KERB_ETYPE_AES128_CTS_HMAC_SHA1_96_PLAIN -148 #define KERB_ETYPE_AES128_CTS_HMAC_SHA1_96_PLAIN -148
#define KERB_ETYPE_AES256_CTS_HMAC_SHA1_96_PLAIN -149 #define KERB_ETYPE_AES256_CTS_HMAC_SHA1_96_PLAIN -149
// //
// Microsoft-specific value for sending the NTOWF back to the client via AS_REP.
//
#define KERB_ETYPE_NTLM_HASH -150
//
// Pkinit encryption types // Pkinit encryption types
// //
#define KERB_ETYPE_DSA_SHA1_CMS 9 #define KERB_ETYPE_DSA_SHA1_CMS 9
#define KERB_ETYPE_RSA_MD5_CMS 10 #define KERB_ETYPE_RSA_MD5_CMS 10
#define KERB_ETYPE_RSA_SHA1_CMS 11 #define KERB_ETYPE_RSA_SHA1_CMS 11
#define KERB_ETYPE_RC2_CBC_ENV 12 #define KERB_ETYPE_RC2_CBC_ENV 12
#define KERB_ETYPE_RSA_ENV 13 #define KERB_ETYPE_RSA_ENV 13
#define KERB_ETYPE_RSA_ES_OEAP_ENV 14 #define KERB_ETYPE_RSA_ES_OEAP_ENV 14
#define KERB_ETYPE_DES_EDE3_CBC_ENV 15 #define KERB_ETYPE_DES_EDE3_CBC_ENV 15
skipping to change at line 5193 skipping to change at line 5301
} PKU2U_CERTIFICATE_S4U_LOGON, *PPKU2U_CERTIFICATE_S4U_LOGON; } PKU2U_CERTIFICATE_S4U_LOGON, *PPKU2U_CERTIFICATE_S4U_LOGON;
#endif // _WIN32_WINNT #endif // _WIN32_WINNT
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* _NTSECAPI_ */ #endif /* _NTSECAPI_ */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#if _MSC_VER >= 1200
#pragma warning(pop)
#endif
 End of changes. 17 change blocks. 
10 lines changed or deleted 120 lines changed or added


 processthreadsapi.h (6.3.9600.17415-Windows 8.1)   processthreadsapi.h (10.0.10586.63-Windows 10 1511 10586.494) 
// begin_1_0 // begin_1_0
// begin_1_1 // begin_1_1
// begin_1_2 // begin_1_2
// begin_1_3
/******************************************************************************* **** /******************************************************************************* ****
* * * *
* processthreadsapi.h -- ApiSet Contract for api-ms-win-core-processthreads-l1 * * processthreadsapi.h -- ApiSet Contract for api-ms-win-core-processthreads-l1 *
* * * *
* Copyright (c) Microsoft Corporation. All rights reserved. * * Copyright (c) Microsoft Corporation. All rights reserved. *
* * * *
******************************************************************************** ***/ ******************************************************************************** ***/
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma once #pragma once
skipping to change at line 27 skipping to change at line 28
#ifndef _PROCESSTHREADSAPI_H_ #ifndef _PROCESSTHREADSAPI_H_
#define _PROCESSTHREADSAPI_H_ #define _PROCESSTHREADSAPI_H_
#include <apiset.h> #include <apiset.h>
#include <apisetcconv.h> #include <apisetcconv.h>
#include <minwindef.h> #include <minwindef.h>
#include <minwinbase.h> #include <minwinbase.h>
/* APISET_NAME: api-ms-win-core-processthreads-l1 */ /* APISET_NAME: api-ms-win-core-processthreads-l1 */
#if !defined(RC_INVOKED)
#ifndef _APISET_PROCESSTHREADS_VER #ifndef _APISET_PROCESSTHREADS_VER
#ifdef _APISET_MINWIN_VERSION #ifdef _APISET_TARGET_VERSION
#if _APISET_MINWIN_VERSION >= 0x0102 #if _APISET_TARGET_VERSION >= _APISET_TARGET_VERSION_WINTHRESHOLD
#define _APISET_PROCESSTHREADS_VER 0x0103
#elif _APISET_TARGET_VERSION >= _APISET_TARGET_VERSION_WINBLUE
#define _APISET_PROCESSTHREADS_VER 0x0102 #define _APISET_PROCESSTHREADS_VER 0x0102
#elif _APISET_MINWIN_VERSION == 0x0101 #elif _APISET_TARGET_VERSION == _APISET_TARGET_VERSION_WIN8
#define _APISET_PROCESSTHREADS_VER 0x0101 #define _APISET_PROCESSTHREADS_VER 0x0101
#elif _APISET_MINWIN_VERSION == 0x0100 #elif _APISET_TARGET_VERSION == _APISET_TARGET_VERSION_WIN7
#define _APISET_PROCESSTHREADS_VER 0x0100 #define _APISET_PROCESSTHREADS_VER 0x0100
#endif #endif
#endif #endif
#endif #endif
#endif // !defined(RC_INVOKED)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
// end_1_0 // end_1_0
// end_1_1 // end_1_1
// end_1_2 // end_1_2
// end_1_3
// begin_1_0 // begin_1_0
// begin_1_3
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
typedef struct _PROCESS_INFORMATION { typedef struct _PROCESS_INFORMATION {
HANDLE hProcess; HANDLE hProcess;
HANDLE hThread; HANDLE hThread;
DWORD dwProcessId; DWORD dwProcessId;
DWORD dwThreadId; DWORD dwThreadId;
} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION; } PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
typedef struct _STARTUPINFOA { typedef struct _STARTUPINFOA {
DWORD cb; DWORD cb;
skipping to change at line 108 skipping to change at line 117
HANDLE hStdError; HANDLE hStdError;
} STARTUPINFOW, *LPSTARTUPINFOW; } STARTUPINFOW, *LPSTARTUPINFOW;
#ifdef UNICODE #ifdef UNICODE
typedef STARTUPINFOW STARTUPINFO; typedef STARTUPINFOW STARTUPINFO;
typedef LPSTARTUPINFOW LPSTARTUPINFO; typedef LPSTARTUPINFOW LPSTARTUPINFO;
#else #else
typedef STARTUPINFOA STARTUPINFO; typedef STARTUPINFOA STARTUPINFO;
typedef LPSTARTUPINFOA LPSTARTUPINFO; typedef LPSTARTUPINFOA LPSTARTUPINFO;
#endif // UNICODE #endif // UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
// end_1_0
// end_1_3
// begin_1_0
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
QueueUserAPC( QueueUserAPC(
_In_ PAPCFUNC pfnAPC, _In_ PAPCFUNC pfnAPC,
_In_ HANDLE hThread, _In_ HANDLE hThread,
_In_ ULONG_PTR dwData _In_ ULONG_PTR dwData
); );
#endif /* _WIN32_WINNT >= 0x0400 || _WIN32_WINDOWS > 0x0400 */ #endif /* _WIN32_WINNT >= 0x0400 || _WIN32_WINDOWS > 0x0400 */
#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)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetProcessTimes( GetProcessTimes(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_Out_ LPFILETIME lpCreationTime, _Out_ LPFILETIME lpCreationTime,
_Out_ LPFILETIME lpExitTime, _Out_ LPFILETIME lpExitTime,
_Out_ LPFILETIME lpKernelTime, _Out_ LPFILETIME lpKernelTime,
_Out_ LPFILETIME lpUserTime _Out_ LPFILETIME lpUserTime
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
GetCurrentProcess( GetCurrentProcess(
VOID VOID
); );
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
GetCurrentProcessId( GetCurrentProcessId(
VOID VOID
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
DECLSPEC_NORETURN DECLSPEC_NORETURN
VOID VOID
WINAPI WINAPI
ExitProcess( ExitProcess(
_In_ UINT uExitCode _In_ UINT uExitCode
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
TerminateProcess( TerminateProcess(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_In_ UINT uExitCode _In_ UINT uExitCode
); );
#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)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetExitCodeProcess( GetExitCodeProcess(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_Out_ LPDWORD lpExitCode _Out_ LPDWORD lpExitCode
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SwitchToThread( SwitchToThread(
VOID VOID
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
CreateThread( CreateThread(
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ SIZE_T dwStackSize, _In_ SIZE_T dwStackSize,
_In_ LPTHREAD_START_ROUTINE lpStartAddress, _In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ __drv_aliasesMem LPVOID lpParameter, _In_opt_ __drv_aliasesMem LPVOID lpParameter,
_In_ DWORD dwCreationFlags, _In_ DWORD dwCreationFlags,
_Out_opt_ LPDWORD lpThreadId _Out_opt_ LPDWORD lpThreadId
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
CreateRemoteThread( CreateRemoteThread(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ SIZE_T dwStackSize, _In_ SIZE_T dwStackSize,
_In_ LPTHREAD_START_ROUTINE lpStartAddress, _In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ LPVOID lpParameter, _In_opt_ LPVOID lpParameter,
_In_ DWORD dwCreationFlags, _In_ DWORD dwCreationFlags,
_Out_opt_ LPDWORD lpThreadId _Out_opt_ LPDWORD lpThreadId
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
GetCurrentThread( GetCurrentThread(
VOID VOID
); );
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
GetCurrentThreadId( GetCurrentThreadId(
VOID VOID
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
OpenThread( OpenThread(
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle, _In_ BOOL bInheritHandle,
_In_ DWORD dwThreadId _In_ DWORD dwThreadId
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetThreadPriority( SetThreadPriority(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_In_ int nPriority _In_ int nPriority
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetThreadPriorityBoost( SetThreadPriorityBoost(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_In_ BOOL bDisablePriorityBoost _In_ BOOL bDisablePriorityBoost
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetThreadPriorityBoost( GetThreadPriorityBoost(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_Out_ PBOOL pDisablePriorityBoost _Out_ PBOOL pDisablePriorityBoost
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
int int
WINAPI WINAPI
GetThreadPriority( GetThreadPriority(
_In_ HANDLE hThread _In_ HANDLE hThread
); );
WINBASEAPI WINBASEAPI
DECLSPEC_NORETURN DECLSPEC_NORETURN
VOID VOID
WINAPI WINAPI
ExitThread( ExitThread(
_In_ DWORD dwExitCode _In_ DWORD dwExitCode
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
TerminateThread( TerminateThread(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_In_ DWORD dwExitCode _In_ DWORD dwExitCode
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Success_(return != 0) _Success_(return != 0)
BOOL BOOL
WINAPI WINAPI
GetExitCodeThread( GetExitCodeThread(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_Out_ LPDWORD lpExitCode _Out_ LPDWORD lpExitCode
); );
skipping to change at line 370 skipping to change at line 412
_In_ HANDLE hThread _In_ HANDLE hThread
); );
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
ResumeThread( ResumeThread(
_In_ HANDLE hThread _In_ HANDLE hThread
); );
#ifndef FLS_OUT_OF_INDEXES #ifndef TLS_OUT_OF_INDEXES
#define FLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF)
#endif
#define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF) #define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF)
#endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
// TlsAlloc, TlsFree, TlsGetValue and TlsSetValue are defined as inlines
// only for the store apps, not for desktop apps
#pragma region Application Family
#if WINAPI_PARTITION_APP && !WINAPI_PARTITION_DESKTOP
#include <fibersapi.h>
FORCEINLINE
_Must_inspect_result_
WINBASEAPI
DWORD
WINAPI
TlsAlloc(
VOID
)
{
return FlsAlloc(NULL);
}
FORCEINLINE
WINBASEAPI
LPVOID
WINAPI
TlsGetValue(
_In_ DWORD dwTlsIndex
)
{
return FlsGetValue(dwTlsIndex);
}
FORCEINLINE
WINBASEAPI
BOOL
WINAPI
TlsSetValue(
_In_ DWORD dwTlsIndex,
_In_opt_ LPVOID lpTlsValue
)
{
return FlsSetValue(dwTlsIndex, lpTlsValue);
}
FORCEINLINE
WINBASEAPI
BOOL
WINAPI
TlsFree(
_In_ DWORD dwTlsIndex
)
{
return FlsFree(dwTlsIndex);
}
#endif /* WINAPI_PARTITION_APP && !WINAPI_PARTITION_DESKTOP */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
_Must_inspect_result_ _Must_inspect_result_
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
TlsAlloc( TlsAlloc(
VOID VOID
); );
WINBASEAPI WINBASEAPI
skipping to change at line 470 skipping to change at line 446
_In_opt_ LPVOID lpTlsValue _In_opt_ LPVOID lpTlsValue
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
TlsFree( TlsFree(
_In_ DWORD dwTlsIndex _In_ DWORD dwTlsIndex
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#ifndef _APISET_EXPORTS_FILTER #ifndef _APISET_EXPORTS_FILTER
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CreateProcessA( CreateProcessA(
_In_opt_ LPCSTR lpApplicationName, _In_opt_ LPCSTR lpApplicationName,
_Inout_opt_ LPSTR lpCommandLine, _Inout_opt_ LPSTR lpCommandLine,
_In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
skipping to change at line 545 skipping to change at line 521
VOID VOID
WINAPI WINAPI
GetStartupInfoW( GetStartupInfoW(
_Out_ LPSTARTUPINFOW lpStartupInfo _Out_ LPSTARTUPINFOW lpStartupInfo
); );
#ifdef UNICODE #ifdef UNICODE
#define GetStartupInfo GetStartupInfoW #define GetStartupInfo GetStartupInfoW
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
// end_1_0
#ifndef _APISET_EXPORTS_FILTER
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CreateProcessAsUserW( CreateProcessAsUserW(
_In_opt_ HANDLE hToken, _In_opt_ HANDLE hToken,
_In_opt_ LPCWSTR lpApplicationName, _In_opt_ LPCWSTR lpApplicationName,
_Inout_opt_ LPWSTR lpCommandLine, _Inout_opt_ LPWSTR lpCommandLine,
_In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes,
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ BOOL bInheritHandles, _In_ BOOL bInheritHandles,
skipping to change at line 577 skipping to change at line 542
_In_opt_ LPVOID lpEnvironment, _In_opt_ LPVOID lpEnvironment,
_In_opt_ LPCWSTR lpCurrentDirectory, _In_opt_ LPCWSTR lpCurrentDirectory,
_In_ LPSTARTUPINFOW lpStartupInfo, _In_ LPSTARTUPINFOW lpStartupInfo,
_Out_ LPPROCESS_INFORMATION lpProcessInformation _Out_ LPPROCESS_INFORMATION lpProcessInformation
); );
#ifdef UNICODE #ifdef UNICODE
#define CreateProcessAsUser CreateProcessAsUserW #define CreateProcessAsUser CreateProcessAsUserW
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ //
#pragma endregion // TODO: neerajsi-2013/12/08 - this should be moved to official documentation.
//
// These are shorthand ways of referring to the thread token, the process token,
// or the "effective token" (the thread token if it exists, otherwise the
// process token), respectively. These handles only have TOKEN_QUERY and
// TOKEN_QUERY_SOURCE access in Windows 8 (use TOKEN_ACCESS_PSEUDO_HANDLE to
// determine the granted access on the target version of Windows). These handles
// do not need to be closed.
//
#endif // _APISET_EXPORTS_FILTER #if !defined(MIDL_PASS)
#pragma region Desktop Family #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) FORCEINLINE
HANDLE
GetCurrentProcessToken (
VOID
)
{
return (HANDLE)(LONG_PTR) -4;
}
FORCEINLINE
HANDLE
GetCurrentThreadToken (
VOID
)
{
return (HANDLE)(LONG_PTR) -5;
}
FORCEINLINE
HANDLE
GetCurrentThreadEffectiveToken (
VOID
)
{
return (HANDLE)(LONG_PTR) -6;
}
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
#endif // !defined(MIDL_PASS)
WINADVAPI WINADVAPI
_Must_inspect_result_ _Must_inspect_result_
BOOL BOOL
APIENTRY APIENTRY
SetThreadToken( SetThreadToken(
_In_opt_ PHANDLE Thread, _In_opt_ PHANDLE Thread,
_In_opt_ HANDLE Token _In_opt_ HANDLE Token
); );
skipping to change at line 614 skipping to change at line 615
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
OpenThreadToken( OpenThreadToken(
_In_ HANDLE ThreadHandle, _In_ HANDLE ThreadHandle,
_In_ DWORD DesiredAccess, _In_ DWORD DesiredAccess,
_In_ BOOL OpenAsSelf, _In_ BOOL OpenAsSelf,
_Outptr_ PHANDLE TokenHandle _Outptr_ PHANDLE TokenHandle
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
// begin_1_0
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetPriorityClass( SetPriorityClass(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_In_ DWORD dwPriorityClass _In_ DWORD dwPriorityClass
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
skipping to change at line 664 skipping to change at line 656
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
GetProcessId( GetProcessId(
_In_ HANDLE Process _In_ HANDLE Process
); );
#endif // _WIN32_WINNT >= 0x0501 #endif // _WIN32_WINNT >= 0x0501
typedef struct _PROC_THREAD_ATTRIBUTE_LIST *PPROC_THREAD_ATTRIBUTE_LIST, *LPPROC
_THREAD_ATTRIBUTE_LIST;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0502) #if (_WIN32_WINNT >= 0x0502)
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
GetThreadId( GetThreadId(
_In_ HANDLE Thread _In_ HANDLE Thread
); );
#endif // _WIN32_WINNT >= 0x0502 #endif // _WIN32_WINNT >= 0x0502
typedef struct _PROC_THREAD_ATTRIBUTE_LIST *PPROC_THREAD_ATTRIBUTE_LIST, *LPPROC
_THREAD_ATTRIBUTE_LIST;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
WINBASEAPI WINBASEAPI
VOID VOID
WINAPI WINAPI
FlushProcessWriteBuffers( FlushProcessWriteBuffers(
VOID VOID
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif // _WIN32_WINNT >= 0x0600
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #if (_WIN32_WINNT >= 0x0600)
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
GetProcessIdOfThread( GetProcessIdOfThread(
_In_ HANDLE Thread _In_ HANDLE Thread
); );
WINBASEAPI WINBASEAPI
_Success_(return != FALSE) _Success_(return != FALSE)
skipping to change at line 758 skipping to change at line 754
UpdateProcThreadAttribute( UpdateProcThreadAttribute(
_Inout_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, _Inout_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_ DWORD_PTR Attribute, _In_ DWORD_PTR Attribute,
_In_reads_bytes_opt_(cbSize) PVOID lpValue, _In_reads_bytes_opt_(cbSize) PVOID lpValue,
_In_ SIZE_T cbSize, _In_ SIZE_T cbSize,
_Out_writes_bytes_opt_(cbSize) PVOID lpPreviousValue, _Out_writes_bytes_opt_(cbSize) PVOID lpPreviousValue,
_In_opt_ PSIZE_T lpReturnSize _In_opt_ PSIZE_T lpReturnSize
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // (_WIN32_WINNT >= 0x0600) #endif // (_WIN32_WINNT >= 0x0600)
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
CreateRemoteThreadEx( CreateRemoteThreadEx(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes,
_In_ SIZE_T dwStackSize, _In_ SIZE_T dwStackSize,
_In_ LPTHREAD_START_ROUTINE lpStartAddress, _In_ LPTHREAD_START_ROUTINE lpStartAddress,
_In_opt_ LPVOID lpParameter, _In_opt_ LPVOID lpParameter,
_In_ DWORD dwCreationFlags, _In_ DWORD dwCreationFlags,
_In_opt_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, _In_opt_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList,
_Out_opt_ LPDWORD lpThreadId _Out_opt_ LPDWORD lpThreadId
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
// end_1_0 // end_1_0
// begin_1_1 // begin_1_1
#if !defined(MIDL_PASS) #if !defined(MIDL_PASS)
#if (defined(_WIN32_WINNT) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESSTHREAD S_VER > 0x0100) #if (defined(_WIN32_WINNT) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESSTHREAD S_VER > 0x0100)
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0602) #if (_WIN32_WINNT >= 0x0602)
WINBASEAPI WINBASEAPI
VOID VOID
WINAPI WINAPI
GetCurrentThreadStackLimits( GetCurrentThreadStackLimits(
_Out_ PULONG_PTR LowLimit, _Out_ PULONG_PTR LowLimit,
_Out_ PULONG_PTR HighLimit _Out_ PULONG_PTR HighLimit
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetThreadContext( GetThreadContext(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_Inout_ LPCONTEXT lpContext _Inout_ LPCONTEXT lpContext
); );
#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)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetThreadContext( SetThreadContext(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_In_ CONST CONTEXT * lpContext _In_ CONST CONTEXT * lpContext
); );
#if (_WIN32_WINNT >= 0x0602) #if (_WIN32_WINNT >= 0x0602)
skipping to change at line 847 skipping to change at line 857
WINAPI WINAPI
GetProcessMitigationPolicy( GetProcessMitigationPolicy(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_In_ PROCESS_MITIGATION_POLICY MitigationPolicy, _In_ PROCESS_MITIGATION_POLICY MitigationPolicy,
_Out_writes_bytes_(dwLength) PVOID lpBuffer, _Out_writes_bytes_(dwLength) PVOID lpBuffer,
_In_ SIZE_T dwLength _In_ SIZE_T dwLength
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // (defined(_WIN32_WINNT) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESS THREADS_VER > 0x0100) #endif // (defined(_WIN32_WINNT) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESS THREADS_VER > 0x0100)
#endif // defined(MIDL_PASS) #endif // defined(MIDL_PASS)
#if (defined(_WIN32_WINNT) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESSTHREAD S_VER > 0x0100) #if (defined(_WIN32_WINNT) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESSTHREAD S_VER > 0x0100)
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
FlushInstructionCache( FlushInstructionCache(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_In_reads_bytes_opt_(dwSize) LPCVOID lpBaseAddress, _In_reads_bytes_opt_(dwSize) LPCVOID lpBaseAddress,
_In_ SIZE_T dwSize _In_ SIZE_T dwSize
); );
skipping to change at line 879 skipping to change at line 889
BOOL BOOL
WINAPI WINAPI
GetThreadTimes( GetThreadTimes(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_Out_ LPFILETIME lpCreationTime, _Out_ LPFILETIME lpCreationTime,
_Out_ LPFILETIME lpExitTime, _Out_ LPFILETIME lpExitTime,
_Out_ LPFILETIME lpKernelTime, _Out_ LPFILETIME lpKernelTime,
_Out_ LPFILETIME lpUserTime _Out_ LPFILETIME lpUserTime
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
OpenProcess( OpenProcess(
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle, _In_ BOOL bInheritHandle,
_In_ DWORD dwProcessId _In_ DWORD dwProcessId
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
BOOL BOOL
WINAPI WINAPI
IsProcessorFeaturePresent( IsProcessorFeaturePresent(
_In_ DWORD ProcessorFeature _In_ DWORD ProcessorFeature
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#endif // (defined(_WIN32_WINNT) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESS THREADS_VER > 0x0100) #endif // (defined(_WIN32_WINNT) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESS THREADS_VER > 0x0100)
#if ((_WIN32_WINNT >= 0x0501) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESSTHR EADS_VER > 0x0100) #if ((_WIN32_WINNT >= 0x0501) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESSTHR EADS_VER > 0x0100)
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetProcessHandleCount( GetProcessHandleCount(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_Out_ PDWORD pdwHandleCount _Out_ PDWORD pdwHandleCount
); );
#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM)
#pragma endregion #pragma endregion
#endif // ((_WIN32_WINNT >= 0x0501) && !defined(_CONTRACT_GEN)) || (_APISET_PROC ESSTHREADS_VER > 0x0100) #endif // ((_WIN32_WINNT >= 0x0501) && !defined(_CONTRACT_GEN)) || (_APISET_PROC ESSTHREADS_VER > 0x0100)
#if ((_WIN32_WINNT >= 0x0502) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESSTHR EADS_VER > 0x0100) #if ((_WIN32_WINNT >= 0x0502) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESSTHR EADS_VER > 0x0100)
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
GetCurrentProcessorNumber( GetCurrentProcessorNumber(
VOID VOID
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // ((_WIN32_WINNT >= 0x0502) && !defined(_CONTRACT_GEN)) || (_APISET_PROC ESSTHREADS_VER > 0x0100) #endif // ((_WIN32_WINNT >= 0x0502) && !defined(_CONTRACT_GEN)) || (_APISET_PROC ESSTHREADS_VER > 0x0100)
#if ((_WIN32_WINNT >= 0x0601) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESSTHR EADS_VER > 0x0100) #if ((_WIN32_WINNT >= 0x0601) && !defined(_CONTRACT_GEN)) || (_APISET_PROCESSTHR EADS_VER > 0x0100)
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetThreadIdealProcessorEx( SetThreadIdealProcessorEx(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_In_ PPROCESSOR_NUMBER lpIdealProcessor, _In_ PPROCESSOR_NUMBER lpIdealProcessor,
_Out_opt_ PPROCESSOR_NUMBER lpPreviousIdealProcessor _Out_opt_ PPROCESSOR_NUMBER lpPreviousIdealProcessor
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetThreadIdealProcessorEx( GetThreadIdealProcessorEx(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_Out_ PPROCESSOR_NUMBER lpIdealProcessor _Out_ PPROCESSOR_NUMBER lpIdealProcessor
); );
WINBASEAPI WINBASEAPI
VOID VOID
WINAPI WINAPI
GetCurrentProcessorNumberEx( GetCurrentProcessorNumberEx(
_Out_ PPROCESSOR_NUMBER ProcNumber _Out_ PPROCESSOR_NUMBER ProcNumber
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // ((_WIN32_WINNT >= 0x0601) && !defined(_CONTRACT_GEN)) || (_APISET_PROC ESSTHREADS_VER > 0x0100) #endif // ((_WIN32_WINNT >= 0x0601) && !defined(_CONTRACT_GEN)) || (_APISET_PROC ESSTHREADS_VER > 0x0100)
// end_1_1 // end_1_1
// begin_1_2 // begin_1_2
#if !defined(_CONTRACT_GEN) || (_APISET_PROCESSTHREADS_VER >= 0x0102) #if !defined(_CONTRACT_GEN) || (_APISET_PROCESSTHREADS_VER >= 0x0102)
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetProcessPriorityBoost( GetProcessPriorityBoost(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_Out_ PBOOL pDisablePriorityBoost _Out_ PBOOL pDisablePriorityBoost
); );
skipping to change at line 1043 skipping to change at line 1053
// //
typedef enum _THREAD_INFORMATION_CLASS { typedef enum _THREAD_INFORMATION_CLASS {
ThreadMemoryPriority, ThreadMemoryPriority,
ThreadAbsoluteCpuPriority, ThreadAbsoluteCpuPriority,
ThreadInformationClassMax ThreadInformationClassMax
} THREAD_INFORMATION_CLASS; } THREAD_INFORMATION_CLASS;
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
typedef struct _MEMORY_PRIORITY_INFORMATION {
ULONG MemoryPriority;
} MEMORY_PRIORITY_INFORMATION, *PMEMORY_PRIORITY_INFORMATION;
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetThreadInformation( GetThreadInformation(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_In_ THREAD_INFORMATION_CLASS ThreadInformationClass, _In_ THREAD_INFORMATION_CLASS ThreadInformationClass,
_Out_writes_bytes_(ThreadInformationSize) LPVOID ThreadInformation, _Out_writes_bytes_(ThreadInformationSize) LPVOID ThreadInformation,
_In_ DWORD ThreadInformationSize _In_ DWORD ThreadInformationSize
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetThreadInformation( SetThreadInformation(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_In_ THREAD_INFORMATION_CLASS ThreadInformationClass, _In_ THREAD_INFORMATION_CLASS ThreadInformationClass,
_In_reads_bytes_(ThreadInformationSize) LPVOID ThreadInformation, _In_reads_bytes_(ThreadInformationSize) LPVOID ThreadInformation,
_In_ DWORD ThreadInformationSize _In_ DWORD ThreadInformationSize
); );
//
// Define memory priorities.
//
#define MEMORY_PRIORITY_LOWEST 0
#define MEMORY_PRIORITY_VERY_LOW 1
#define MEMORY_PRIORITY_LOW 2
#define MEMORY_PRIORITY_MEDIUM 3
#define MEMORY_PRIORITY_BELOW_NORMAL 4
#define MEMORY_PRIORITY_NORMAL 5
typedef struct _MEMORY_PRIORITY_INFORMATION {
ULONG MemoryPriority;
} MEMORY_PRIORITY_INFORMATION, *PMEMORY_PRIORITY_INFORMATION;
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8) #endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
#if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE) #if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
IsProcessCritical( IsProcessCritical(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
_Out_ PBOOL Critical _Out_ PBOOL Critical
); );
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE) #endif // (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE)
#if (_WIN32_WINNT >= _WIN32_WINNT_WINTHRESHOLD) #if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetProtectedPolicy( SetProtectedPolicy(
_In_ LPCGUID PolicyGuid, _In_ LPCGUID PolicyGuid,
_In_ ULONG_PTR PolicyValue, _In_ ULONG_PTR PolicyValue,
_Out_opt_ PULONG_PTR OldPolicyValue _Out_opt_ PULONG_PTR OldPolicyValue
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
QueryProtectedPolicy( QueryProtectedPolicy(
_In_ LPCGUID PolicyGuid, _In_ LPCGUID PolicyGuid,
_Out_ PULONG_PTR PolicyValue _Out_ PULONG_PTR PolicyValue
); );
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WINTHRESHOLD) #endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // !defined(_CONTRACT_GEN) || (_APISET_PROCESSTHREADS_VER >= 0x0102) #endif // !defined(_CONTRACT_GEN) || (_APISET_PROCESSTHREADS_VER >= 0x0102)
// end_1_2 // end_1_2
// begin_1_3
#if !defined(_CONTRACT_GEN) || (_APISET_PROCESSTHREADS_VER >= 0x0103)
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI
DWORD
WINAPI
SetThreadIdealProcessor(
_In_ HANDLE hThread,
_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 _PROCESS_INFORMATION_CLASS {
ProcessMemoryPriority,
ProcessMemoryExhaustionInfo,
ProcessAppMemoryInfo,
ProcessInPrivateInfo,
ProcessEDPStateInfo,
ProcessInformationClassMax
} PROCESS_INFORMATION_CLASS;
typedef struct _APP_MEMORY_INFORMATION {
ULONG64 AvailableCommit;
ULONG64 PrivateCommitUsage;
ULONG64 PeakPrivateCommitUsage;
ULONG64 TotalCommitUsage;
} APP_MEMORY_INFORMATION, *PAPP_MEMORY_INFORMATION;
typedef struct _EDP_PROCESS_STATE {
BYTE data[32];
} EDP_PROCESS_STATE, *PEDP_PROCESS_STATE;
typedef struct _EDP_PROCESS_STATE_TLS {
EDP_PROCESS_STATE EDPProcessState;
DWORD TlsIndex;
} EDP_PROCESS_STATE_TLS, *PEDP_PROCESS_STATE_TLS;
//
// Constants and structures needed to enable the fail fast on commit failure
// feature.
//
#define PME_CURRENT_VERSION 1
typedef enum _PROCESS_MEMORY_EXHAUSTION_TYPE {
PMETypeFailFastOnCommitFailure,
PMETypeMax
} 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 {
USHORT Version;
USHORT Reserved;
PROCESS_MEMORY_EXHAUSTION_TYPE Type;
ULONG_PTR Value;
} PROCESS_MEMORY_EXHAUSTION_INFO, *PPROCESS_MEMORY_EXHAUSTION_INFO;
#if (_WIN32_WINNT >= 0x0602)
WINBASEAPI
BOOL
WINAPI
SetProcessInformation(
_In_ HANDLE hProcess,
_In_ PROCESS_INFORMATION_CLASS ProcessInformationClass,
_In_reads_bytes_(ProcessInformationSize) LPVOID ProcessInformation,
_In_ DWORD ProcessInformationSize
);
WINBASEAPI
BOOL
WINAPI
GetProcessInformation(
_In_ HANDLE hProcess,
_In_ PROCESS_INFORMATION_CLASS ProcessInformationClass,
_Out_writes_bytes_(ProcessInformationSize) LPVOID ProcessInformation,
_In_ DWORD ProcessInformationSize
);
#endif //(_WIN32_WINNT >= 0x0602)
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
_Success_(return != FALSE)
BOOL
WINAPI
GetSystemCpuSetInformation(
_Out_writes_bytes_to_opt_(BufferLength, *ReturnedLength) PSYSTEM_CPU_SET_INF
ORMATION Information,
_In_ ULONG BufferLength,
_Always_(_Out_) PULONG ReturnedLength,
_In_opt_ HANDLE Process,
_Reserved_ ULONG Flags
);
_Success_(return != FALSE)
BOOL
WINAPI
GetProcessDefaultCpuSets(
_In_ HANDLE Process,
_Out_writes_to_opt_(CpuSetIdCount, *RequiredIdCount) PULONG CpuSetIds,
_In_ ULONG CpuSetIdCount,
_Always_(_Out_) PULONG RequiredIdCount
);
_Success_(return != FALSE)
BOOL
WINAPI
SetProcessDefaultCpuSets(
_In_ HANDLE Process,
_In_reads_opt_(CpuSetIdCount) const ULONG * CpuSetIds,
_In_ ULONG CpuSetIdCount
);
_Success_(return != FALSE)
BOOL
WINAPI
GetThreadSelectedCpuSets(
_In_ HANDLE Thread,
_Out_writes_to_opt_(CpuSetIdCount, *RequiredIdCount) PULONG CpuSetIds,
_In_ ULONG CpuSetIdCount,
_Always_(_Out_) PULONG RequiredIdCount
);
_Success_(return != FALSE)
BOOL
WINAPI
SetThreadSelectedCpuSets(
_In_ HANDLE Thread,
_In_reads_(CpuSetIdCount) const ULONG * CpuSetIds,
_In_ ULONG CpuSetIdCount
);
#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)
WINADVAPI
BOOL
WINAPI
CreateProcessAsUserA(
_In_opt_ HANDLE hToken,
_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
WINBASEAPI
BOOL
WINAPI
GetProcessShutdownParameters(
_Out_ LPDWORD lpdwLevel,
_Out_ LPDWORD lpdwFlags
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#endif // !defined(_CONTRACT_GEN) || (_APISET_PROCESSTHREADS_VER >= 0x0103)
// end_1_3
// begin_1_0 // begin_1_0
// begin_1_1 // begin_1_1
// begin_1_2 // begin_1_2
// begin_1_3
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // _PROCESSTHREADSAPI_H_ #endif // _PROCESSTHREADSAPI_H_
// end_1_0 // end_1_0
// end_1_1 // end_1_1
// end_1_2 // end_1_2
// end_1_3
 End of changes. 99 change blocks. 
200 lines changed or deleted 405 lines changed or added


 sddl.h (6.3.9600.17415-Windows 8.1)   sddl.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 34 skipping to change at line 34
#include <apiset.h> #include <apiset.h>
#include <apisetcconv.h> #include <apisetcconv.h>
#ifdef _CONTRACT_GEN #ifdef _CONTRACT_GEN
#include <minwindef.h> #include <minwindef.h>
#endif #endif
/* APISET_NAME: api-ms-win-security-sddl-l1 */ /* APISET_NAME: api-ms-win-security-sddl-l1 */
#if !defined(RC_INVOKED)
#ifndef _APISET_SDDL_VER #ifndef _APISET_SDDL_VER
#ifdef _APISET_MINWIN_VERSION #ifdef _APISET_TARGET_VERSION
#if _APISET_MINWIN_VERSION >= 0x0100 #if _APISET_TARGET_VERSION >= _APISET_TARGET_VERSION_WIN7
#define _APISET_SDDL_VER 0x0100 #define _APISET_SDDL_VER 0x0100
#endif #endif
#endif // _APISET_MINWIN_VERSION #endif
#endif // _APISET_SDDL_VER #endif
#endif // !defined(RC_INVOKED)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
// //
// SDDL Version information // SDDL Version information
// //
#define SDDL_REVISION_1 1 #define SDDL_REVISION_1 1
#define SDDL_REVISION SDDL_REVISION_1 #define SDDL_REVISION SDDL_REVISION_1
// //
// SDDL Component tags // SDDL Component tags
// //
skipping to change at line 216 skipping to change at line 220
#define SDDL_RDS_ENDPOINT_SERVERS TEXT("ES") // Servers in this g roup run virtual machines and host sessions where users RemoteApp programs and p ersonal virtual desktops run. #define SDDL_RDS_ENDPOINT_SERVERS TEXT("ES") // Servers in this g roup run virtual machines and host sessions where users RemoteApp programs and p ersonal virtual desktops run.
#define SDDL_RDS_MANAGEMENT_SERVERS TEXT("MS") // Servers in this g roup can perform routine administrative actions on servers running Remote Deskto p Services. #define SDDL_RDS_MANAGEMENT_SERVERS TEXT("MS") // Servers in this g roup can perform routine administrative actions on servers running Remote Deskto p Services.
#define SDDL_USER_MODE_DRIVERS TEXT("UD") // UserMode driver #define SDDL_USER_MODE_DRIVERS TEXT("UD") // UserMode driver
#define SDDL_HYPER_V_ADMINS TEXT("HA") // Members of this g roup have complete and unrestricted access to all features of Hyper-V. #define SDDL_HYPER_V_ADMINS TEXT("HA") // Members of this g roup have complete and unrestricted access to all features of Hyper-V.
#define SDDL_CLONEABLE_CONTROLLERS TEXT("CN") // Members of this g roup that are domain controllers may be cloned. #define SDDL_CLONEABLE_CONTROLLERS TEXT("CN") // Members of this g roup that are domain controllers may be cloned.
#define SDDL_ACCESS_CONTROL_ASSISTANCE_OPS TEXT("AA") // Members of this g roup can remotely query authorization attributes and permissions for resources o n this computer. #define SDDL_ACCESS_CONTROL_ASSISTANCE_OPS TEXT("AA") // Members of this g roup can remotely query authorization attributes and permissions for resources o n this computer.
#define SDDL_REMOTE_MANAGEMENT_USERS TEXT("RM") // Members of this g roup can access WMI resources over management protocols (such as WS-Management v ia the Windows Remote Management service). This applies only to WMI namespaces t hat grant access to the user. #define SDDL_REMOTE_MANAGEMENT_USERS TEXT("RM") // Members of this g roup can access WMI resources over management protocols (such as WS-Management v ia the Windows Remote Management service). This applies only to WMI namespaces t hat grant access to the user.
#define SDDL_AUTHORITY_ASSERTED TEXT("AS") // Authentication Au thority Asserted #define SDDL_AUTHORITY_ASSERTED TEXT("AS") // Authentication Au thority Asserted
#define SDDL_SERVICE_ASSERTED TEXT("SS") // Authentication Se rvice Asserted #define SDDL_SERVICE_ASSERTED TEXT("SS") // Authentication Se rvice Asserted
#define SDDL_PROTECTED_USERS TEXT("AP") // Members of this g roup are afforded additional protections against authentication security threats . #define SDDL_PROTECTED_USERS TEXT("AP") // Members of this g roup are afforded additional protections against authentication security threats .
#define SDDL_KEY_ADMINS TEXT("KA") // Members of this g
roup have full control over all key credential objects in the domain
#define SDDL_ENTERPRISE_KEY_ADMINS TEXT("EK") // Members of this g
roup have full control over all key credential objects in the forest
// //
// Note !! While making the above changes check if ScepReplaceNewAcronymsInSDDL // Note !! While making the above changes check if ScepReplaceNewAcronymsInSDDL
// needs to be updated to allow the new SIDs to be translated on downlevel OS. // needs to be updated to allow the new SIDs to be translated on downlevel OS.
// //
// //
// Integrity Labels // Integrity Labels
// //
#define SDDL_ML_LOW TEXT("LW") // Low mandatory lev el #define SDDL_ML_LOW TEXT("LW") // Low mandatory lev el
skipping to change at line 270 skipping to change at line 276
#define SDDL_ACE_COND_BLOB_PREFIX TEXT("#") #define SDDL_ACE_COND_BLOB_PREFIX TEXT("#")
#define SDDL_ACE_COND_SID_PREFIX TEXT("SID") #define SDDL_ACE_COND_SID_PREFIX TEXT("SID")
#define SDDL_ACE_COND_ATTRIBUTE_PREFIX TEXT("@") #define SDDL_ACE_COND_ATTRIBUTE_PREFIX TEXT("@")
#define SDDL_ACE_COND_USER_ATTRIBUTE_PREFIX TEXT("@USER.") #define SDDL_ACE_COND_USER_ATTRIBUTE_PREFIX TEXT("@USER.")
#define SDDL_ACE_COND_RESOURCE_ATTRIBUTE_PREFIX TEXT("@RESOURCE.") #define SDDL_ACE_COND_RESOURCE_ATTRIBUTE_PREFIX TEXT("@RESOURCE.")
#define SDDL_ACE_COND_DEVICE_ATTRIBUTE_PREFIX TEXT("@DEVICE.") #define SDDL_ACE_COND_DEVICE_ATTRIBUTE_PREFIX TEXT("@DEVICE.")
#if !defined(_NTDDK_) #if !defined(_NTDDK_)
#if (_WIN32_WINNT >= 0x0500) #if (_WIN32_WINNT >= 0x0500)
_Success_(return != FALSE)
BOOL BOOL
WINAPI WINAPI
ConvertSidToStringSidA( ConvertSidToStringSidA(
_In_ PSID Sid, _In_ PSID Sid,
_Outptr_ LPSTR *StringSid _Outptr_ LPSTR *StringSid
); );
_Success_(return != FALSE)
BOOL BOOL
WINAPI WINAPI
ConvertSidToStringSidW( ConvertSidToStringSidW(
_In_ PSID Sid, _In_ PSID Sid,
_Outptr_ LPWSTR * StringSid _Outptr_ LPWSTR * StringSid
); );
#ifdef UNICODE #ifdef UNICODE
#define ConvertSidToStringSid ConvertSidToStringSidW #define ConvertSidToStringSid ConvertSidToStringSidW
#else #else
#define ConvertSidToStringSid ConvertSidToStringSidA #define ConvertSidToStringSid ConvertSidToStringSidA
#endif // !UNICODE #endif // !UNICODE
_Success_(return != FALSE)
BOOL BOOL
WINAPI WINAPI
ConvertStringSidToSidA( ConvertStringSidToSidA(
_In_ LPCSTR StringSid, _In_ LPCSTR StringSid,
_Outptr_ PSID *Sid _Outptr_ PSID *Sid
); );
_Success_(return != FALSE)
BOOL BOOL
WINAPI WINAPI
ConvertStringSidToSidW( ConvertStringSidToSidW(
_In_ LPCWSTR StringSid, _In_ LPCWSTR StringSid,
_Outptr_ PSID * Sid _Outptr_ PSID * Sid
); );
#ifdef UNICODE #ifdef UNICODE
#define ConvertStringSidToSid ConvertStringSidToSidW #define ConvertStringSidToSid ConvertStringSidToSidW
#else #else
#define ConvertStringSidToSid ConvertStringSidToSidA #define ConvertStringSidToSid ConvertStringSidToSidA
#endif // !UNICODE #endif // !UNICODE
_Success_(return != FALSE)
BOOL BOOL
WINAPI WINAPI
ConvertStringSecurityDescriptorToSecurityDescriptorA( ConvertStringSecurityDescriptorToSecurityDescriptorA(
_In_ LPCSTR StringSecurityDescriptor, _In_ LPCSTR StringSecurityDescriptor,
_In_ DWORD StringSDRevision, _In_ DWORD StringSDRevision,
_Outptr_ PSECURITY_DESCRIPTOR *SecurityDescriptor, _Outptr_ PSECURITY_DESCRIPTOR *SecurityDescriptor,
_Out_opt_ PULONG SecurityDescriptorSize _Out_opt_ PULONG SecurityDescriptorSize
); );
_Success_(return != FALSE)
BOOL BOOL
WINAPI WINAPI
ConvertStringSecurityDescriptorToSecurityDescriptorW( ConvertStringSecurityDescriptorToSecurityDescriptorW(
_In_ LPCWSTR StringSecurityDescriptor, _In_ LPCWSTR StringSecurityDescriptor,
_In_ DWORD StringSDRevision, _In_ DWORD StringSDRevision,
_Outptr_ PSECURITY_DESCRIPTOR * SecurityDescriptor, _Outptr_ PSECURITY_DESCRIPTOR * SecurityDescriptor,
_Out_opt_ PULONG SecurityDescriptorSize _Out_opt_ PULONG SecurityDescriptorSize
); );
#ifdef UNICODE #ifdef UNICODE
#define ConvertStringSecurityDescriptorToSecurityDescriptor ConvertStringSecuri tyDescriptorToSecurityDescriptorW #define ConvertStringSecurityDescriptorToSecurityDescriptor ConvertStringSecuri tyDescriptorToSecurityDescriptorW
#else #else
#define ConvertStringSecurityDescriptorToSecurityDescriptor ConvertStringSecuri tyDescriptorToSecurityDescriptorA #define ConvertStringSecurityDescriptorToSecurityDescriptor ConvertStringSecuri tyDescriptorToSecurityDescriptorA
#endif // !UNICODE #endif // !UNICODE
_Success_(return != FALSE)
BOOL BOOL
WINAPI WINAPI
ConvertSecurityDescriptorToStringSecurityDescriptorA( ConvertSecurityDescriptorToStringSecurityDescriptorA(
_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor,
_In_ DWORD RequestedStringSDRevision, _In_ DWORD RequestedStringSDRevision,
_In_ SECURITY_INFORMATION SecurityInformation, _In_ SECURITY_INFORMATION SecurityInformation,
_Outptr_ LPSTR *StringSecurityDescriptor, _Outptr_ LPSTR *StringSecurityDescriptor,
_Out_opt_ PULONG StringSecurityDescriptorLen _Out_opt_ PULONG StringSecurityDescriptorLen
); );
_Success_(return != FALSE)
BOOL BOOL
WINAPI WINAPI
ConvertSecurityDescriptorToStringSecurityDescriptorW( ConvertSecurityDescriptorToStringSecurityDescriptorW(
_In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor,
_In_ DWORD RequestedStringSDRevision, _In_ DWORD RequestedStringSDRevision,
_In_ SECURITY_INFORMATION SecurityInformation, _In_ SECURITY_INFORMATION SecurityInformation,
_Outptr_ LPWSTR * StringSecurityDescriptor, _Outptr_ LPWSTR * StringSecurityDescriptor,
_Out_opt_ PULONG StringSecurityDescriptorLen _Out_opt_ PULONG StringSecurityDescriptorLen
); );
#ifdef UNICODE #ifdef UNICODE
#define ConvertSecurityDescriptorToStringSecurityDescriptor ConvertSecurityDesc riptorToStringSecurityDescriptorW #define ConvertSecurityDescriptorToStringSecurityDescriptor ConvertSecurityDesc riptorToStringSecurityDescriptorW
#else #else
#define ConvertSecurityDescriptorToStringSecurityDescriptor ConvertSecurityDesc riptorToStringSecurityDescriptorA #define ConvertSecurityDescriptorToStringSecurityDescriptor ConvertSecurityDesc riptorToStringSecurityDescriptorA
#endif // !UNICODE #endif // !UNICODE
#endif /* _WIN32_WINNT >= 0x0500 */ #endif /* _WIN32_WINNT >= 0x0500 */
#endif /* !defined(_NTDDK_) */ #endif /* !defined(_NTDDK_) */
#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM)
#pragma endregion #pragma endregion
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // endif __SDDL_H__ #endif // endif __SDDL_H__
 End of changes. 15 change blocks. 
8 lines changed or deleted 23 lines changed or added


 securitybaseapi.h (6.3.9600.17415-Windows 8.1)   securitybaseapi.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 25 skipping to change at line 25
#ifndef _APISECUREBASE_ #ifndef _APISECUREBASE_
#define _APISECUREBASE_ #define _APISECUREBASE_
#include <apiset.h> #include <apiset.h>
#include <apisetcconv.h> #include <apisetcconv.h>
#include <minwindef.h> #include <minwindef.h>
#include <minwinbase.h> #include <minwinbase.h>
/* APISET_NAME: api-ms-win-security-base-l1 */ /* APISET_NAME: api-ms-win-security-base-l1 */
#if !defined(RC_INVOKED)
#ifndef _APISET_SECURITYBASE_VER #ifndef _APISET_SECURITYBASE_VER
#ifdef _APISET_MINWIN_VERSION #ifdef _APISET_TARGET_VERSION
#if _APISET_MINWIN_VERSION > 0x0100 #if _APISET_TARGET_VERSION >= _APISET_TARGET_VERSION_WIN8
#define _APISET_SECURITYBASE_VER 0x0200 #define _APISET_SECURITYBASE_VER 0x0200
#elif _APISET_MINWIN_VERSION <= 0x0100 #elif _APISET_TARGET_VERSION == _APISET_TARGET_VERSION_WIN7
#define _APISET_SECURITYBASE_VER 0x0100 #define _APISET_SECURITYBASE_VER 0x0100
#endif #endif
#endif #endif
#endif #endif
#endif // !defined(RC_INVOKED)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
// end_1_0 // end_1_0
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
// begin_1_0 // begin_1_0
// //
// //
// Security APIs // Security APIs
// //
WINADVAPI WINADVAPI
BOOL BOOL
skipping to change at line 1219 skipping to change at line 1223
_In_ HANDLE File, _In_ HANDLE File,
_Out_ PULONG Flags, _Out_ PULONG Flags,
_Out_ PULONG SigningLevel, _Out_ PULONG SigningLevel,
_Out_writes_bytes_to_opt_(*ThumbprintSize, *ThumbprintSize) PUCHAR Thumbprin t, _Out_writes_bytes_to_opt_(*ThumbprintSize, *ThumbprintSize) PUCHAR Thumbprin t,
_Inout_opt_ PULONG ThumbprintSize, _Inout_opt_ PULONG ThumbprintSize,
_Out_opt_ PULONG ThumbprintAlgorithm _Out_opt_ PULONG ThumbprintAlgorithm
); );
#endif /* ((!defined(_CONTRACT_GEN) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)) || ( _APISET_SECURITYBASE_VER > 0x0100)) */ #endif /* ((!defined(_CONTRACT_GEN) && (_WIN32_WINNT >= _WIN32_WINNT_WIN8)) || ( _APISET_SECURITYBASE_VER > 0x0100)) */
#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM)
#pragma endregion #pragma endregion
// begin_1_0 // begin_1_0
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // _APISECUREBASE_ #endif // _APISECUREBASE_
// end_1_0 // end_1_0
 End of changes. 7 change blocks. 
6 lines changed or deleted 10 lines changed or added


 timezoneapi.h (6.3.9600.17415-Windows 8.1)   timezoneapi.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 25 skipping to change at line 25
#ifndef _TIMEZONEAPI_H_ #ifndef _TIMEZONEAPI_H_
#define _TIMEZONEAPI_H_ #define _TIMEZONEAPI_H_
#include <apiset.h> #include <apiset.h>
#include <apisetcconv.h> #include <apisetcconv.h>
#include <minwindef.h> #include <minwindef.h>
#include <minwinbase.h> #include <minwinbase.h>
/* APISET_NAME: api-ms-win-core-timezone-l1 */ /* APISET_NAME: api-ms-win-core-timezone-l1 */
#if !defined(RC_INVOKED)
#ifndef _APISET_TIMEZONE_VER #ifndef _APISET_TIMEZONE_VER
#ifdef _APISET_MINWIN_VERSION #ifdef _APISET_TARGET_VERSION
#if _APISET_MINWIN_VERSION > 0x0100 #if _APISET_TARGET_VERSION >= _APISET_TARGET_VERSION_WIN8
#define _APISET_TIMEZONE_VER 0x0100 #define _APISET_TIMEZONE_VER 0x0100
#endif #endif
#endif #endif
#endif #endif
#endif // !defined(RC_INVOKED)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
// end_1_0 // end_1_0
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// begin_1_0 // begin_1_0
#define TIME_ZONE_ID_INVALID ((DWORD)0xFFFFFFFF) #define TIME_ZONE_ID_INVALID ((DWORD)0xFFFFFFFF)
typedef struct _TIME_ZONE_INFORMATION { typedef struct _TIME_ZONE_INFORMATION {
LONG Bias; LONG Bias;
WCHAR StandardName[ 32 ]; WCHAR StandardName[ 32 ];
SYSTEMTIME StandardDate; SYSTEMTIME StandardDate;
LONG StandardBias; LONG StandardBias;
skipping to change at line 115 skipping to change at line 119
); );
WINBASEAPI WINBASEAPI
_Success_(return != TIME_ZONE_ID_INVALID) _Success_(return != TIME_ZONE_ID_INVALID)
DWORD DWORD
WINAPI WINAPI
GetTimeZoneInformation( GetTimeZoneInformation(
_Out_ LPTIME_ZONE_INFORMATION lpTimeZoneInformation _Out_ LPTIME_ZONE_INFORMATION lpTimeZoneInformation
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetTimeZoneInformation( SetTimeZoneInformation(
_In_ CONST TIME_ZONE_INFORMATION * lpTimeZoneInformation _In_ CONST TIME_ZONE_INFORMATION * lpTimeZoneInformation
); );
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetDynamicTimeZoneInformation( SetDynamicTimeZoneInformation(
_In_ CONST DYNAMIC_TIME_ZONE_INFORMATION * lpTimeZoneInformation _In_ CONST DYNAMIC_TIME_ZONE_INFORMATION * lpTimeZoneInformation
); );
#endif // _WIN32_WINNT >= 0x0600 #endif // _WIN32_WINNT >= 0x0600
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
WINBASEAPI WINBASEAPI
_Success_(return != TIME_ZONE_ID_INVALID) _Success_(return != TIME_ZONE_ID_INVALID)
DWORD DWORD
WINAPI WINAPI
GetDynamicTimeZoneInformation( GetDynamicTimeZoneInformation(
_Out_ PDYNAMIC_TIME_ZONE_INFORMATION pTimeZoneInformation _Out_ PDYNAMIC_TIME_ZONE_INFORMATION pTimeZoneInformation
); );
skipping to change at line 217 skipping to change at line 221
BOOL BOOL
WINAPI WINAPI
TzSpecificLocalTimeToSystemTimeEx( TzSpecificLocalTimeToSystemTimeEx(
_In_opt_ CONST DYNAMIC_TIME_ZONE_INFORMATION * lpTimeZoneInformation, _In_opt_ CONST DYNAMIC_TIME_ZONE_INFORMATION * lpTimeZoneInformation,
_In_ CONST SYSTEMTIME * lpLocalTime, _In_ CONST SYSTEMTIME * lpLocalTime,
_Out_ LPSYSTEMTIME lpUniversalTime _Out_ LPSYSTEMTIME lpUniversalTime
); );
#endif /* (_WIN32_WINNT >= _WIN32_WINNT_WIN8) */ #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WIN8) */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
// begin_1_0 // begin_1_0
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // _TIMEZONEAPI_H_ #endif // _TIMEZONEAPI_H_
// end_1_0 // end_1_0
 End of changes. 12 change blocks. 
11 lines changed or deleted 15 lines changed or added


 winbase.h (6.3.9600.17415-Windows 8.1)   winbase.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 19 skipping to change at line 19
************************************************************************/ ************************************************************************/
#ifndef _WINBASE_ #ifndef _WINBASE_
#define _WINBASE_ #define _WINBASE_
#if defined(_MSC_VER) #if defined(_MSC_VER)
#if _MSC_VER > 1000 #if _MSC_VER > 1000
#pragma once #pragma once
#endif #endif
#if _MSC_VER >= 1200 #if _MSC_VER >= 1200
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4820) /* padding added after data member */
#pragma warning(disable:4668) /* #if not_defined treated as #if 0 */
#endif #endif
#pragma warning(disable:4001) /* nonstandard extension : single line comment */ #pragma warning(disable:4001) /* nonstandard extension : single line comment */
#pragma warning(disable:4201) /* nonstandard extension used : nameless struct/un ion */ #pragma warning(disable:4201) /* nonstandard extension used : nameless struct/un ion */
#pragma warning(disable:4214) /* nonstandard extension used : bit field types ot her then int */ #pragma warning(disable:4214) /* nonstandard extension used : bit field types ot her then int */
#endif // defined(_MSC_VER) #endif // defined(_MSC_VER)
#ifdef _MAC #ifdef _MAC
#include <macwin32.h> #include <macwin32.h>
#endif //_MAC #endif //_MAC
skipping to change at line 52 skipping to change at line 54
#include <fibersapi.h> #include <fibersapi.h>
#include <namedpipeapi.h> #include <namedpipeapi.h>
#include <profileapi.h> #include <profileapi.h>
#include <heapapi.h> #include <heapapi.h>
#include <ioapiset.h> #include <ioapiset.h>
#include <synchapi.h> #include <synchapi.h>
#include <interlockedapi.h> #include <interlockedapi.h>
#include <processthreadsapi.h> #include <processthreadsapi.h>
#include <sysinfoapi.h> #include <sysinfoapi.h>
#include <memoryapi.h> #include <memoryapi.h>
#include <enclaveapi.h>
#include <threadpoollegacyapiset.h> #include <threadpoollegacyapiset.h>
#include <threadpoolapiset.h> #include <threadpoolapiset.h>
#include <bemapiset.h>
#include <jobapi.h> #include <jobapi.h>
#include <jobapi2.h>
#include <wow64apiset.h> #include <wow64apiset.h>
#include <libloaderapi.h> #include <libloaderapi.h>
#include <securitybaseapi.h> #include <securitybaseapi.h>
#include <namespaceapi.h> #include <namespaceapi.h>
#include <systemtopologyapi.h> #include <systemtopologyapi.h>
#include <processtopologyapi.h> #include <processtopologyapi.h>
#include <securityappcontainer.h> #include <securityappcontainer.h>
#include <realtimeapiset.h> #include <realtimeapiset.h>
#ifdef __cplusplus #ifdef __cplusplus
skipping to change at line 93 skipping to change at line 96
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#define GetCurrentTime() GetTickCount() #define GetCurrentTime() GetTickCount()
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#define Yield() #define Yield()
#define FILE_BEGIN 0 #define FILE_BEGIN 0
#define FILE_CURRENT 1 #define FILE_CURRENT 1
#define FILE_END 2 #define FILE_END 2
#define WAIT_FAILED ((DWORD)0xFFFFFFFF) #define WAIT_FAILED ((DWORD)0xFFFFFFFF)
#define WAIT_OBJECT_0 ((STATUS_WAIT_0 ) + 0 ) #define WAIT_OBJECT_0 ((STATUS_WAIT_0 ) + 0 )
skipping to change at line 171 skipping to change at line 174
// Define CopyFileEx callback routine state change values // Define CopyFileEx callback routine state change values
// //
#define CALLBACK_CHUNK_FINISHED 0x00000000 #define CALLBACK_CHUNK_FINISHED 0x00000000
#define CALLBACK_STREAM_SWITCH 0x00000001 #define CALLBACK_STREAM_SWITCH 0x00000001
// //
// Define CopyFileEx option flags // Define CopyFileEx option flags
// //
#define COPY_FILE_FAIL_IF_EXISTS 0x00000001 #define COPY_FILE_FAIL_IF_EXISTS 0x00000001
#define COPY_FILE_RESTARTABLE 0x00000002 #define COPY_FILE_RESTARTABLE 0x00000002
#define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x00000004 #define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x00000004
#define COPY_FILE_ALLOW_DECRYPTED_DESTINATION 0x00000008 #define COPY_FILE_ALLOW_DECRYPTED_DESTINATION 0x00000008
// //
// Gap for private copyfile flags // Gap for private copyfile flags
// //
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
#define COPY_FILE_COPY_SYMLINK 0x00000800 #define COPY_FILE_COPY_SYMLINK 0x00000800
#define COPY_FILE_NO_BUFFERING 0x00001000 #define COPY_FILE_NO_BUFFERING 0x00001000
#endif #endif
skipping to change at line 198 skipping to change at line 201
// CopyFile2 flags // CopyFile2 flags
// //
#define COPY_FILE_REQUEST_SECURITY_PRIVILEGES 0x00002000 #define COPY_FILE_REQUEST_SECURITY_PRIVILEGES 0x00002000
#define COPY_FILE_RESUME_FROM_PAUSE 0x00004000 #define COPY_FILE_RESUME_FROM_PAUSE 0x00004000
#define COPY_FILE_NO_OFFLOAD 0x00040000 #define COPY_FILE_NO_OFFLOAD 0x00040000
#endif #endif
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
#define COPY_FILE_IGNORE_EDP_BLOCK 0x00400000
#define COPY_FILE_IGNORE_SOURCE_ENCRYPTION 0x00800000
#endif
#endif /* _WIN32_WINNT >= 0x0400 */ #endif /* _WIN32_WINNT >= 0x0400 */
#if (_WIN32_WINNT >= 0x0500) #if (_WIN32_WINNT >= 0x0500)
// //
// Define ReplaceFile option flags // Define ReplaceFile option flags
// //
#define REPLACEFILE_WRITE_THROUGH 0x00000001 #define REPLACEFILE_WRITE_THROUGH 0x00000001
#define REPLACEFILE_IGNORE_MERGE_ERRORS 0x00000002 #define REPLACEFILE_IGNORE_MERGE_ERRORS 0x00000002
skipping to change at line 877 skipping to change at line 887
WORD Reserved1; WORD Reserved1;
WORD Reserved2; WORD Reserved2;
CHAR szPathName[OFS_MAXPATHNAME]; CHAR szPathName[OFS_MAXPATHNAME];
} OFSTRUCT, *LPOFSTRUCT, *POFSTRUCT; } OFSTRUCT, *LPOFSTRUCT, *POFSTRUCT;
#define UnlockResource(hResData) ((hResData), 0) #define UnlockResource(hResData) ((hResData), 0)
#define MAXINTATOM 0xC000 #define MAXINTATOM 0xC000
#define MAKEINTATOM(i) (LPTSTR)((ULONG_PTR)((WORD)(i))) #define MAKEINTATOM(i) (LPTSTR)((ULONG_PTR)((WORD)(i)))
#define INVALID_ATOM ((ATOM)0) #define INVALID_ATOM ((ATOM)0)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
int int
#if !defined(_MAC) #if !defined(_MAC)
#if defined(_M_CEE_PURE) #if defined(_M_CEE_PURE)
__clrcall __clrcall
#else #else
skipping to change at line 913 skipping to change at line 923
#else #else
WINAPI WINAPI
#endif #endif
wWinMain( wWinMain(
_In_ HINSTANCE hInstance, _In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance, _In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine, _In_ LPWSTR lpCmdLine,
_In_ int nShowCmd _In_ int nShowCmd
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Success_(return != NULL) _Success_(return != NULL)
_Post_writable_byte_size_(dwBytes) _Post_writable_byte_size_(dwBytes)
DECLSPEC_ALLOCATOR
HGLOBAL HGLOBAL
WINAPI WINAPI
GlobalAlloc( GlobalAlloc(
_In_ UINT uFlags, _In_ UINT uFlags,
_In_ SIZE_T dwBytes _In_ SIZE_T dwBytes
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
_Ret_reallocated_bytes_(hMem, dwBytes) _Ret_reallocated_bytes_(hMem, dwBytes)
DECLSPEC_ALLOCATOR
HGLOBAL HGLOBAL
WINAPI WINAPI
GlobalReAlloc ( GlobalReAlloc (
_Frees_ptr_ HGLOBAL hMem, _Frees_ptr_ HGLOBAL hMem,
_In_ SIZE_T dwBytes, _In_ SIZE_T dwBytes,
_In_ UINT uFlags _In_ UINT uFlags
); );
WINBASEAPI WINBASEAPI
SIZE_T SIZE_T
skipping to change at line 970 skipping to change at line 994
_In_ LPCVOID pMem _In_ LPCVOID pMem
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GlobalUnlock( GlobalUnlock(
_In_ HGLOBAL hMem _In_ HGLOBAL hMem
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
_Success_(return==0) _Success_(return==0)
HGLOBAL HGLOBAL
WINAPI WINAPI
GlobalFree( GlobalFree(
_Frees_ptr_opt_ HGLOBAL hMem _Frees_ptr_opt_ HGLOBAL hMem
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
SIZE_T SIZE_T
WINAPI WINAPI
GlobalCompact( GlobalCompact(
_In_ DWORD dwMinFree _In_ DWORD dwMinFree
); );
WINBASEAPI WINBASEAPI
VOID VOID
WINAPI WINAPI
skipping to change at line 1022 skipping to change at line 1058
); );
__drv_preferredFunction("GlobalMemoryStatusEx","Deprecated. See MSDN for details ") __drv_preferredFunction("GlobalMemoryStatusEx","Deprecated. See MSDN for details ")
WINBASEAPI WINBASEAPI
VOID VOID
WINAPI WINAPI
GlobalMemoryStatus( GlobalMemoryStatus(
_Out_ LPMEMORYSTATUS lpBuffer _Out_ LPMEMORYSTATUS lpBuffer
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Success_(return != NULL) _Success_(return != NULL)
_Post_writable_byte_size_(uBytes) _Post_writable_byte_size_(uBytes)
DECLSPEC_ALLOCATOR
HLOCAL HLOCAL
WINAPI WINAPI
LocalAlloc( LocalAlloc(
_In_ UINT uFlags, _In_ UINT uFlags,
_In_ SIZE_T uBytes _In_ SIZE_T uBytes
); );
WINBASEAPI WINBASEAPI
_Ret_reallocated_bytes_(hMem, uBytes) _Ret_reallocated_bytes_(hMem, uBytes)
DECLSPEC_ALLOCATOR
HLOCAL HLOCAL
WINAPI WINAPI
LocalReAlloc( LocalReAlloc(
_Frees_ptr_opt_ HLOCAL hMem, _Frees_ptr_opt_ HLOCAL hMem,
_In_ SIZE_T uBytes, _In_ SIZE_T uBytes,
_In_ UINT uFlags _In_ UINT uFlags
); );
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
LPVOID LPVOID
WINAPI WINAPI
LocalLock( LocalLock(
_In_ HLOCAL hMem _In_ HLOCAL hMem
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HLOCAL HLOCAL
WINAPI WINAPI
LocalHandle( LocalHandle(
_In_ LPCVOID pMem _In_ LPCVOID pMem
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
LocalUnlock( LocalUnlock(
_In_ HLOCAL hMem _In_ HLOCAL hMem
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
SIZE_T SIZE_T
WINAPI WINAPI
LocalSize( LocalSize(
_In_ HLOCAL hMem _In_ HLOCAL hMem
); );
WINBASEAPI WINBASEAPI
UINT UINT
WINAPI WINAPI
LocalFlags( LocalFlags(
_In_ HLOCAL hMem _In_ HLOCAL hMem
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Success_(return==0) _Success_(return==0)
_Ret_maybenull_ _Ret_maybenull_
HLOCAL HLOCAL
WINAPI WINAPI
LocalFree( LocalFree(
_Frees_ptr_opt_ HLOCAL hMem _Frees_ptr_opt_ HLOCAL hMem
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
SIZE_T SIZE_T
WINAPI WINAPI
LocalShrink( LocalShrink(
_In_ HLOCAL hMem, _In_ HLOCAL hMem,
_In_ UINT cbNewSize _In_ UINT cbNewSize
); );
WINBASEAPI WINBASEAPI
SIZE_T SIZE_T
WINAPI WINAPI
LocalCompact( LocalCompact(
_In_ UINT uMinFree _In_ UINT uMinFree
); );
#if (_WIN32_WINNT >= 0x0601)
WINBASEAPI
BOOL
WINAPI
GetProcessorSystemCycleTime (
_In_ USHORT Group,
_Out_writes_bytes_to_opt_(*ReturnedLength, *ReturnedLength) PSYSTEM_PROCESSO
R_CYCLE_TIME_INFORMATION Buffer,
_Inout_ PDWORD ReturnedLength
);
#endif // (_WIN32_WINNT >= 0x0601)
// GetBinaryType return values. // GetBinaryType return values.
#define SCS_32BIT_BINARY 0 #define SCS_32BIT_BINARY 0
#define SCS_DOS_BINARY 1 #define SCS_DOS_BINARY 1
#define SCS_WOW_BINARY 2 #define SCS_WOW_BINARY 2
#define SCS_PIF_BINARY 3 #define SCS_PIF_BINARY 3
#define SCS_POSIX_BINARY 4 #define SCS_POSIX_BINARY 4
#define SCS_OS216_BINARY 5 #define SCS_OS216_BINARY 5
#define SCS_64BIT_BINARY 6 #define SCS_64BIT_BINARY 6
skipping to change at line 1246 skipping to change at line 1307
); );
WINBASEAPI WINBASEAPI
__analysis_noreturn __analysis_noreturn
VOID VOID
WINAPI WINAPI
FatalExit( FatalExit(
_In_ int ExitCode _In_ int ExitCode
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetEnvironmentStringsA( SetEnvironmentStringsA(
_In_ _Pre_ _NullNull_terminated_ LPCH NewEnvironment _In_ _Pre_ _NullNull_terminated_ LPCH NewEnvironment
); );
#ifndef UNICODE #ifndef UNICODE
#define SetEnvironmentStrings SetEnvironmentStringsA #define SetEnvironmentStrings SetEnvironmentStringsA
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
#pragma endregion STEM) */
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
WINBASEAPI
VOID
WINAPI
RaiseFailFastException(
_In_opt_ PEXCEPTION_RECORD pExceptionRecord,
_In_opt_ PCONTEXT pContextRecord,
_In_ DWORD dwFlags
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion #pragma endregion
#if(_WIN32_WINNT >= 0x0400) #if(_WIN32_WINNT >= 0x0400)
// //
// Fiber begin // Fiber begin
// //
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#define FIBER_FLAG_FLOAT_SWITCH 0x1 // context switch floating point #define FIBER_FLAG_FLOAT_SWITCH 0x1 // context switch floating point
WINBASEAPI WINBASEAPI
VOID VOID
WINAPI WINAPI
SwitchToFiber( SwitchToFiber(
_In_ LPVOID lpFiber _In_ LPVOID lpFiber
); );
skipping to change at line 1310 skipping to change at line 1362
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
ConvertFiberToThread( ConvertFiberToThread(
VOID VOID
); );
#endif #endif
#if (_WIN32_WINNT >= 0x0603)
WINBASEAPI
_Ret_maybenull_
PVOID
WINAPI
CalloutOnFiberStack(
_In_ PVOID lpFiber,
_In_ PFIBER_CALLOUT_ROUTINE lpStartAddress,
_In_opt_ PVOID lpParameter
);
#endif
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
LPVOID LPVOID
WINAPI WINAPI
CreateFiberEx( CreateFiberEx(
_In_ SIZE_T dwStackCommitSize, _In_ SIZE_T dwStackCommitSize,
_In_ SIZE_T dwStackReserveSize, _In_ SIZE_T dwStackReserveSize,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_ LPFIBER_START_ROUTINE lpStartAddress, _In_ LPFIBER_START_ROUTINE lpStartAddress,
_In_opt_ LPVOID lpParameter _In_opt_ LPVOID lpParameter
skipping to change at line 1345 skipping to change at line 1383
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
LPVOID LPVOID
WINAPI WINAPI
ConvertThreadToFiberEx( ConvertThreadToFiberEx(
_In_opt_ LPVOID lpParameter, _In_opt_ LPVOID lpParameter,
_In_ DWORD dwFlags _In_ DWORD dwFlags
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
LPVOID LPVOID
WINAPI WINAPI
CreateFiber( CreateFiber(
_In_ SIZE_T dwStackSize, _In_ SIZE_T dwStackSize,
_In_ LPFIBER_START_ROUTINE lpStartAddress, _In_ LPFIBER_START_ROUTINE lpStartAddress,
_In_opt_ LPVOID lpParameter _In_opt_ LPVOID lpParameter
); );
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
LPVOID LPVOID
WINAPI WINAPI
ConvertThreadToFiber( ConvertThreadToFiber(
_In_opt_ LPVOID lpParameter _In_opt_ LPVOID lpParameter
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
// //
// Fiber end // Fiber end
// //
// //
// UMS begin // UMS begin
// //
skipping to change at line 1567 skipping to change at line 1605
WINBASEAPI WINBASEAPI
DWORD_PTR DWORD_PTR
WINAPI WINAPI
SetThreadAffinityMask( SetThreadAffinityMask(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_In_ DWORD_PTR dwThreadAffinityMask _In_ DWORD_PTR dwThreadAffinityMask
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#if(_WIN32_WINNT >= 0x0400)
WINBASEAPI
DWORD
WINAPI
SetThreadIdealProcessor(
_In_ HANDLE hThread,
_In_ DWORD dwIdealProcessor
);
#endif /* _WIN32_WINNT >= 0x0400 */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
//
// Process information classes.
//
typedef enum _PROCESS_INFORMATION_CLASS {
ProcessMemoryPriority,
ProcessInformationClassMax
} PROCESS_INFORMATION_CLASS;
#if (_WIN32_WINNT >= 0x0602)
WINBASEAPI
BOOL
WINAPI
GetProcessInformation (
_In_ HANDLE hProcess,
_In_ PROCESS_INFORMATION_CLASS ProcessInformationClass,
_Out_writes_bytes_(ProcessInformationSize) LPVOID ProcessInformation,
_In_ DWORD ProcessInformationSize
);
WINBASEAPI
BOOL
WINAPI
SetProcessInformation (
_In_ HANDLE hProcess,
_In_ PROCESS_INFORMATION_CLASS ProcessInformationClass,
_In_reads_bytes_(ProcessInformationSize) LPVOID ProcessInformation,
_In_ DWORD ProcessInformationSize
);
#endif // _WIN32_WINNT >= 0x0602
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
#define PROCESS_DEP_ENABLE 0x00000001 #define PROCESS_DEP_ENABLE 0x00000001
#define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 0x00000002 #define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 0x00000002
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetProcessDEPPolicy( SetProcessDEPPolicy(
_In_ DWORD dwFlags _In_ DWORD dwFlags
skipping to change at line 1773 skipping to change at line 1764
_In_ UCHAR Flags _In_ UCHAR Flags
); );
#endif // _WIN32_WINNT >= 0x0600 #endif // _WIN32_WINNT >= 0x0600
#define SEM_FAILCRITICALERRORS 0x0001 #define SEM_FAILCRITICALERRORS 0x0001
#define SEM_NOGPFAULTERRORBOX 0x0002 #define SEM_NOGPFAULTERRORBOX 0x0002
#define SEM_NOALIGNMENTFAULTEXCEPT 0x0004 #define SEM_NOALIGNMENTFAULTEXCEPT 0x0004
#define SEM_NOOPENFILEERRORBOX 0x8000 #define SEM_NOOPENFILEERRORBOX 0x8000
//
// Thread error mode support
//
WINBASEAPI
DWORD
WINAPI
GetThreadErrorMode(
VOID
);
WINBASEAPI
BOOL
WINAPI
SetThreadErrorMode(
_In_ DWORD dwNewMode,
_In_opt_ LPDWORD lpOldMode
);
#if !defined(MIDL_PASS) #if !defined(MIDL_PASS)
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
Wow64GetThreadContext( Wow64GetThreadContext(
_In_ HANDLE hThread, _In_ HANDLE hThread,
_Inout_ PWOW64_CONTEXT lpContext _Inout_ PWOW64_CONTEXT lpContext
skipping to change at line 1878 skipping to change at line 1850
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
PulseEvent( PulseEvent(
_In_ HANDLE hEvent _In_ HANDLE hEvent
); );
WINBASEAPI WINBASEAPI
DWORD
WINAPI
WaitForMultipleObjects(
_In_ DWORD nCount,
_In_reads_(nCount) CONST HANDLE *lpHandles,
_In_ BOOL bWaitAll,
_In_ DWORD dwMilliseconds
);
WINBASEAPI
ATOM ATOM
WINAPI WINAPI
GlobalDeleteAtom( GlobalDeleteAtom(
_In_ ATOM nAtom _In_ ATOM nAtom
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
InitAtomTable( InitAtomTable(
skipping to change at line 1987 skipping to change at line 1949
__drv_preferredFunction("CreateProcess","Deprecated. See MSDN for details") __drv_preferredFunction("CreateProcess","Deprecated. See MSDN for details")
WINBASEAPI WINBASEAPI
UINT UINT
WINAPI WINAPI
WinExec( WinExec(
_In_ LPCSTR lpCmdLine, _In_ LPCSTR lpCmdLine,
_In_ UINT uCmdShow _In_ UINT uCmdShow
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
ClearCommBreak( ClearCommBreak(
_In_ HANDLE hFile _In_ HANDLE hFile
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
skipping to change at line 2135 skipping to change at line 2103
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
WaitCommEvent( WaitCommEvent(
_In_ HANDLE hFile, _In_ HANDLE hFile,
_Inout_ LPDWORD lpEvtMask, _Inout_ LPDWORD lpEvtMask,
_Inout_opt_ LPOVERLAPPED lpOverlapped _Inout_opt_ LPOVERLAPPED lpOverlapped
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
SetTapePosition( SetTapePosition(
_In_ HANDLE hDevice, _In_ HANDLE hDevice,
_In_ DWORD dwPositionMethod, _In_ DWORD dwPositionMethod,
_In_ DWORD dwPartition, _In_ DWORD dwPartition,
_In_ DWORD dwOffsetLow, _In_ DWORD dwOffsetLow,
_In_ DWORD dwOffsetHigh, _In_ DWORD dwOffsetHigh,
_In_ BOOL bImmediate _In_ BOOL bImmediate
skipping to change at line 2231 skipping to change at line 2205
_In_ DWORD dwOperation, _In_ DWORD dwOperation,
_In_ LPVOID lpTapeInformation _In_ LPVOID lpTapeInformation
); );
#define SET_TAPE_MEDIA_INFORMATION 0 #define SET_TAPE_MEDIA_INFORMATION 0
#define SET_TAPE_DRIVE_INFORMATION 1 #define SET_TAPE_DRIVE_INFORMATION 1
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
int int
WINAPI WINAPI
MulDiv( MulDiv(
_In_ int nNumber, _In_ int nNumber,
_In_ int nNumerator, _In_ int nNumerator,
_In_ int nDenominator _In_ int nDenominator
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
typedef enum _DEP_SYSTEM_POLICY_TYPE { typedef enum _DEP_SYSTEM_POLICY_TYPE {
DEPPolicyAlwaysOff = 0, DEPPolicyAlwaysOff = 0,
DEPPolicyAlwaysOn, DEPPolicyAlwaysOn,
DEPPolicyOptIn, DEPPolicyOptIn,
DEPPolicyOptOut, DEPPolicyOptOut,
skipping to change at line 2302 skipping to change at line 2276
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
DosDateTimeToFileTime( DosDateTimeToFileTime(
_In_ WORD wFatDate, _In_ WORD wFatDate,
_In_ WORD wFatTime, _In_ WORD wFatTime,
_Out_ LPFILETIME lpFileTime _Out_ LPFILETIME lpFileTime
); );
//
// FORMAT_MESSAGE_ALLOCATE_BUFFER requires use of LocalFree which is in the
// "Desktop Family" only.
//
#define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if !defined(MIDL_PASS) #if !defined(MIDL_PASS)
WINBASEAPI WINBASEAPI
_Success_(return != 0) _Success_(return != 0)
DWORD DWORD
WINAPI WINAPI
FormatMessageA( FormatMessageA(
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_opt_ LPCVOID lpSource, _In_opt_ LPCVOID lpSource,
_In_ DWORD dwMessageId, _In_ DWORD dwMessageId,
_In_ DWORD dwLanguageId, _In_ DWORD dwLanguageId,
_Out_ LPSTR lpBuffer, _When_((dwFlags & FORMAT_MESSAGE_ALLOCATE_BUFFER) != 0, _Out_writes_bytes_(s
izeof(LPSTR)))
_When_((dwFlags & FORMAT_MESSAGE_ALLOCATE_BUFFER) == 0, _Out_writes_z_(nSize
))
LPSTR lpBuffer,
_In_ DWORD nSize, _In_ DWORD nSize,
_In_opt_ va_list *Arguments _In_opt_ va_list *Arguments
); );
WINBASEAPI WINBASEAPI
_Success_(return != 0) _Success_(return != 0)
DWORD DWORD
WINAPI WINAPI
FormatMessageW( FormatMessageW(
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_opt_ LPCVOID lpSource, _In_opt_ LPCVOID lpSource,
_In_ DWORD dwMessageId, _In_ DWORD dwMessageId,
_In_ DWORD dwLanguageId, _In_ DWORD dwLanguageId,
_Out_ LPWSTR lpBuffer, _When_((dwFlags & FORMAT_MESSAGE_ALLOCATE_BUFFER) != 0, _Out_writes_bytes_(s
izeof(LPWSTR)))
_When_((dwFlags & FORMAT_MESSAGE_ALLOCATE_BUFFER) == 0, _Out_writes_z_(nSize
))
LPWSTR lpBuffer,
_In_ DWORD nSize, _In_ DWORD nSize,
_In_opt_ va_list *Arguments _In_opt_ va_list *Arguments
); );
#ifdef UNICODE #ifdef UNICODE
#define FormatMessage FormatMessageW #define FormatMessage FormatMessageW
#else #else
#define FormatMessage FormatMessageA #define FormatMessage FormatMessageA
#endif // !UNICODE #endif // !UNICODE
#if defined(_M_CEE) #if defined(_M_CEE)
skipping to change at line 2379 skipping to change at line 2364
#endif /* _M_CEE */ #endif /* _M_CEE */
#endif /* MIDL_PASS */ #endif /* MIDL_PASS */
#define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200 #define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200
#define FORMAT_MESSAGE_FROM_STRING 0x00000400 #define FORMAT_MESSAGE_FROM_STRING 0x00000400
#define FORMAT_MESSAGE_FROM_HMODULE 0x00000800 #define FORMAT_MESSAGE_FROM_HMODULE 0x00000800
#define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000 #define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000
#define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000 #define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000
#define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF #define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
//
// FORMAT_MESSAGE_ALLOCATE_BUFFER requires use of LocalFree which is in the
// "Desktop Family" only.
//
#define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
WINBASEAPI
BOOL
WINAPI
GetNamedPipeInfo(
_In_ HANDLE hNamedPipe,
_Out_opt_ LPDWORD lpFlags,
_Out_opt_ LPDWORD lpOutBufferSize,
_Out_opt_ LPDWORD lpInBufferSize,
_Out_opt_ LPDWORD lpMaxInstances
);
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
CreateMailslotA( CreateMailslotA(
_In_ LPCSTR lpName, _In_ LPCSTR lpName,
_In_ DWORD nMaxMessageSize, _In_ DWORD nMaxMessageSize,
_In_ DWORD lReadTimeout, _In_ DWORD lReadTimeout,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes
); );
WINBASEAPI WINBASEAPI
skipping to change at line 2549 skipping to change at line 2516
(WINAPI *PFE_IMPORT_FUNC)( (WINAPI *PFE_IMPORT_FUNC)(
_Out_writes_bytes_to_(*ulLength, *ulLength) PBYTE pbData, _Out_writes_bytes_to_(*ulLength, *ulLength) PBYTE pbData,
_In_opt_ PVOID pvCallbackContext, _In_opt_ PVOID pvCallbackContext,
_Inout_ PULONG ulLength _Inout_ PULONG ulLength
); );
// //
// OpenRaw flag values // OpenRaw flag values
// //
#define CREATE_FOR_IMPORT (1) #define CREATE_FOR_IMPORT (1)
#define CREATE_FOR_DIR (2) #define CREATE_FOR_DIR (2)
#define OVERWRITE_HIDDEN (4) #define OVERWRITE_HIDDEN (4)
#define EFSRPC_SECURE_ONLY (8) #define EFSRPC_SECURE_ONLY (8)
#define EFS_DROP_ALTERNATE_STREAMS (0x10)
WINADVAPI WINADVAPI
DWORD DWORD
WINAPI WINAPI
OpenEncryptedFileRawA( OpenEncryptedFileRawA(
_In_ LPCSTR lpFileName, _In_ LPCSTR lpFileName,
_In_ ULONG ulFlags, _In_ ULONG ulFlags,
_Outptr_ PVOID *pvContext _Outptr_ PVOID *pvContext
); );
WINADVAPI WINADVAPI
skipping to change at line 2601 skipping to change at line 2569
_In_ PVOID pvContext _In_ PVOID pvContext
); );
WINADVAPI WINADVAPI
VOID VOID
WINAPI WINAPI
CloseEncryptedFileRaw( CloseEncryptedFileRaw(
_In_ PVOID pvContext _In_ PVOID pvContext
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
// //
// _l Compat Functions // _l Compat Functions
// //
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
int int
WINAPI WINAPI
lstrcmpA( lstrcmpA(
_In_ LPCSTR lpString1, _In_ LPCSTR lpString1,
_In_ LPCSTR lpString2 _In_ LPCSTR lpString2
); );
WINBASEAPI WINBASEAPI
int int
WINAPI WINAPI
skipping to change at line 2645 skipping to change at line 2619
lstrcmpiW( lstrcmpiW(
_In_ LPCWSTR lpString1, _In_ LPCWSTR lpString1,
_In_ LPCWSTR lpString2 _In_ LPCWSTR lpString2
); );
#ifdef UNICODE #ifdef UNICODE
#define lstrcmpi lstrcmpiW #define lstrcmpi lstrcmpiW
#else #else
#define lstrcmpi lstrcmpiA #define lstrcmpi lstrcmpiA
#endif // !UNICODE #endif // !UNICODE
#if defined(DEPRECATE_SUPPORTED)
#pragma warning(push)
#pragma warning(disable:4995)
#endif
WINBASEAPI WINBASEAPI
_Check_return_ _Check_return_
_Success_(return != NULL) _Success_(return != NULL)
_Post_satisfies_(return == lpString1) _Post_satisfies_(return == lpString1)
_Ret_maybenull_ _Ret_maybenull_
LPSTR LPSTR
WINAPI WINAPI
lstrcpynA( lstrcpynA(
_Out_writes_(iMaxLength) LPSTR lpString1, _Out_writes_(iMaxLength) LPSTR lpString1,
_In_ LPCSTR lpString2, _In_ LPCSTR lpString2,
skipping to change at line 2675 skipping to change at line 2654
_Out_writes_(iMaxLength) LPWSTR lpString1, _Out_writes_(iMaxLength) LPWSTR lpString1,
_In_ LPCWSTR lpString2, _In_ LPCWSTR lpString2,
_In_ int iMaxLength _In_ int iMaxLength
); );
#ifdef UNICODE #ifdef UNICODE
#define lstrcpyn lstrcpynW #define lstrcpyn lstrcpynW
#else #else
#define lstrcpyn lstrcpynA #define lstrcpyn lstrcpynA
#endif // !UNICODE #endif // !UNICODE
#if defined(DEPRECATE_SUPPORTED)
#pragma warning(push)
#pragma warning(disable:4995)
#endif
WINBASEAPI WINBASEAPI
LPSTR LPSTR
WINAPI WINAPI
lstrcpyA( lstrcpyA(
_Out_writes_(_String_length_(lpString2) + 1) LPSTR lpString1, // deprecated: annotation is as good as it gets _Out_writes_(_String_length_(lpString2) + 1) LPSTR lpString1, // deprecated: annotation is as good as it gets
_In_ LPCSTR lpString2 _In_ LPCSTR lpString2
); );
WINBASEAPI WINBASEAPI
LPWSTR LPWSTR
WINAPI WINAPI
skipping to change at line 2742 skipping to change at line 2716
WINAPI WINAPI
lstrlenW( lstrlenW(
_In_ LPCWSTR lpString _In_ LPCWSTR lpString
); );
#ifdef UNICODE #ifdef UNICODE
#define lstrlen lstrlenW #define lstrlen lstrlenW
#else #else
#define lstrlen lstrlenA #define lstrlen lstrlenA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
HFILE HFILE
WINAPI WINAPI
OpenFile( OpenFile(
_In_ LPCSTR lpFileName, _In_ LPCSTR lpFileName,
_Inout_ LPOFSTRUCT lpReOpenBuff, _Inout_ LPOFSTRUCT lpReOpenBuff,
_In_ UINT uStyle _In_ UINT uStyle
); );
WINBASEAPI WINBASEAPI
skipping to change at line 2937 skipping to change at line 2917
#define STARTF_USESTDHANDLES 0x00000100 #define STARTF_USESTDHANDLES 0x00000100
#if(WINVER >= 0x0400) #if(WINVER >= 0x0400)
#define STARTF_USEHOTKEY 0x00000200 #define STARTF_USEHOTKEY 0x00000200
#define STARTF_TITLEISLINKNAME 0x00000800 #define STARTF_TITLEISLINKNAME 0x00000800
#define STARTF_TITLEISAPPID 0x00001000 #define STARTF_TITLEISAPPID 0x00001000
#define STARTF_PREVENTPINNING 0x00002000 #define STARTF_PREVENTPINNING 0x00002000
#endif /* WINVER >= 0x0400 */ #endif /* WINVER >= 0x0400 */
#if(WINVER >= 0x0600)
#define STARTF_UNTRUSTEDSOURCE 0x00008000
#endif /* WINVER >= 0x0600 */
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
typedef struct _STARTUPINFOEXA { typedef struct _STARTUPINFOEXA {
STARTUPINFOA StartupInfo; STARTUPINFOA StartupInfo;
LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList; LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList;
} STARTUPINFOEXA, *LPSTARTUPINFOEXA; } STARTUPINFOEXA, *LPSTARTUPINFOEXA;
typedef struct _STARTUPINFOEXW { typedef struct _STARTUPINFOEXW {
STARTUPINFOW StartupInfo; STARTUPINFOW StartupInfo;
LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList; LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList;
} STARTUPINFOEXW, *LPSTARTUPINFOEXW; } STARTUPINFOEXW, *LPSTARTUPINFOEXW;
skipping to change at line 2962 skipping to change at line 2946
typedef LPSTARTUPINFOEXA LPSTARTUPINFOEX; typedef LPSTARTUPINFOEXA LPSTARTUPINFOEX;
#endif // UNICODE #endif // UNICODE
#endif // (_WIN32_WINNT >= 0x0600) #endif // (_WIN32_WINNT >= 0x0600)
#define SHUTDOWN_NORETRY 0x00000001 #define SHUTDOWN_NORETRY 0x00000001
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
OpenMutexA( OpenMutexA(
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle, _In_ BOOL bInheritHandle,
_In_ LPCSTR lpName _In_ LPCSTR lpName
); );
skipping to change at line 2988 skipping to change at line 2972
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
CreateSemaphoreA( CreateSemaphoreA(
_In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
_In_ LONG lInitialCount, _In_ LONG lInitialCount,
_In_ LONG lMaximumCount, _In_ LONG lMaximumCount,
_In_opt_ LPCSTR lpName _In_opt_ LPCSTR lpName
); );
WINBASEAPI #ifndef UNICODE
_Ret_maybenull_
HANDLE
WINAPI
CreateSemaphoreW(
_In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
_In_ LONG lInitialCount,
_In_ LONG lMaximumCount,
_In_opt_ LPCWSTR lpName
);
#ifdef UNICODE
#define CreateSemaphore CreateSemaphoreW
#else
#define CreateSemaphore CreateSemaphoreA #define CreateSemaphore CreateSemaphoreA
#endif // !UNICODE #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) ) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
OpenSemaphoreA( OpenSemaphoreA(
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle, _In_ BOOL bInheritHandle,
_In_ LPCSTR lpName _In_ LPCSTR lpName
); );
skipping to change at line 3028 skipping to change at line 3006
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
CreateWaitableTimerA( CreateWaitableTimerA(
_In_opt_ LPSECURITY_ATTRIBUTES lpTimerAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpTimerAttributes,
_In_ BOOL bManualReset, _In_ BOOL bManualReset,
_In_opt_ LPCSTR lpTimerName _In_opt_ LPCSTR lpTimerName
); );
WINBASEAPI #ifndef UNICODE
_Ret_maybenull_
HANDLE
WINAPI
CreateWaitableTimerW(
_In_opt_ LPSECURITY_ATTRIBUTES lpTimerAttributes,
_In_ BOOL bManualReset,
_In_opt_ LPCWSTR lpTimerName
);
#ifdef UNICODE
#define CreateWaitableTimer CreateWaitableTimerW
#else
#define CreateWaitableTimer CreateWaitableTimerA #define CreateWaitableTimer CreateWaitableTimerA
#endif // !UNICODE #endif
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
OpenWaitableTimerA( OpenWaitableTimerA(
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle, _In_ BOOL bInheritHandle,
_In_ LPCSTR lpTimerName _In_ LPCSTR lpTimerName
); );
skipping to change at line 3092 skipping to change at line 3059
_In_ DWORD dwDesiredAccess _In_ DWORD dwDesiredAccess
); );
#ifndef UNICODE #ifndef UNICODE
#define CreateWaitableTimerEx CreateWaitableTimerExA #define CreateWaitableTimerEx CreateWaitableTimerExA
#endif #endif
#endif /* (_WIN32_WINNT >= 0x0600) */ #endif /* (_WIN32_WINNT >= 0x0600) */
#endif /* (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) */ #endif /* (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
CreateFileMappingA( CreateFileMappingA(
_In_ HANDLE hFile, _In_ HANDLE hFile,
_In_opt_ LPSECURITY_ATTRIBUTES lpFileMappingAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
_In_ DWORD flProtect, _In_ DWORD flProtect,
_In_ DWORD dwMaximumSizeHigh, _In_ DWORD dwMaximumSizeHigh,
_In_ DWORD dwMaximumSizeLow, _In_ DWORD dwMaximumSizeLow,
skipping to change at line 3142 skipping to change at line 3115
WINAPI WINAPI
OpenFileMappingA( OpenFileMappingA(
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle, _In_ BOOL bInheritHandle,
_In_ LPCSTR lpName _In_ LPCSTR lpName
); );
#ifndef UNICODE #ifndef UNICODE
#define OpenFileMapping OpenFileMappingA #define OpenFileMapping OpenFileMappingA
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
_Success_(return != 0 && return <= nBufferLength) _Success_(return != 0 && return <= nBufferLength)
DWORD DWORD
WINAPI WINAPI
GetLogicalDriveStringsA( GetLogicalDriveStringsA(
_In_ DWORD nBufferLength, _In_ DWORD nBufferLength,
_Out_writes_to_opt_(nBufferLength, return + 1) LPSTR lpBuffer _Out_writes_to_opt_(nBufferLength, return + 1) LPSTR lpBuffer
); );
#ifndef UNICODE #ifndef UNICODE
#define GetLogicalDriveStrings GetLogicalDriveStringsA #define GetLogicalDriveStrings GetLogicalDriveStringsA
#endif #endif
WINBASEAPI #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
_Ret_maybenull_ STEM) */
HMODULE #pragma endregion
WINAPI
LoadLibraryA( #pragma region Desktop Family
_In_ LPCSTR lpLibFileName #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
);
WINBASEAPI
_Ret_maybenull_
HMODULE
WINAPI
LoadLibraryW(
_In_ LPCWSTR lpLibFileName
);
#ifdef UNICODE
#define LoadLibrary LoadLibraryW
#else
#define LoadLibrary LoadLibraryA
#endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0602) #if (_WIN32_WINNT >= 0x0602)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HMODULE HMODULE
WINAPI WINAPI
LoadPackagedLibrary ( LoadPackagedLibrary (
_In_ LPCWSTR lpwLibFileName, _In_ LPCWSTR lpwLibFileName,
_Reserved_ DWORD Reserved _Reserved_ DWORD Reserved
); );
#endif // _WIN32_WINNT >= 0x0602 #endif // _WIN32_WINNT >= 0x0602
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
#define PROCESS_NAME_NATIVE 0x00000001 #define PROCESS_NAME_NATIVE 0x00000001
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
QueryFullProcessImageNameA( QueryFullProcessImageNameA(
_In_ HANDLE hProcess, _In_ HANDLE hProcess,
skipping to change at line 3227 skipping to change at line 3192
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Out_writes_to_(*lpdwSize, *lpdwSize) LPWSTR lpExeName, _Out_writes_to_(*lpdwSize, *lpdwSize) LPWSTR lpExeName,
_Inout_ PDWORD lpdwSize _Inout_ PDWORD lpdwSize
); );
#ifdef UNICODE #ifdef UNICODE
#define QueryFullProcessImageName QueryFullProcessImageNameW #define QueryFullProcessImageName QueryFullProcessImageNameW
#else #else
#define QueryFullProcessImageName QueryFullProcessImageNameA #define QueryFullProcessImageName QueryFullProcessImageNameA
#endif // !UNICODE #endif // !UNICODE
#endif #endif // _WIN32_WINNT >= 0x0600
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
// //
// Extended process and thread attribute support // Extended process and thread attribute support
// //
#define PROC_THREAD_ATTRIBUTE_NUMBER 0x0000FFFF #define PROC_THREAD_ATTRIBUTE_NUMBER 0x0000FFFF
#define PROC_THREAD_ATTRIBUTE_THREAD 0x00010000 // Attribute may be used wit h thread creation #define PROC_THREAD_ATTRIBUTE_THREAD 0x00010000 // Attribute may be used wit h thread creation
#define PROC_THREAD_ATTRIBUTE_INPUT 0x00020000 // Attribute is input only #define PROC_THREAD_ATTRIBUTE_INPUT 0x00020000 // Attribute is input only
skipping to change at line 3257 skipping to change at line 3222
ProcThreadAttributeGroupAffinity = 3, ProcThreadAttributeGroupAffinity = 3,
ProcThreadAttributePreferredNode = 4, ProcThreadAttributePreferredNode = 4,
ProcThreadAttributeIdealProcessor = 5, ProcThreadAttributeIdealProcessor = 5,
ProcThreadAttributeUmsThread = 6, ProcThreadAttributeUmsThread = 6,
ProcThreadAttributeMitigationPolicy = 7, ProcThreadAttributeMitigationPolicy = 7,
#endif #endif
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
ProcThreadAttributeSecurityCapabilities = 9, ProcThreadAttributeSecurityCapabilities = 9,
#endif #endif
ProcThreadAttributeProtectionLevel = 11, ProcThreadAttributeProtectionLevel = 11,
#if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE)
#endif
#if (_WIN32_WINNT >= _WIN32_WINNT_WINTHRESHOLD)
ProcThreadAttributeJobList = 13,
ProcThreadAttributeChildProcessPolicy = 14,
#endif
} PROC_THREAD_ATTRIBUTE_NUM; } PROC_THREAD_ATTRIBUTE_NUM;
#endif #endif
#define ProcThreadAttributeValue(Number, Thread, Input, Additive) \ #define ProcThreadAttributeValue(Number, Thread, Input, Additive) \
(((Number) & PROC_THREAD_ATTRIBUTE_NUMBER) | \ (((Number) & PROC_THREAD_ATTRIBUTE_NUMBER) | \
((Thread != FALSE) ? PROC_THREAD_ATTRIBUTE_THREAD : 0) | \ ((Thread != FALSE) ? PROC_THREAD_ATTRIBUTE_THREAD : 0) | \
((Input != FALSE) ? PROC_THREAD_ATTRIBUTE_INPUT : 0) | \ ((Input != FALSE) ? PROC_THREAD_ATTRIBUTE_INPUT : 0) | \
((Additive != FALSE) ? PROC_THREAD_ATTRIBUTE_ADDITIVE : 0)) ((Additive != FALSE) ? PROC_THREAD_ATTRIBUTE_ADDITIVE : 0))
#define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS \ #define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS \
skipping to change at line 3294 skipping to change at line 3265
#endif #endif
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
#define PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES \ #define PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES \
ProcThreadAttributeValue (ProcThreadAttributeSecurityCapabilities, FALSE, TR UE, FALSE) ProcThreadAttributeValue (ProcThreadAttributeSecurityCapabilities, FALSE, TR UE, FALSE)
#endif #endif
#define PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL \ #define PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL \
ProcThreadAttributeValue (ProcThreadAttributeProtectionLevel, FALSE, TRUE, F ALSE) ProcThreadAttributeValue (ProcThreadAttributeProtectionLevel, FALSE, TRUE, F ALSE)
#if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE)
#endif
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN7) #if (_WIN32_WINNT >= _WIN32_WINNT_WIN7)
// //
// Define legacy creation mitigation policy options, which are straight // Define legacy creation mitigation policy options, which are straight
// bitmasks. Bits 0-5 are legacy bits. // bitmasks. Bits 0-5 are legacy bits.
// //
#define PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE 0x01 #define PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE 0x01
#define PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE 0x02 #define PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE 0x02
#define PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE 0x04 #define PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE 0x04
#endif #endif
skipping to change at line 3406 skipping to change at line 3380
// Define dynamic code options. // Define dynamic code options.
// //
#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_MASK (0x00000003ui64 << 36) #define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_MASK (0x00000003ui64 << 36)
#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_DEFER (0x00000000ui64 << 36) #define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_DEFER (0x00000000ui64 << 36)
#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON (0x00000001ui64 << 36) #define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON (0x00000001ui64 << 36)
#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_OFF (0x00000002ui64 << 36) #define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_OFF (0x00000002ui64 << 36)
#define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_RESERVED (0x00000003ui64 << 36) #define PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_RESERVED (0x00000003ui64 << 36)
// //
// Define Control Flow Guard (CFG) mitigation policy options. Control Flow
// Guard allows indirect control transfers to be checked at runtime.
//
#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_MASK
(0x00000003ui64 << 40)
#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_DEFER
(0x00000000ui64 << 40)
#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_ON
(0x00000001ui64 << 40)
#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_OFF
(0x00000002ui64 << 40)
#define PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_RESERVED
(0x00000003ui64 << 40)
//
// Define module signature options. When enabled, this option will // Define module signature options. When enabled, this option will
// block mapping of non-microsoft binaries. // block mapping of non-microsoft binaries.
// //
#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_MASK (0x00000003ui64 << 44) #define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_MASK (0x00000003ui64 << 44)
#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_DEFER (0x00000000ui64 << 44) #define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_DEFER (0x00000000ui64 << 44)
#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_O N (0x00000001ui64 << 44) #define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_O N (0x00000001ui64 << 44)
#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_O FF (0x00000002ui64 << 44) #define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_O FF (0x00000002ui64 << 44)
#define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_RESERVED (0x00000003ui64 << 44) #define PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_RESERVED (0x00000003ui64 << 44)
#if (_WIN32_WINNT >= _WIN32_WINNT_WINTHRESHOLD)
//
// Define Font Disable Policy. When enabled, this option will
// block loading Non System Fonts.
//
#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_MASK
(0x00000003ui64 << 48)
#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_DEFER
(0x00000000ui64 << 48)
#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_ON
(0x00000001ui64 << 48)
#define PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_OFF
(0x00000002ui64 << 48)
#define PROCESS_CREATION_MITIGATION_POLICY_AUDIT_NONSYSTEM_FONTS
(0x00000003ui64 << 48)
//
// Define remote image load options. When enabled, this option will
// block mapping of images from remote devices.
//
#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_MASK
(0x00000003ui64 << 52)
#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_DEFER
(0x00000000ui64 << 52)
#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_ON
(0x00000001ui64 << 52)
#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_OFF
(0x00000002ui64 << 52)
#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_RESERVED
(0x00000003ui64 << 52)
//
// Define low IL image load options. When enabled, this option will
// block mapping of images that have the low mandatory label.
//
#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_MASK
(0x00000003ui64 << 56)
#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_DEFER
(0x00000000ui64 << 56)
#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_ON
(0x00000001ui64 << 56)
#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_OFF
(0x00000002ui64 << 56)
#define PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_RESERVED
(0x00000003ui64 << 56)
#endif // _WIN32_WINNT_WINTHRESHOLD
#endif // _WIN32_WINNT_WINBLUE #endif // _WIN32_WINNT_WINBLUE
#endif // _WIN32_WINNT_WIN8 #endif // _WIN32_WINNT_WIN8
WINBASEAPI #if (_WIN32_WINNT >= _WIN32_WINNT_WINTHRESHOLD)
BOOL
WINAPI
GetProcessShutdownParameters(
_Out_ LPDWORD lpdwLevel,
_Out_ LPDWORD lpdwFlags
);
WINBASEAPI #define PROC_THREAD_ATTRIBUTE_JOB_LIST \
VOID ProcThreadAttributeValue (ProcThreadAttributeJobList, FALSE, TRUE, FALSE)
WINAPI
FatalAppExitA( //
_In_ UINT uAction, // Define Attribute to disable creation of child process
_In_ LPCSTR lpMessageText //
);
WINBASEAPI #define PROCESS_CREATION_CHILD_PROCESS_RESTRICTED
VOID 0x01
WINAPI #define PROCESS_CREATION_CHILD_PROCESS_OVERRIDE
FatalAppExitW( 0x02
_In_ UINT uAction,
_In_ LPCWSTR lpMessageText #define PROC_THREAD_ATTRIBUTE_CHILD_PROCESS_POLICY \
); ProcThreadAttributeValue (ProcThreadAttributeChildProcessPolicy, FALSE, TRUE
#ifdef UNICODE , FALSE)
#define FatalAppExit FatalAppExitW
#else #endif // _WIN32_WINNT_WINTHRESHOLD
#define FatalAppExit FatalAppExitA
#endif // !UNICODE #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
VOID VOID
WINAPI WINAPI
GetStartupInfoA( GetStartupInfoA(
_Out_ LPSTARTUPINFOA lpStartupInfo _Out_ LPSTARTUPINFOA lpStartupInfo
); );
#ifndef UNICODE #ifndef UNICODE
#define GetStartupInfo GetStartupInfoA #define GetStartupInfo GetStartupInfoA
#endif #endif
#if defined(_M_CEE) #if defined(_M_CEE)
#undef GetEnvironmentVariable #undef GetEnvironmentVariable
#if _MSC_VER >= 1400 #if _MSC_VER >= 1400
#pragma warning(push) #pragma warning(push)
#pragma warning(disable: 6103) #pragma warning(disable: 6103)
#endif _MSC_VER >= 1400 /* _MSC_VER >= 1400 */ #endif /* _MSC_VER >= 1400 */
_Success_(return != 0 && return < nSize) _Success_(return != 0 && return < nSize)
__inline __inline
DWORD DWORD
GetEnvironmentVariable( GetEnvironmentVariable(
_In_opt_ LPCTSTR lpName, _In_opt_ LPCTSTR lpName,
_Out_writes_to_opt_(nSize, return + 1) LPTSTR lpBuffer, _Out_writes_to_opt_(nSize, return + 1) LPTSTR lpBuffer,
_In_ DWORD nSize _In_ DWORD nSize
) )
{ {
skipping to change at line 3486 skipping to change at line 3503
return GetEnvironmentVariableA( return GetEnvironmentVariableA(
#endif #endif
lpName, lpName,
lpBuffer, lpBuffer,
nSize nSize
); );
} }
#if _MSC_VER >= 1400 #if _MSC_VER >= 1400
#pragma warning(pop) #pragma warning(pop)
#endif _MSC_VER >= 1400 /* _MSC_VER >= 1400 */ #endif /* _MSC_VER >= 1400 */
#endif /* _M_CEE */ #endif /* _M_CEE */
#if defined(_M_CEE) #if defined(_M_CEE)
#undef SetEnvironmentVariable #undef SetEnvironmentVariable
__inline __inline
BOOL BOOL
SetEnvironmentVariable( SetEnvironmentVariable(
LPCTSTR lpName, LPCTSTR lpName,
LPCTSTR lpValue LPCTSTR lpValue
skipping to change at line 3510 skipping to change at line 3527
return SetEnvironmentVariableW( return SetEnvironmentVariableW(
#else #else
return SetEnvironmentVariableA( return SetEnvironmentVariableA(
#endif #endif
lpName, lpName,
lpValue lpValue
); );
} }
#endif /* _M_CEE */ #endif /* _M_CEE */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
GetFirmwareEnvironmentVariableA( GetFirmwareEnvironmentVariableA(
_In_ LPCSTR lpName, _In_ LPCSTR lpName,
_In_ LPCSTR lpGuid, _In_ LPCSTR lpGuid,
_Out_writes_bytes_to_opt_(nSize, return) PVOID pBuffer, _Out_writes_bytes_to_opt_(nSize, return) PVOID pBuffer,
_In_ DWORD nSize _In_ DWORD nSize
); );
WINBASEAPI WINBASEAPI
skipping to change at line 3618 skipping to change at line 3641
_In_ DWORD dwAttributes _In_ DWORD dwAttributes
); );
#ifdef UNICODE #ifdef UNICODE
#define SetFirmwareEnvironmentVariableEx SetFirmwareEnvironmentVariableExW #define SetFirmwareEnvironmentVariableEx SetFirmwareEnvironmentVariableExW
#else #else
#define SetFirmwareEnvironmentVariableEx SetFirmwareEnvironmentVariableExA #define SetFirmwareEnvironmentVariableEx SetFirmwareEnvironmentVariableExA
#endif // !UNICODE #endif // !UNICODE
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetFirmwareType ( GetFirmwareType (
_Inout_ PFIRMWARE_TYPE FirmwareType _Inout_ PFIRMWARE_TYPE FirmwareType
); );
WINBASEAPI WINBASEAPI
skipping to change at line 3645 skipping to change at line 3674
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HRSRC HRSRC
WINAPI WINAPI
FindResourceA( FindResourceA(
_In_opt_ HMODULE hModule, _In_opt_ HMODULE hModule,
_In_ LPCSTR lpName, _In_ LPCSTR lpName,
_In_ LPCSTR lpType _In_ LPCSTR lpType
); );
WINBASEAPI #ifndef UNICODE
_Ret_maybenull_
HRSRC
WINAPI
FindResourceW(
_In_opt_ HMODULE hModule,
_In_ LPCWSTR lpName,
_In_ LPCWSTR lpType
);
#ifdef UNICODE
#define FindResource FindResourceW
#else
#define FindResource FindResourceA #define FindResource FindResourceA
#endif // !UNICODE #endif
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HRSRC HRSRC
WINAPI WINAPI
FindResourceExA( FindResourceExA(
_In_opt_ HMODULE hModule, _In_opt_ HMODULE hModule,
_In_ LPCSTR lpType, _In_ LPCSTR lpType,
_In_ LPCSTR lpName, _In_ LPCSTR lpName,
_In_ WORD wLanguage _In_ WORD wLanguage
skipping to change at line 4384 skipping to change at line 4402
_In_reads_bytes_opt_(uSizeStruct) LPVOID lpStruct, _In_reads_bytes_opt_(uSizeStruct) LPVOID lpStruct,
_In_ UINT uSizeStruct, _In_ UINT uSizeStruct,
_In_opt_ LPCWSTR szFile _In_opt_ LPCWSTR szFile
); );
#ifdef UNICODE #ifdef UNICODE
#define WritePrivateProfileStruct WritePrivateProfileStructW #define WritePrivateProfileStruct WritePrivateProfileStructW
#else #else
#define WritePrivateProfileStruct WritePrivateProfileStructA #define WritePrivateProfileStruct WritePrivateProfileStructA
#endif // !UNICODE #endif // !UNICODE
WINBASEAPI
DWORD
WINAPI
GetTempPathA(
_In_ DWORD nBufferLength,
_Out_writes_to_opt_(nBufferLength, return + 1) LPSTR lpBuffer
);
#ifndef UNICODE
#define GetTempPath GetTempPathA
#endif
WINBASEAPI
UINT
WINAPI
GetTempFileNameA(
_In_ LPCSTR lpPathName,
_In_ LPCSTR lpPrefixString,
_In_ UINT uUnique,
_Out_writes_(MAX_PATH) LPSTR lpTempFileName
);
#ifndef UNICODE
#define GetTempFileName GetTempFileNameA
#endif
#if defined(_M_CEE) #if defined(_M_CEE)
#undef GetTempFileName #undef GetTempFileName
__inline __inline
UINT UINT
GetTempFileName( GetTempFileName(
LPCTSTR lpPathName, LPCTSTR lpPathName,
LPCTSTR lpPrefixString, LPCTSTR lpPrefixString,
UINT uUnique, UINT uUnique,
LPTSTR lpTempFileName LPTSTR lpTempFileName
) )
skipping to change at line 4436 skipping to change at line 4430
uUnique, uUnique,
lpTempFileName lpTempFileName
); );
} }
#endif /* _M_CEE */ #endif /* _M_CEE */
#if !defined(RC_INVOKED) // RC warns because "WINBASE_DECLARE_GET_SYSTEM_WOW64_D IRECTORY" is a bit long. #if !defined(RC_INVOKED) // RC warns because "WINBASE_DECLARE_GET_SYSTEM_WOW64_D IRECTORY" is a bit long.
#if _WIN32_WINNT >= 0x0501 || defined(WINBASE_DECLARE_GET_SYSTEM_WOW64_DIRECTORY ) #if _WIN32_WINNT >= 0x0501 || defined(WINBASE_DECLARE_GET_SYSTEM_WOW64_DIRECTORY )
WINBASEAPI WINBASEAPI
_Success_(return != 0 && return < uSize)
UINT
WINAPI
GetSystemWow64DirectoryA(
_Out_writes_to_opt_(uSize, return + 1) LPSTR lpBuffer,
_In_ UINT uSize
);
WINBASEAPI
_Success_(return != 0 && return < uSize)
UINT
WINAPI
GetSystemWow64DirectoryW(
_Out_writes_to_opt_(uSize, return + 1) LPWSTR lpBuffer,
_In_ UINT uSize
);
#ifdef UNICODE
#define GetSystemWow64Directory GetSystemWow64DirectoryW
#else
#define GetSystemWow64Directory GetSystemWow64DirectoryA
#endif // !UNICODE
WINBASEAPI
BOOLEAN BOOLEAN
WINAPI WINAPI
Wow64EnableWow64FsRedirection ( Wow64EnableWow64FsRedirection (
_In_ BOOLEAN Wow64FsEnableRedirection _In_ BOOLEAN Wow64FsEnableRedirection
); );
// //
// for GetProcAddress // for GetProcAddress
// //
typedef UINT (WINAPI* PGET_SYSTEM_WOW64_DIRECTORY_A)(_Out_writes_to_opt_(uSize, return + 1) LPSTR lpBuffer, _In_ UINT uSize); typedef UINT (WINAPI* PGET_SYSTEM_WOW64_DIRECTORY_A)(_Out_writes_to_opt_(uSize, return + 1) LPSTR lpBuffer, _In_ UINT uSize);
skipping to change at line 4618 skipping to change at line 4590
#endif #endif
lpPathName, lpPathName,
lpSecurityAttributes lpSecurityAttributes
); );
} }
#endif /* _M_CEE */ #endif /* _M_CEE */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CreateDirectoryExA( CreateDirectoryExA(
_In_ LPCSTR lpTemplateDirectory, _In_ LPCSTR lpTemplateDirectory,
_In_ LPCSTR lpNewDirectory, _In_ LPCSTR lpNewDirectory,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes
); );
WINBASEAPI WINBASEAPI
skipping to change at line 4643 skipping to change at line 4615
_In_ LPCWSTR lpTemplateDirectory, _In_ LPCWSTR lpTemplateDirectory,
_In_ LPCWSTR lpNewDirectory, _In_ LPCWSTR lpNewDirectory,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes
); );
#ifdef UNICODE #ifdef UNICODE
#define CreateDirectoryEx CreateDirectoryExW #define CreateDirectoryEx CreateDirectoryExW
#else #else
#define CreateDirectoryEx CreateDirectoryExA #define CreateDirectoryEx CreateDirectoryExA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if _WIN32_WINNT >= 0x0600 #if _WIN32_WINNT >= 0x0600
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CreateDirectoryTransactedA( CreateDirectoryTransactedA(
_In_opt_ LPCSTR lpTemplateDirectory, _In_opt_ LPCSTR lpTemplateDirectory,
_In_ LPCSTR lpNewDirectory, _In_ LPCSTR lpNewDirectory,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
_In_ HANDLE hTransaction _In_ HANDLE hTransaction
skipping to change at line 4719 skipping to change at line 4697
_In_ HANDLE hTransaction _In_ HANDLE hTransaction
); );
#ifdef UNICODE #ifdef UNICODE
#define GetFullPathNameTransacted GetFullPathNameTransactedW #define GetFullPathNameTransacted GetFullPathNameTransactedW
#else #else
#define GetFullPathNameTransacted GetFullPathNameTransactedA #define GetFullPathNameTransacted GetFullPathNameTransactedA
#endif // !UNICODE #endif // !UNICODE
#endif // _WIN32_WINNT >= 0x0600 #endif // _WIN32_WINNT >= 0x0600
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#define DDD_RAW_TARGET_PATH 0x00000001 #define DDD_RAW_TARGET_PATH 0x00000001
#define DDD_REMOVE_DEFINITION 0x00000002 #define DDD_REMOVE_DEFINITION 0x00000002
#define DDD_EXACT_MATCH_ON_REMOVE 0x00000004 #define DDD_EXACT_MATCH_ON_REMOVE 0x00000004
#define DDD_NO_BROADCAST_SYSTEM 0x00000008 #define DDD_NO_BROADCAST_SYSTEM 0x00000008
#define DDD_LUID_BROADCAST_DRIVE 0x00000010 #define DDD_LUID_BROADCAST_DRIVE 0x00000010
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
DefineDosDeviceA( DefineDosDeviceA(
skipping to change at line 4749 skipping to change at line 4733
WINAPI WINAPI
QueryDosDeviceA( QueryDosDeviceA(
_In_opt_ LPCSTR lpDeviceName, _In_opt_ LPCSTR lpDeviceName,
_Out_writes_to_opt_(ucchMax, return) LPSTR lpTargetPath, _Out_writes_to_opt_(ucchMax, return) LPSTR lpTargetPath,
_In_ DWORD ucchMax _In_ DWORD ucchMax
); );
#ifndef UNICODE #ifndef UNICODE
#define QueryDosDevice QueryDosDeviceA #define QueryDosDevice QueryDosDeviceA
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#define EXPAND_LOCAL_DRIVES #define EXPAND_LOCAL_DRIVES
#if _WIN32_WINNT >= 0x0600 #if _WIN32_WINNT >= 0x0600
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
CreateFileTransactedA( CreateFileTransactedA(
_In_ LPCSTR lpFileName, _In_ LPCSTR lpFileName,
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
skipping to change at line 4791 skipping to change at line 4781
_Reserved_ PVOID lpExtendedParameter _Reserved_ PVOID lpExtendedParameter
); );
#ifdef UNICODE #ifdef UNICODE
#define CreateFileTransacted CreateFileTransactedW #define CreateFileTransacted CreateFileTransactedW
#else #else
#define CreateFileTransacted CreateFileTransactedA #define CreateFileTransacted CreateFileTransactedA
#endif // !UNICODE #endif // !UNICODE
#endif // _WIN32_WINNT >= 0x0600 #endif // _WIN32_WINNT >= 0x0600
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if _WIN32_WINNT >= 0x0502 #if _WIN32_WINNT >= 0x0502
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
ReOpenFile( ReOpenFile(
_In_ HANDLE hOriginalFile, _In_ HANDLE hOriginalFile,
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
_In_ DWORD dwShareMode, _In_ DWORD dwShareMode,
_In_ DWORD dwFlagsAndAttributes _In_ DWORD dwFlagsAndAttributes
); );
#endif // _WIN32_WINNT >= 0x0502 #endif // _WIN32_WINNT >= 0x0502
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if _WIN32_WINNT >= 0x0600 #if _WIN32_WINNT >= 0x0600
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetFileAttributesTransactedA( SetFileAttributesTransactedA(
_In_ LPCSTR lpFileName, _In_ LPCSTR lpFileName,
_In_ DWORD dwFileAttributes, _In_ DWORD dwFileAttributes,
_In_ HANDLE hTransaction _In_ HANDLE hTransaction
); );
skipping to change at line 5004 skipping to change at line 5006
#define FindFirstFileTransacted FindFirstFileTransactedA #define FindFirstFileTransacted FindFirstFileTransactedA
#endif // !UNICODE #endif // !UNICODE
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#endif /* _WIN32_WINNT >= 0x0400 */ #endif /* _WIN32_WINNT >= 0x0400 */
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CopyFileA( CopyFileA(
_In_ LPCSTR lpExistingFileName, _In_ LPCSTR lpExistingFileName,
_In_ LPCSTR lpNewFileName, _In_ LPCSTR lpNewFileName,
_In_ BOOL bFailIfExists _In_ BOOL bFailIfExists
); );
WINBASEAPI WINBASEAPI
skipping to change at line 5051 skipping to change at line 5053
#else #else
return CopyFileA( return CopyFileA(
#endif #endif
lpExistingFileName, lpExistingFileName,
lpNewFileName, lpNewFileName,
bFailIfExists bFailIfExists
); );
} }
#endif /* _M_CEE */ #endif /* _M_CEE */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#if(_WIN32_WINNT >= 0x0400) #if(_WIN32_WINNT >= 0x0400)
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
typedef typedef
DWORD DWORD
(WINAPI *LPPROGRESS_ROUTINE)( (WINAPI *LPPROGRESS_ROUTINE)(
_In_ LARGE_INTEGER TotalFileSize, _In_ LARGE_INTEGER TotalFileSize,
_In_ LARGE_INTEGER TotalBytesTransferred, _In_ LARGE_INTEGER TotalBytesTransferred,
_In_ LARGE_INTEGER StreamSize, _In_ LARGE_INTEGER StreamSize,
_In_ LARGE_INTEGER StreamBytesTransferred, _In_ LARGE_INTEGER StreamBytesTransferred,
_In_ DWORD dwStreamNumber, _In_ DWORD dwStreamNumber,
_In_ DWORD dwCallbackReason, _In_ DWORD dwCallbackReason,
skipping to change at line 5103 skipping to change at line 5105
_When_(pbCancel != NULL, _Pre_satisfies_(*pbCancel == FALSE)) _When_(pbCancel != NULL, _Pre_satisfies_(*pbCancel == FALSE))
_Inout_opt_ LPBOOL pbCancel, _Inout_opt_ LPBOOL pbCancel,
_In_ DWORD dwCopyFlags _In_ DWORD dwCopyFlags
); );
#ifdef UNICODE #ifdef UNICODE
#define CopyFileEx CopyFileExW #define CopyFileEx CopyFileExW
#else #else
#define CopyFileEx CopyFileExA #define CopyFileEx CopyFileExA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if _WIN32_WINNT >= 0x0600 #if _WIN32_WINNT >= 0x0600
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CopyFileTransactedA( CopyFileTransactedA(
_In_ LPCSTR lpExistingFileName, _In_ LPCSTR lpExistingFileName,
_In_ LPCSTR lpNewFileName, _In_ LPCSTR lpNewFileName,
_In_opt_ LPPROGRESS_ROUTINE lpProgressRoutine, _In_opt_ LPPROGRESS_ROUTINE lpProgressRoutine,
_In_opt_ LPVOID lpData, _In_opt_ LPVOID lpData,
skipping to change at line 5141 skipping to change at line 5149
#else #else
#define CopyFileTransacted CopyFileTransactedA #define CopyFileTransacted CopyFileTransactedA
#endif // !UNICODE #endif // !UNICODE
#endif // _WIN32_WINNT >= 0x0600 #endif // _WIN32_WINNT >= 0x0600
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// //
// TODO: Win7 for now, when we roll over the version number this needs to be upd ated. // TODO: Win7 for now, when we roll over the version number this needs to be upd ated.
// //
#if _WIN32_WINNT >= 0x0601 #if _WIN32_WINNT >= 0x0601
typedef enum _COPYFILE2_MESSAGE_TYPE { typedef enum _COPYFILE2_MESSAGE_TYPE {
COPYFILE2_CALLBACK_NONE = 0, COPYFILE2_CALLBACK_NONE = 0,
COPYFILE2_CALLBACK_CHUNK_STARTED, COPYFILE2_CALLBACK_CHUNK_STARTED,
skipping to change at line 5278 skipping to change at line 5286
HRESULT HRESULT
WINAPI WINAPI
CopyFile2( CopyFile2(
_In_ PCWSTR pwszExistingFileName, _In_ PCWSTR pwszExistingFileName,
_In_ PCWSTR pwszNewFileName, _In_ PCWSTR pwszNewFileName,
_In_opt_ COPYFILE2_EXTENDED_PARAMETERS *pExtendedParameters _In_opt_ COPYFILE2_EXTENDED_PARAMETERS *pExtendedParameters
); );
#endif // _WIN32_WINNT >= 0x0601 #endif // _WIN32_WINNT >= 0x0601
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#endif /* _WIN32_WINNT >= 0x0400 */ #endif /* _WIN32_WINNT >= 0x0400 */
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
skipping to change at line 5329 skipping to change at line 5337
#endif #endif
lpExistingFileName, lpExistingFileName,
lpNewFileName lpNewFileName
); );
} }
#endif /* _M_CEE */ #endif /* _M_CEE */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
MoveFileExA( MoveFileExA(
_In_ LPCSTR lpExistingFileName, _In_ LPCSTR lpExistingFileName,
_In_opt_ LPCSTR lpNewFileName, _In_opt_ LPCSTR lpNewFileName,
_In_ DWORD dwFlags _In_ DWORD dwFlags
); );
WINBASEAPI WINBASEAPI
skipping to change at line 5354 skipping to change at line 5362
_In_ LPCWSTR lpExistingFileName, _In_ LPCWSTR lpExistingFileName,
_In_opt_ LPCWSTR lpNewFileName, _In_opt_ LPCWSTR lpNewFileName,
_In_ DWORD dwFlags _In_ DWORD dwFlags
); );
#ifdef UNICODE #ifdef UNICODE
#define MoveFileEx MoveFileExW #define MoveFileEx MoveFileExW
#else #else
#define MoveFileEx MoveFileExA #define MoveFileEx MoveFileExA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0500) #if (_WIN32_WINNT >= 0x0500)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
MoveFileWithProgressA( MoveFileWithProgressA(
_In_ LPCSTR lpExistingFileName, _In_ LPCSTR lpExistingFileName,
_In_opt_ LPCSTR lpNewFileName, _In_opt_ LPCSTR lpNewFileName,
_In_opt_ LPPROGRESS_ROUTINE lpProgressRoutine, _In_opt_ LPPROGRESS_ROUTINE lpProgressRoutine,
_In_opt_ LPVOID lpData, _In_opt_ LPVOID lpData,
skipping to change at line 5388 skipping to change at line 5396
_In_opt_ LPVOID lpData, _In_opt_ LPVOID lpData,
_In_ DWORD dwFlags _In_ DWORD dwFlags
); );
#ifdef UNICODE #ifdef UNICODE
#define MoveFileWithProgress MoveFileWithProgressW #define MoveFileWithProgress MoveFileWithProgressW
#else #else
#define MoveFileWithProgress MoveFileWithProgressA #define MoveFileWithProgress MoveFileWithProgressA
#endif // !UNICODE #endif // !UNICODE
#endif // (_WIN32_WINNT >= 0x0500) #endif // (_WIN32_WINNT >= 0x0500)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
MoveFileTransactedA( MoveFileTransactedA(
_In_ LPCSTR lpExistingFileName, _In_ LPCSTR lpExistingFileName,
_In_opt_ LPCSTR lpNewFileName, _In_opt_ LPCSTR lpNewFileName,
_In_opt_ LPPROGRESS_ROUTINE lpProgressRoutine, _In_opt_ LPPROGRESS_ROUTINE lpProgressRoutine,
_In_opt_ LPVOID lpData, _In_opt_ LPVOID lpData,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
skipping to change at line 5439 skipping to change at line 5453
#define MOVEFILE_CREATE_HARDLINK 0x00000010 #define MOVEFILE_CREATE_HARDLINK 0x00000010
#define MOVEFILE_FAIL_IF_NOT_TRACKABLE 0x00000020 #define MOVEFILE_FAIL_IF_NOT_TRACKABLE 0x00000020
#endif // (_WIN32_WINNT >= 0x0500) #endif // (_WIN32_WINNT >= 0x0500)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0500) #if (_WIN32_WINNT >= 0x0500)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
ReplaceFileA( ReplaceFileA(
_In_ LPCSTR lpReplacedFileName, _In_ LPCSTR lpReplacedFileName,
_In_ LPCSTR lpReplacementFileName, _In_ LPCSTR lpReplacementFileName,
_In_opt_ LPCSTR lpBackupFileName, _In_opt_ LPCSTR lpBackupFileName,
_In_ DWORD dwReplaceFlags, _In_ DWORD dwReplaceFlags,
skipping to change at line 5470 skipping to change at line 5490
_Reserved_ LPVOID lpExclude, _Reserved_ LPVOID lpExclude,
_Reserved_ LPVOID lpReserved _Reserved_ LPVOID lpReserved
); );
#ifdef UNICODE #ifdef UNICODE
#define ReplaceFile ReplaceFileW #define ReplaceFile ReplaceFileW
#else #else
#define ReplaceFile ReplaceFileA #define ReplaceFile ReplaceFileA
#endif // !UNICODE #endif // !UNICODE
#endif // (_WIN32_WINNT >= 0x0500) #endif // (_WIN32_WINNT >= 0x0500)
#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 >= 0x0500) #if (_WIN32_WINNT >= 0x0500)
// //
// API call to create hard links. // API call to create hard links.
// //
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CreateHardLinkA( CreateHardLinkA(
_In_ LPCSTR lpFileName, _In_ LPCSTR lpFileName,
skipping to change at line 5499 skipping to change at line 5525
_Reserved_ LPSECURITY_ATTRIBUTES lpSecurityAttributes _Reserved_ LPSECURITY_ATTRIBUTES lpSecurityAttributes
); );
#ifdef UNICODE #ifdef UNICODE
#define CreateHardLink CreateHardLinkW #define CreateHardLink CreateHardLinkW
#else #else
#define CreateHardLink CreateHardLinkA #define CreateHardLink CreateHardLinkA
#endif // !UNICODE #endif // !UNICODE
#endif // (_WIN32_WINNT >= 0x0500) #endif // (_WIN32_WINNT >= 0x0500)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
// //
// API call to create hard links. // API call to create hard links.
// //
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CreateHardLinkTransactedA( CreateHardLinkTransactedA(
_In_ LPCSTR lpFileName, _In_ LPCSTR lpFileName,
skipping to change at line 5530 skipping to change at line 5562
_In_ HANDLE hTransaction _In_ HANDLE hTransaction
); );
#ifdef UNICODE #ifdef UNICODE
#define CreateHardLinkTransacted CreateHardLinkTransactedW #define CreateHardLinkTransacted CreateHardLinkTransactedW
#else #else
#define CreateHardLinkTransacted CreateHardLinkTransactedA #define CreateHardLinkTransacted CreateHardLinkTransactedA
#endif // !UNICODE #endif // !UNICODE
#endif // (_WIN32_WINNT >= 0x0600) #endif // (_WIN32_WINNT >= 0x0600)
#if (_WIN32_WINNT >= 0x0501)
//
// API call to enumerate for streams within a file
//
typedef enum _STREAM_INFO_LEVELS {
FindStreamInfoStandard,
FindStreamInfoMaxInfoLevel
} STREAM_INFO_LEVELS;
typedef struct _WIN32_FIND_STREAM_DATA {
LARGE_INTEGER StreamSize;
WCHAR cStreamName[ MAX_PATH + 36 ];
} WIN32_FIND_STREAM_DATA, *PWIN32_FIND_STREAM_DATA;
WINBASEAPI
HANDLE
WINAPI
FindFirstStreamW(
_In_ LPCWSTR lpFileName,
_In_ STREAM_INFO_LEVELS InfoLevel,
_Out_writes_bytes_(sizeof(WIN32_FIND_STREAM_DATA)) LPVOID lpFindStreamData,
_Reserved_ DWORD dwFlags
);
#if _WIN32_WINNT >= 0x0600 #if _WIN32_WINNT >= 0x0600
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
FindFirstStreamTransactedW ( FindFirstStreamTransactedW (
_In_ LPCWSTR lpFileName, _In_ LPCWSTR lpFileName,
_In_ STREAM_INFO_LEVELS InfoLevel, _In_ STREAM_INFO_LEVELS InfoLevel,
_Out_writes_bytes_(sizeof(WIN32_FIND_STREAM_DATA)) LPVOID lpFindStreamData, _Out_writes_bytes_(sizeof(WIN32_FIND_STREAM_DATA)) LPVOID lpFindStreamData,
_Reserved_ DWORD dwFlags, _Reserved_ DWORD dwFlags,
_In_ HANDLE hTransaction _In_ HANDLE hTransaction
); );
skipping to change at line 5571 skipping to change at line 5574
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
FindFirstStreamTransactedW ( FindFirstStreamTransactedW (
_In_ LPCWSTR lpFileName, _In_ LPCWSTR lpFileName,
_In_ STREAM_INFO_LEVELS InfoLevel, _In_ STREAM_INFO_LEVELS InfoLevel,
_Out_writes_bytes_(sizeof(WIN32_FIND_STREAM_DATA)) LPVOID lpFindStreamData, _Out_writes_bytes_(sizeof(WIN32_FIND_STREAM_DATA)) LPVOID lpFindStreamData,
_Reserved_ DWORD dwFlags, _Reserved_ DWORD dwFlags,
_In_ HANDLE hTransaction _In_ HANDLE hTransaction
); );
#endif // _WIN32_WINNT >= 0x600
WINBASEAPI
BOOL
APIENTRY
FindNextStreamW(
_In_ HANDLE hFindStream,
_Out_writes_bytes_(sizeof(WIN32_FIND_STREAM_DATA)) LPVOID lpFindStreamData
);
#endif // (_WIN32_WINNT >= 0x0501)
#if _WIN32_WINNT >= 0x0600
WINBASEAPI
HANDLE
WINAPI
FindFirstFileNameW (
_In_ LPCWSTR lpFileName,
_In_ DWORD dwFlags,
_Inout_ LPDWORD StringLength,
_Out_writes_(*StringLength) PWSTR LinkName
);
WINBASEAPI
BOOL
APIENTRY
FindNextFileNameW (
_In_ HANDLE hFindStream,
_Inout_ LPDWORD StringLength,
_Out_writes_(*StringLength) PWSTR LinkName
);
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
FindFirstFileNameTransactedW ( FindFirstFileNameTransactedW (
_In_ LPCWSTR lpFileName, _In_ LPCWSTR lpFileName,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Inout_ LPDWORD StringLength, _Inout_ LPDWORD StringLength,
_Out_writes_(*StringLength) PWSTR LinkName, _Out_writes_(*StringLength) PWSTR LinkName,
_In_opt_ HANDLE hTransaction _In_opt_ HANDLE hTransaction
skipping to change at line 5633 skipping to change at line 5605
_In_ DWORD nMaxInstances, _In_ DWORD nMaxInstances,
_In_ DWORD nOutBufferSize, _In_ DWORD nOutBufferSize,
_In_ DWORD nInBufferSize, _In_ DWORD nInBufferSize,
_In_ DWORD nDefaultTimeOut, _In_ DWORD nDefaultTimeOut,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes
); );
#ifndef UNICODE #ifndef UNICODE
#define CreateNamedPipe CreateNamedPipeA #define CreateNamedPipe CreateNamedPipeA
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetNamedPipeHandleStateA( GetNamedPipeHandleStateA(
_In_ HANDLE hNamedPipe, _In_ HANDLE hNamedPipe,
_Out_opt_ LPDWORD lpState, _Out_opt_ LPDWORD lpState,
_Out_opt_ LPDWORD lpCurInstances, _Out_opt_ LPDWORD lpCurInstances,
_Out_opt_ LPDWORD lpMaxCollectionCount, _Out_opt_ LPDWORD lpMaxCollectionCount,
_Out_opt_ LPDWORD lpCollectDataTimeout, _Out_opt_ LPDWORD lpCollectDataTimeout,
_Out_writes_opt_(nMaxUserNameSize) LPSTR lpUserName, _Out_writes_opt_(nMaxUserNameSize) LPSTR lpUserName,
_In_ DWORD nMaxUserNameSize _In_ DWORD nMaxUserNameSize
); );
WINBASEAPI #ifndef UNICODE
BOOL
WINAPI
GetNamedPipeHandleStateW(
_In_ HANDLE hNamedPipe,
_Out_opt_ LPDWORD lpState,
_Out_opt_ LPDWORD lpCurInstances,
_Out_opt_ LPDWORD lpMaxCollectionCount,
_Out_opt_ LPDWORD lpCollectDataTimeout,
_Out_writes_opt_(nMaxUserNameSize) LPWSTR lpUserName,
_In_ DWORD nMaxUserNameSize
);
#ifdef UNICODE
#define GetNamedPipeHandleState GetNamedPipeHandleStateW
#else
#define GetNamedPipeHandleState GetNamedPipeHandleStateA #define GetNamedPipeHandleState GetNamedPipeHandleStateA
#endif // !UNICODE #endif
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CallNamedPipeA( CallNamedPipeA(
_In_ LPCSTR lpNamedPipeName, _In_ LPCSTR lpNamedPipeName,
_In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer, _In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer,
_In_ DWORD nInBufferSize, _In_ DWORD nInBufferSize,
_Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesRead) LPVOID lpOutBuffer, _Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesRead) LPVOID lpOutBuffer,
_In_ DWORD nOutBufferSize, _In_ DWORD nOutBufferSize,
_Out_ LPDWORD lpBytesRead, _Out_ LPDWORD lpBytesRead,
_In_ DWORD nTimeOut _In_ DWORD nTimeOut
); );
WINBASEAPI
BOOL #ifndef UNICODE
WINAPI
CallNamedPipeW(
_In_ LPCWSTR lpNamedPipeName,
_In_reads_bytes_opt_(nInBufferSize) LPVOID lpInBuffer,
_In_ DWORD nInBufferSize,
_Out_writes_bytes_to_opt_(nOutBufferSize, *lpBytesRead) LPVOID lpOutBuffer,
_In_ DWORD nOutBufferSize,
_Out_ LPDWORD lpBytesRead,
_In_ DWORD nTimeOut
);
#ifdef UNICODE
#define CallNamedPipe CallNamedPipeW
#else
#define CallNamedPipe CallNamedPipeA #define CallNamedPipe CallNamedPipeA
#endif // !UNICODE #endif
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
WaitNamedPipeA( WaitNamedPipeA(
_In_ LPCSTR lpNamedPipeName, _In_ LPCSTR lpNamedPipeName,
_In_ DWORD nTimeOut _In_ DWORD nTimeOut
); );
#ifndef UNICODE #ifndef UNICODE
#define WaitNamedPipe WaitNamedPipeA #define WaitNamedPipe WaitNamedPipeA
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetNamedPipeClientComputerNameA( GetNamedPipeClientComputerNameA(
_In_ HANDLE Pipe, _In_ HANDLE Pipe,
_Out_writes_bytes_(ClientComputerNameLength) LPSTR ClientComputerName, _Out_writes_bytes_(ClientComputerNameLength) LPSTR ClientComputerName,
_In_ ULONG ClientComputerNameLength _In_ ULONG ClientComputerNameLength
); );
#ifndef UNICODE #ifndef UNICODE
#define GetNamedPipeClientComputerName GetNamedPipeClientComputerNameA #define GetNamedPipeClientComputerName GetNamedPipeClientComputerNameA
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetNamedPipeClientProcessId( GetNamedPipeClientProcessId(
_In_ HANDLE Pipe, _In_ HANDLE Pipe,
_Out_ PULONG ClientProcessId _Out_ PULONG ClientProcessId
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
skipping to change at line 5751 skipping to change at line 5720
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetNamedPipeServerSessionId( GetNamedPipeServerSessionId(
_In_ HANDLE Pipe, _In_ HANDLE Pipe,
_Out_ PULONG ServerSessionId _Out_ PULONG ServerSessionId
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif // (_WIN32_WINNT >= 0x0600) #endif // (_WIN32_WINNT >= 0x0600)
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetVolumeLabelA( SetVolumeLabelA(
_In_opt_ LPCSTR lpRootPathName, _In_opt_ LPCSTR lpRootPathName,
_In_opt_ LPCSTR lpVolumeName _In_opt_ LPCSTR lpVolumeName
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetVolumeLabelW( SetVolumeLabelW(
_In_opt_ LPCWSTR lpRootPathName, _In_opt_ LPCWSTR lpRootPathName,
_In_opt_ LPCWSTR lpVolumeName _In_opt_ LPCWSTR lpVolumeName
); );
#ifdef UNICODE #ifdef UNICODE
#define SetVolumeLabel SetVolumeLabelW #define SetVolumeLabel SetVolumeLabelW
#else #else
#define SetVolumeLabel SetVolumeLabelA #define SetVolumeLabel SetVolumeLabelA
#endif // !UNICODE #endif // !UNICODE
WINBASEAPI
VOID
WINAPI
SetFileApisToOEM( VOID );
WINBASEAPI
VOID
WINAPI
SetFileApisToANSI( VOID );
WINBASEAPI
BOOL
WINAPI
AreFileApisANSI( VOID );
WINBASEAPI
BOOL
WINAPI
GetVolumeInformationA(
_In_opt_ LPCSTR lpRootPathName,
_Out_writes_opt_(nVolumeNameSize) LPSTR lpVolumeNameBuffer,
_In_ DWORD nVolumeNameSize,
_Out_opt_ LPDWORD lpVolumeSerialNumber,
_Out_opt_ LPDWORD lpMaximumComponentLength,
_Out_opt_ LPDWORD lpFileSystemFlags,
_Out_writes_opt_(nFileSystemNameSize) LPSTR lpFileSystemNameBuffer,
_In_ DWORD nFileSystemNameSize
);
#ifndef UNICODE
#define GetVolumeInformation GetVolumeInformationA
#endif
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetFileBandwidthReservation( SetFileBandwidthReservation(
_In_ HANDLE hFile, _In_ HANDLE hFile,
_In_ DWORD nPeriodMilliseconds, _In_ DWORD nPeriodMilliseconds,
_In_ DWORD nBytesPerPeriod, _In_ DWORD nBytesPerPeriod,
_In_ BOOL bDiscardable, _In_ BOOL bDiscardable,
skipping to change at line 6302 skipping to change at line 6244
_In_ DWORD dwAceRevision, _In_ DWORD dwAceRevision,
_In_ DWORD AceFlags, _In_ DWORD AceFlags,
_In_ UCHAR AceType, _In_ UCHAR AceType,
_In_ DWORD AccessMask, _In_ DWORD AccessMask,
_In_ PSID pSid, _In_ PSID pSid,
_In_ _Null_terminated_ PWCHAR ConditionStr, _In_ _Null_terminated_ PWCHAR ConditionStr,
_Out_ DWORD *ReturnLength _Out_ DWORD *ReturnLength
); );
#endif /* _WIN32_WINNT >= 0x0601 */ #endif /* _WIN32_WINNT >= 0x0601 */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
SetFileSecurityA ( SetFileSecurityA (
_In_ LPCSTR lpFileName, _In_ LPCSTR lpFileName,
_In_ SECURITY_INFORMATION SecurityInformation, _In_ SECURITY_INFORMATION SecurityInformation,
_In_ PSECURITY_DESCRIPTOR pSecurityDescriptor _In_ PSECURITY_DESCRIPTOR pSecurityDescriptor
); );
#ifndef UNICODE #ifndef UNICODE
#define SetFileSecurity SetFileSecurityA #define SetFileSecurity SetFileSecurityA
skipping to change at line 6344 skipping to change at line 6292
_Out_writes_bytes_to_(nBufferLength, *lpBytesReturned) LPVOID lpBuffer, _Out_writes_bytes_to_(nBufferLength, *lpBytesReturned) LPVOID lpBuffer,
_In_ DWORD nBufferLength, _In_ DWORD nBufferLength,
_In_ BOOL bWatchSubtree, _In_ BOOL bWatchSubtree,
_In_ DWORD dwNotifyFilter, _In_ DWORD dwNotifyFilter,
_Out_opt_ LPDWORD lpBytesReturned, _Out_opt_ LPDWORD lpBytesReturned,
_Inout_opt_ LPOVERLAPPED lpOverlapped, _Inout_opt_ LPOVERLAPPED lpOverlapped,
_In_opt_ LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine _In_opt_ LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
); );
#endif /* _WIN32_WINNT >= 0x0400 */ #endif /* _WIN32_WINNT >= 0x0400 */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if _WIN32_WINNT >= 0x0600 #if _WIN32_WINNT >= 0x0600
WINBASEAPI WINBASEAPI
_Ret_maybenull_ __out_data_source(FILE) _Ret_maybenull_ __out_data_source(FILE)
LPVOID LPVOID
WINAPI WINAPI
MapViewOfFileExNuma( MapViewOfFileExNuma(
_In_ HANDLE hFileMappingObject, _In_ HANDLE hFileMappingObject,
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
_In_ DWORD dwFileOffsetHigh, _In_ DWORD dwFileOffsetHigh,
skipping to change at line 6421 skipping to change at line 6375
IsBadStringPtrW( IsBadStringPtrW(
_In_opt_ LPCWSTR lpsz, _In_opt_ LPCWSTR lpsz,
_In_ UINT_PTR ucchMax _In_ UINT_PTR ucchMax
); );
#ifdef UNICODE #ifdef UNICODE
#define IsBadStringPtr IsBadStringPtrW #define IsBadStringPtr IsBadStringPtrW
#else #else
#define IsBadStringPtr IsBadStringPtrA #define IsBadStringPtr IsBadStringPtrA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINADVAPI WINADVAPI
_Success_(return != FALSE) BOOL _Success_(return != FALSE) BOOL
WINAPI WINAPI
LookupAccountSidA( LookupAccountSidA(
_In_opt_ LPCSTR lpSystemName, _In_opt_ LPCSTR lpSystemName,
_In_ PSID Sid, _In_ PSID Sid,
_Out_writes_to_opt_(*cchName, *cchName + 1) LPSTR Name, _Out_writes_to_opt_(*cchName, *cchName + 1) LPSTR Name,
_Inout_ LPDWORD cchName, _Inout_ LPDWORD cchName,
_Out_writes_to_opt_(*cchReferencedDomainName, *cchReferencedDomainName + 1) LPSTR ReferencedDomainName, _Out_writes_to_opt_(*cchReferencedDomainName, *cchReferencedDomainName + 1) LPSTR ReferencedDomainName,
_Inout_ LPDWORD cchReferencedDomainName, _Inout_ LPDWORD cchReferencedDomainName,
skipping to change at line 6481 skipping to change at line 6441
_Out_writes_to_opt_(*cchReferencedDomainName, *cchReferencedDomainName + 1) LPWSTR ReferencedDomainName, _Out_writes_to_opt_(*cchReferencedDomainName, *cchReferencedDomainName + 1) LPWSTR ReferencedDomainName,
_Inout_ LPDWORD cchReferencedDomainName, _Inout_ LPDWORD cchReferencedDomainName,
_Out_ PSID_NAME_USE peUse _Out_ PSID_NAME_USE peUse
); );
#ifdef UNICODE #ifdef UNICODE
#define LookupAccountName LookupAccountNameW #define LookupAccountName LookupAccountNameW
#else #else
#define LookupAccountName LookupAccountNameA #define LookupAccountName LookupAccountNameA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if _WIN32_WINNT >= 0x0601 #if _WIN32_WINNT >= 0x0601
WINADVAPI WINADVAPI
_Success_(return != FALSE) BOOL _Success_(return != FALSE) BOOL
WINAPI WINAPI
LookupAccountNameLocalA( LookupAccountNameLocalA(
_In_ LPCSTR lpAccountName, _In_ LPCSTR lpAccountName,
_Out_writes_bytes_to_opt_(*cbSid, *cbSid) PSID Sid, _Out_writes_bytes_to_opt_(*cbSid, *cbSid) PSID Sid,
_Inout_ LPDWORD cbSid, _Inout_ LPDWORD cbSid,
_Out_writes_to_opt_(*cchReferencedDomainName, *cchReferencedDomainName + 1) LPSTR ReferencedDomainName, _Out_writes_to_opt_(*cchReferencedDomainName, *cchReferencedDomainName + 1) LPSTR ReferencedDomainName,
skipping to change at line 6563 skipping to change at line 6529
#define LookupAccountSidLocalW(s, n, cn, d, cd, u) \ #define LookupAccountSidLocalW(s, n, cn, d, cd, u) \
LookupAccountSidW(NULL, s, n, cn, d, cd, u) LookupAccountSidW(NULL, s, n, cn, d, cd, u)
#ifdef UNICODE #ifdef UNICODE
#define LookupAccountSidLocal LookupAccountSidLocalW #define LookupAccountSidLocal LookupAccountSidLocalW
#else #else
#define LookupAccountSidLocal LookupAccountSidLocalA #define LookupAccountSidLocal LookupAccountSidLocalA
#endif // !UNICODE #endif // !UNICODE
#endif // _WIN32_WINNT >= 0x0601 #endif // _WIN32_WINNT >= 0x0601
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
LookupPrivilegeValueA( LookupPrivilegeValueA(
_In_opt_ LPCSTR lpSystemName, _In_opt_ LPCSTR lpSystemName,
_In_ LPCSTR lpName, _In_ LPCSTR lpName,
_Out_ PLUID lpLuid _Out_ PLUID lpLuid
); );
WINADVAPI WINADVAPI
BOOL BOOL
skipping to change at line 6635 skipping to change at line 6607
_Out_writes_to_opt_(*cchDisplayName, *cchDisplayName + 1) LPWSTR lpDisplayNa me, _Out_writes_to_opt_(*cchDisplayName, *cchDisplayName + 1) LPWSTR lpDisplayNa me,
_Inout_ LPDWORD cchDisplayName, _Inout_ LPDWORD cchDisplayName,
_Out_ LPDWORD lpLanguageId _Out_ LPDWORD lpLanguageId
); );
#ifdef UNICODE #ifdef UNICODE
#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameW #define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameW
#else #else
#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameA #define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
BuildCommDCBA( BuildCommDCBA(
_In_ LPCSTR lpDef, _In_ LPCSTR lpDef,
_Out_ LPDCB lpDCB _Out_ LPDCB lpDCB
); );
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
skipping to change at line 6771 skipping to change at line 6749
GetComputerNameW ( GetComputerNameW (
_Out_writes_to_opt_(*nSize, *nSize + 1) LPWSTR lpBuffer, _Out_writes_to_opt_(*nSize, *nSize + 1) LPWSTR lpBuffer,
_Inout_ LPDWORD nSize _Inout_ LPDWORD nSize
); );
#ifdef UNICODE #ifdef UNICODE
#define GetComputerName GetComputerNameW #define GetComputerName GetComputerNameW
#else #else
#define GetComputerName GetComputerNameA #define GetComputerName GetComputerNameA
#endif // !UNICODE #endif // !UNICODE
WINBASEAPI
BOOL
WINAPI
SetComputerNameA (
_In_ LPCSTR lpComputerName
);
WINBASEAPI
BOOL
WINAPI
SetComputerNameW (
_In_ LPCWSTR lpComputerName
);
#ifdef UNICODE
#define SetComputerName SetComputerNameW
#else
#define SetComputerName SetComputerNameA
#endif // !UNICODE
#if (_WIN32_WINNT >= 0x0500) #if (_WIN32_WINNT >= 0x0500)
WINBASEAPI WINBASEAPI
BOOL
WINAPI
SetComputerNameExA (
_In_ COMPUTER_NAME_FORMAT NameType,
_In_ LPCSTR lpBuffer
);
#ifndef UNICODE
#define SetComputerNameEx SetComputerNameExA
#endif
WINBASEAPI
_Success_(return != FALSE) _Success_(return != FALSE)
BOOL BOOL
WINAPI WINAPI
DnsHostnameToComputerNameA ( DnsHostnameToComputerNameA (
_In_ LPCSTR Hostname, _In_ LPCSTR Hostname,
_Out_writes_to_opt_(*nSize, *nSize + 1) LPSTR ComputerName, _Out_writes_to_opt_(*nSize, *nSize + 1) LPSTR ComputerName,
_Inout_ LPDWORD nSize _Inout_ LPDWORD nSize
); );
WINBASEAPI WINBASEAPI
_Success_(return != FALSE) _Success_(return != FALSE)
skipping to change at line 6938 skipping to change at line 6887
_Outptr_opt_result_bytebuffer_all_(*pdwProfileLength) PVOID *ppProfileBuffer , _Outptr_opt_result_bytebuffer_all_(*pdwProfileLength) PVOID *ppProfileBuffer ,
_Out_opt_ LPDWORD pdwProfileLength, _Out_opt_ LPDWORD pdwProfileLength,
_Out_opt_ PQUOTA_LIMITS pQuotaLimits _Out_opt_ PQUOTA_LIMITS pQuotaLimits
); );
#ifdef UNICODE #ifdef UNICODE
#define LogonUserEx LogonUserExW #define LogonUserEx LogonUserExW
#else #else
#define LogonUserEx LogonUserExA #define LogonUserEx LogonUserExA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#if(_WIN32_WINNT >= 0x0600) #if(_WIN32_WINNT >= 0x0600)
#endif // (_WIN32_WINNT >= 0x0600) #endif // (_WIN32_WINNT >= 0x0600)
WINADVAPI #pragma region Desktop Family
BOOL #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINAPI
CreateProcessAsUserA (
_In_opt_ HANDLE hToken,
_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
#if(_WIN32_WINNT >= 0x0500) #if(_WIN32_WINNT >= 0x0500)
// //
// LogonFlags // LogonFlags
// //
#define LOGON_WITH_PROFILE 0x00000001 #define LOGON_WITH_PROFILE 0x00000001
#define LOGON_NETCREDENTIALS_ONLY 0x00000002 #define LOGON_NETCREDENTIALS_ONLY 0x00000002
#define LOGON_ZERO_PASSWORD_BUFFER 0x80000000 #define LOGON_ZERO_PASSWORD_BUFFER 0x80000000
skipping to change at line 7076 skipping to change at line 7011
); );
WINBASEAPI WINBASEAPI
_Must_inspect_result_ _Must_inspect_result_
BOOL BOOL
WINAPI WINAPI
DeleteTimerQueue( DeleteTimerQueue(
_In_ HANDLE TimerQueue _In_ HANDLE TimerQueue
); );
#endif // _WIN32_WINNT >= 0x0500
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#if (_WIN32_WINNT >= 0x0500)
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
#if !defined(MIDL_PASS) #if !defined(MIDL_PASS)
FORCEINLINE FORCEINLINE
VOID VOID
InitializeThreadpoolEnvironment( InitializeThreadpoolEnvironment(
_Out_ PTP_CALLBACK_ENVIRON pcbe _Out_ PTP_CALLBACK_ENVIRON pcbe
) )
{ {
skipping to change at line 7145 skipping to change at line 7088
_In_ TP_CALLBACK_PRIORITY Priority _In_ TP_CALLBACK_PRIORITY Priority
) )
{ {
TpSetCallbackPriority(pcbe, Priority); TpSetCallbackPriority(pcbe, Priority);
} }
#endif #endif
FORCEINLINE FORCEINLINE
VOID VOID
SetThreadpoolCallbackPersistent( DestroyThreadpoolEnvironment(
_Inout_ PTP_CALLBACK_ENVIRON pcbe _Inout_ PTP_CALLBACK_ENVIRON pcbe
) )
{ {
TpSetCallbackPersistent(pcbe); TpDestroyCallbackEnviron(pcbe);
} }
#endif // !defined(MIDL_PASS)
#endif // _WIN32_WINNT >= 0x0600
#endif // _WIN32_WINNT >= 0x0500
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#if (_WIN32_WINNT >= 0x0600)
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if !defined(MIDL_PASS)
FORCEINLINE FORCEINLINE
VOID VOID
DestroyThreadpoolEnvironment( SetThreadpoolCallbackPersistent(
_Inout_ PTP_CALLBACK_ENVIRON pcbe _Inout_ PTP_CALLBACK_ENVIRON pcbe
) )
{ {
TpDestroyCallbackEnviron(pcbe); TpSetCallbackPersistent(pcbe);
} }
#endif // !defined(MIDL_PASS) #endif // !defined(MIDL_PASS)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
// //
// Private Namespaces support // Private Namespaces support
// //
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
CreatePrivateNamespaceA( CreatePrivateNamespaceA(
_In_opt_ LPSECURITY_ATTRIBUTES lpPrivateNamespaceAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpPrivateNamespaceAttributes,
skipping to change at line 7217 skipping to change at line 7181
_In_ LPCSTR Name, _In_ LPCSTR Name,
_In_ ULONG Flags _In_ ULONG Flags
); );
#ifndef UNICODE #ifndef UNICODE
#define CreateBoundaryDescriptor CreateBoundaryDescriptorA #define CreateBoundaryDescriptor CreateBoundaryDescriptorA
#else #else
#define CreateBoundaryDescriptor CreateBoundaryDescriptorW #define CreateBoundaryDescriptor CreateBoundaryDescriptorW
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
AddIntegrityLabelToBoundaryDescriptor( AddIntegrityLabelToBoundaryDescriptor(
_Inout_ HANDLE * BoundaryDescriptor, _Inout_ HANDLE * BoundaryDescriptor,
_In_ PSID IntegrityLabel _In_ PSID IntegrityLabel
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif // _WIN32_WINNT >= 0x0600 #endif // _WIN32_WINNT >= 0x0600
#endif // _WIN32_WINNT >= 0x0500 #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if(_WIN32_WINNT >= 0x0400) #if(_WIN32_WINNT >= 0x0400)
// //
// Plug-and-Play API's // Plug-and-Play API's
// //
#define HW_PROFILE_GUIDLEN 39 // 36-characters plus NULL terminator #define HW_PROFILE_GUIDLEN 39 // 36-characters plus NULL terminator
#define MAX_PROFILE_LEN 80 #define MAX_PROFILE_LEN 80
#define DOCKINFO_UNDOCKED (0x1) #define DOCKINFO_UNDOCKED (0x1)
skipping to change at line 7341 skipping to change at line 7315
#define BATTERY_FLAG_HIGH 0x01 #define BATTERY_FLAG_HIGH 0x01
#define BATTERY_FLAG_LOW 0x02 #define BATTERY_FLAG_LOW 0x02
#define BATTERY_FLAG_CRITICAL 0x04 #define BATTERY_FLAG_CRITICAL 0x04
#define BATTERY_FLAG_CHARGING 0x08 #define BATTERY_FLAG_CHARGING 0x08
#define BATTERY_FLAG_NO_BATTERY 0x80 #define BATTERY_FLAG_NO_BATTERY 0x80
#define BATTERY_FLAG_UNKNOWN 0xFF #define BATTERY_FLAG_UNKNOWN 0xFF
#define BATTERY_PERCENTAGE_UNKNOWN 0xFF #define BATTERY_PERCENTAGE_UNKNOWN 0xFF
#define SYSTEM_STATUS_FLAG_POWER_SAVING_ON 0x01
#define BATTERY_LIFE_UNKNOWN 0xFFFFFFFF #define BATTERY_LIFE_UNKNOWN 0xFFFFFFFF
typedef struct _SYSTEM_POWER_STATUS { typedef struct _SYSTEM_POWER_STATUS {
BYTE ACLineStatus; BYTE ACLineStatus;
BYTE BatteryFlag; BYTE BatteryFlag;
BYTE BatteryLifePercent; BYTE BatteryLifePercent;
BYTE Reserved1; BYTE SystemStatusFlag;
DWORD BatteryLifeTime; DWORD BatteryLifeTime;
DWORD BatteryFullLifeTime; DWORD BatteryFullLifeTime;
} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS; } SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetSystemPowerStatus( GetSystemPowerStatus(
_Out_ LPSYSTEM_POWER_STATUS lpSystemPowerStatus _Out_ LPSYSTEM_POWER_STATUS lpSystemPowerStatus
); );
skipping to change at line 7369 skipping to change at line 7345
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetSystemPowerState( SetSystemPowerState(
_In_ BOOL fSuspend, _In_ BOOL fSuspend,
_In_ BOOL fForce _In_ BOOL fForce
); );
#endif /* WINVER >= 0x0400 */ #endif /* WINVER >= 0x0400 */
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#if (_WIN32_WINNT >= 0x0500) #if (_WIN32_WINNT >= 0x0500)
// //
// Very Large Memory API Subset // Very Large Memory API Subset
// //
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
MapUserPhysicalPagesScatter( MapUserPhysicalPagesScatter(
_In_reads_(NumberOfPages) PVOID *VirtualAddresses, _In_reads_(NumberOfPages) PVOID *VirtualAddresses,
_In_ ULONG_PTR NumberOfPages, _In_ ULONG_PTR NumberOfPages,
_In_reads_opt_(NumberOfPages) PULONG_PTR PageArray _In_reads_opt_(NumberOfPages) PULONG_PTR PageArray
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
CreateJobObjectA( CreateJobObjectA(
_In_opt_ LPSECURITY_ATTRIBUTES lpJobAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpJobAttributes,
_In_opt_ LPCSTR lpName _In_opt_ LPCSTR lpName
); );
WINBASEAPI
_Ret_maybenull_
HANDLE
WINAPI
CreateJobObjectW(
_In_opt_ LPSECURITY_ATTRIBUTES lpJobAttributes,
_In_opt_ LPCWSTR lpName
);
#ifdef UNICODE #ifdef UNICODE
#define CreateJobObject CreateJobObjectW #define CreateJobObject CreateJobObjectW
#else #else
#define CreateJobObject CreateJobObjectA #define CreateJobObject CreateJobObjectA
#endif // !UNICODE #endif // !UNICODE
WINBASEAPI WINBASEAPI
_Ret_maybenull_ _Ret_maybenull_
HANDLE HANDLE
WINAPI WINAPI
OpenJobObjectA( OpenJobObjectA(
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle, _In_ BOOL bInheritHandle,
_In_ LPCSTR lpName _In_ LPCSTR lpName
); );
WINBASEAPI
_Ret_maybenull_
HANDLE
WINAPI
OpenJobObjectW(
_In_ DWORD dwDesiredAccess,
_In_ BOOL bInheritHandle,
_In_ LPCWSTR lpName
);
#ifdef UNICODE #ifdef UNICODE
#define OpenJobObject OpenJobObjectW #define OpenJobObject OpenJobObjectW
#else #else
#define OpenJobObject OpenJobObjectA #define OpenJobObject OpenJobObjectA
#endif // !UNICODE #endif // !UNICODE
WINBASEAPI #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
BOOL #pragma endregion
WINAPI
AssignProcessToJobObject(
_In_ HANDLE hJob,
_In_ HANDLE hProcess
);
WINBASEAPI
BOOL
WINAPI
TerminateJobObject(
_In_ HANDLE hJob,
_In_ UINT uExitCode
);
WINBASEAPI
BOOL
WINAPI
QueryInformationJobObject(
_In_opt_ HANDLE hJob,
_In_ JOBOBJECTINFOCLASS JobObjectInformationClass,
_Out_writes_bytes_to_(cbJobObjectInformationLength, *lpReturnLength) LPVOID
lpJobObjectInformation,
_In_ DWORD cbJobObjectInformationLength,
_Out_opt_ LPDWORD lpReturnLength
);
WINBASEAPI #pragma region Desktop Family
BOOL #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINAPI
SetInformationJobObject(
_In_ HANDLE hJob,
_In_ JOBOBJECTINFOCLASS JobObjectInformationClass,
_In_reads_bytes_(cbJobObjectInformationLength) LPVOID lpJobObjectInformation
,
_In_ DWORD cbJobObjectInformationLength
);
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CreateJobSet ( CreateJobSet (
_In_ ULONG NumJob, _In_ ULONG NumJob,
_In_reads_(NumJob) PJOB_SET_ARRAY UserJobSet, _In_reads_(NumJob) PJOB_SET_ARRAY UserJobSet,
_In_ ULONG Flags); _In_ ULONG Flags);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
FindFirstVolumeA( FindFirstVolumeA(
_Out_writes_(cchBufferLength) LPSTR lpszVolumeName, _Out_writes_(cchBufferLength) LPSTR lpszVolumeName,
_In_ DWORD cchBufferLength _In_ DWORD cchBufferLength
); );
#ifndef UNICODE #ifndef UNICODE
#define FindFirstVolume FindFirstVolumeA #define FindFirstVolume FindFirstVolumeA
#endif #endif
skipping to change at line 7497 skipping to change at line 7445
WINAPI WINAPI
FindNextVolumeA( FindNextVolumeA(
_Inout_ HANDLE hFindVolume, _Inout_ HANDLE hFindVolume,
_Out_writes_(cchBufferLength) LPSTR lpszVolumeName, _Out_writes_(cchBufferLength) LPSTR lpszVolumeName,
_In_ DWORD cchBufferLength _In_ DWORD cchBufferLength
); );
#ifndef UNICODE #ifndef UNICODE
#define FindNextVolume FindNextVolumeA #define FindNextVolume FindNextVolumeA
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINBASEAPI WINBASEAPI
HANDLE HANDLE
WINAPI WINAPI
FindFirstVolumeMountPointA( FindFirstVolumeMountPointA(
_In_ LPCSTR lpszRootPathName, _In_ LPCSTR lpszRootPathName,
_Out_writes_(cchBufferLength) LPSTR lpszVolumeMountPoint, _Out_writes_(cchBufferLength) LPSTR lpszVolumeMountPoint,
_In_ DWORD cchBufferLength _In_ DWORD cchBufferLength
); );
WINBASEAPI WINBASEAPI
HANDLE HANDLE
skipping to change at line 7568 skipping to change at line 7522
SetVolumeMountPointW( SetVolumeMountPointW(
_In_ LPCWSTR lpszVolumeMountPoint, _In_ LPCWSTR lpszVolumeMountPoint,
_In_ LPCWSTR lpszVolumeName _In_ LPCWSTR lpszVolumeName
); );
#ifdef UNICODE #ifdef UNICODE
#define SetVolumeMountPoint SetVolumeMountPointW #define SetVolumeMountPoint SetVolumeMountPointW
#else #else
#define SetVolumeMountPoint SetVolumeMountPointA #define SetVolumeMountPoint SetVolumeMountPointA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
DeleteVolumeMountPointA( DeleteVolumeMountPointA(
_In_ LPCSTR lpszVolumeMountPoint _In_ LPCSTR lpszVolumeMountPoint
); );
#ifndef UNICODE #ifndef UNICODE
#define DeleteVolumeMountPoint DeleteVolumeMountPointA #define DeleteVolumeMountPoint DeleteVolumeMountPointA
#endif #endif
skipping to change at line 7602 skipping to change at line 7562
WINAPI WINAPI
GetVolumePathNameA( GetVolumePathNameA(
_In_ LPCSTR lpszFileName, _In_ LPCSTR lpszFileName,
_Out_writes_(cchBufferLength) LPSTR lpszVolumePathName, _Out_writes_(cchBufferLength) LPSTR lpszVolumePathName,
_In_ DWORD cchBufferLength _In_ DWORD cchBufferLength
); );
#ifndef UNICODE #ifndef UNICODE
#define GetVolumePathName GetVolumePathNameA #define GetVolumePathName GetVolumePathNameA
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#endif #endif
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if(_WIN32_WINNT >= 0x0501) #if(_WIN32_WINNT >= 0x0501)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetVolumePathNamesForVolumeNameA( GetVolumePathNamesForVolumeNameA(
_In_ LPCSTR lpszVolumeName, _In_ LPCSTR lpszVolumeName,
_Out_writes_to_opt_(cchBufferLength, *lpcchReturnLength) _Post_ _NullNull_te rminated_ LPCH lpszVolumePathNames, _Out_writes_to_opt_(cchBufferLength, *lpcchReturnLength) _Post_ _NullNull_te rminated_ LPCH lpszVolumePathNames,
_In_ DWORD cchBufferLength, _In_ DWORD cchBufferLength,
_Out_ PDWORD lpcchReturnLength _Out_ PDWORD lpcchReturnLength
skipping to change at line 7893 skipping to change at line 7859
_In_ HANDLE hActCtx, _In_ HANDLE hActCtx,
_In_opt_ PVOID pvSubInstance, _In_opt_ PVOID pvSubInstance,
_In_ ULONG ulInfoClass, _In_ ULONG ulInfoClass,
_Out_writes_bytes_to_opt_(cbBuffer, *pcbWrittenOrRequired) PVOID pvBuffer, _Out_writes_bytes_to_opt_(cbBuffer, *pcbWrittenOrRequired) PVOID pvBuffer,
_In_ SIZE_T cbBuffer, _In_ SIZE_T cbBuffer,
_Out_opt_ SIZE_T *pcbWrittenOrRequired _Out_opt_ SIZE_T *pcbWrittenOrRequired
); );
#endif // (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWAR E_ENABLED #endif // (_WIN32_WINNT > 0x0500) || (_WIN32_FUSION >= 0x0100) || ISOLATION_AWAR E_ENABLED
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if _WIN32_WINNT >= 0x0501 #if _WIN32_WINNT >= 0x0501
WINBASEAPI WINBASEAPI
DWORD DWORD
WINAPI WINAPI
WTSGetActiveConsoleSessionId( WTSGetActiveConsoleSessionId(
VOID VOID
); );
#endif // (_WIN32_WINNT >= 0x0501) #endif // (_WIN32_WINNT >= 0x0501)
#if (_WIN32_WINNT >= _WIN32_WINNT_WINTHRESHOLD)
WINBASEAPI
DWORD
WINAPI
WTSGetServiceSessionId(
VOID
);
WINBASEAPI
BOOLEAN
WINAPI
WTSIsServerContainer(
VOID
);
#endif // (_WIN32_WINNT >= _WIN32_WINNT_WINTHRESHOLD)
#if _WIN32_WINNT >= 0x0601 #if _WIN32_WINNT >= 0x0601
WINBASEAPI WINBASEAPI
WORD WORD
WINAPI WINAPI
GetActiveProcessorGroupCount( GetActiveProcessorGroupCount(
VOID VOID
); );
WINBASEAPI WINBASEAPI
skipping to change at line 8129 skipping to change at line 8119
_In_ BOOL bSuccess _In_ BOOL bSuccess
); );
#endif // _WIN32_WINNT >= 0x0600 #endif // _WIN32_WINNT >= 0x0600
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
typedef struct _FILE_BASIC_INFO { typedef struct _FILE_BASIC_INFO {
LARGE_INTEGER CreationTime; LARGE_INTEGER CreationTime;
LARGE_INTEGER LastAccessTime; LARGE_INTEGER LastAccessTime;
LARGE_INTEGER LastWriteTime; LARGE_INTEGER LastWriteTime;
LARGE_INTEGER ChangeTime; LARGE_INTEGER ChangeTime;
DWORD FileAttributes; DWORD FileAttributes;
} FILE_BASIC_INFO, *PFILE_BASIC_INFO; } FILE_BASIC_INFO, *PFILE_BASIC_INFO;
typedef struct _FILE_STANDARD_INFO { typedef struct _FILE_STANDARD_INFO {
skipping to change at line 8341 skipping to change at line 8331
#define RPI_SMB2_FLAG_SERVERCAP_LEASING 0x00000002 #define RPI_SMB2_FLAG_SERVERCAP_LEASING 0x00000002
#define RPI_SMB2_FLAG_SERVERCAP_LARGEMTU 0x00000004 #define RPI_SMB2_FLAG_SERVERCAP_LARGEMTU 0x00000004
#define RPI_SMB2_FLAG_SERVERCAP_MULTICHANNEL 0x00000008 #define RPI_SMB2_FLAG_SERVERCAP_MULTICHANNEL 0x00000008
#define RPI_SMB2_FLAG_SERVERCAP_PERSISTENT_HANDLES 0x00000010 #define RPI_SMB2_FLAG_SERVERCAP_PERSISTENT_HANDLES 0x00000010
#define RPI_SMB2_FLAG_SERVERCAP_DIRECTORY_LEASING 0x00000020 #define RPI_SMB2_FLAG_SERVERCAP_DIRECTORY_LEASING 0x00000020
#endif #endif
typedef struct _FILE_REMOTE_PROTOCOL_INFO typedef struct _FILE_REMOTE_PROTOCOL_INFO
{ {
// Structure Version // Structure Version
USHORT StructureVersion; // 1 USHORT StructureVersion; // 1 for Win7, 2 for Win8 SMB3, 3 for Blue SMB3 .
USHORT StructureSize; // sizeof(FILE_REMOTE_PROTOCOL_INFO) USHORT StructureSize; // sizeof(FILE_REMOTE_PROTOCOL_INFO)
ULONG Protocol; // Protocol (WNNC_NET_*) defined in winnetwk.h or ntifs.h. ULONG Protocol; // Protocol (WNNC_NET_*) defined in winnetwk.h or ntifs.h.
// Protocol Version & Type // Protocol Version & Type
USHORT ProtocolMajorVersion; USHORT ProtocolMajorVersion;
USHORT ProtocolMinorVersion; USHORT ProtocolMinorVersion;
USHORT ProtocolRevision; USHORT ProtocolRevision;
USHORT Reserved; USHORT Reserved;
skipping to change at line 8366 skipping to change at line 8356
struct { struct {
ULONG Reserved[8]; ULONG Reserved[8];
} GenericReserved; } GenericReserved;
// Protocol specific information // Protocol specific information
#if (_WIN32_WINNT < _WIN32_WINNT_WIN8) #if (_WIN32_WINNT < _WIN32_WINNT_WIN8)
struct { struct {
ULONG Reserved[16]; ULONG Reserved[16];
} ProtocolSpecificReserved; } ProtocolSpecificReserved;
#else #endif
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
union { union {
struct { struct {
struct { struct {
ULONG Capabilities; ULONG Capabilities;
} Server; } Server;
struct { struct {
ULONG Capabilities; ULONG Capabilities;
skipping to change at line 8400 skipping to change at line 8392
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
GetFileInformationByHandleEx( GetFileInformationByHandleEx(
_In_ HANDLE hFile, _In_ HANDLE hFile,
_In_ FILE_INFO_BY_HANDLE_CLASS FileInformationClass, _In_ FILE_INFO_BY_HANDLE_CLASS FileInformationClass,
_Out_writes_bytes_(dwBufferSize) LPVOID lpFileInformation, _Out_writes_bytes_(dwBufferSize) LPVOID lpFileInformation,
_In_ DWORD dwBufferSize _In_ DWORD dwBufferSize
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
typedef enum _FILE_ID_TYPE { typedef enum _FILE_ID_TYPE {
FileIdType, FileIdType,
ObjectIdType, ObjectIdType,
ExtendedFileIdType, ExtendedFileIdType,
MaximumFileIdType MaximumFileIdType
} FILE_ID_TYPE, *PFILE_ID_TYPE; } FILE_ID_TYPE, *PFILE_ID_TYPE;
typedef struct FILE_ID_DESCRIPTOR { typedef struct FILE_ID_DESCRIPTOR {
DWORD dwSize; // Size of the struct DWORD dwSize; // Size of the struct
skipping to change at line 8437 skipping to change at line 8429
WINAPI WINAPI
OpenFileById ( OpenFileById (
_In_ HANDLE hVolumeHint, _In_ HANDLE hVolumeHint,
_In_ LPFILE_ID_DESCRIPTOR lpFileId, _In_ LPFILE_ID_DESCRIPTOR lpFileId,
_In_ DWORD dwDesiredAccess, _In_ DWORD dwDesiredAccess,
_In_ DWORD dwShareMode, _In_ DWORD dwShareMode,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
_In_ DWORD dwFlagsAndAttributes _In_ DWORD dwFlagsAndAttributes
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif #endif
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (_WIN32_WINNT >= 0x0600) #if (_WIN32_WINNT >= 0x0600)
// //
// Flags to be passed into CREATE_SYMBOLIC_LINK // Flags to be passed into CREATE_SYMBOLIC_LINK
// //
#define SYMBOLIC_LINK_FLAG_DIRECTORY (0x1) #define SYMBOLIC_LINK_FLAG_DIRECTORY (0x1)
#define VALID_SYMBOLIC_LINK_FLAGS SYMBOLIC_LINK_FLAG_DIRECTORY // & whatever ot her flags we think of! #define VALID_SYMBOLIC_LINK_FLAGS SYMBOLIC_LINK_FLAG_DIRECTORY // & whatever ot her flags we think of!
skipping to change at line 8477 skipping to change at line 8469
_In_ LPCWSTR lpSymlinkFileName, _In_ LPCWSTR lpSymlinkFileName,
_In_ LPCWSTR lpTargetFileName, _In_ LPCWSTR lpTargetFileName,
_In_ DWORD dwFlags _In_ DWORD dwFlags
); );
#ifdef UNICODE #ifdef UNICODE
#define CreateSymbolicLink CreateSymbolicLinkW #define CreateSymbolicLink CreateSymbolicLinkW
#else #else
#define CreateSymbolicLink CreateSymbolicLinkA #define CreateSymbolicLink CreateSymbolicLinkA
#endif // !UNICODE #endif // !UNICODE
#endif // (_WIN32_WINNT >= 0x0600)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#if (_WIN32_WINNT >= 0x0600)
WINBASEAPI WINBASEAPI
BOOLEAN BOOLEAN
APIENTRY APIENTRY
CreateSymbolicLinkTransactedA ( CreateSymbolicLinkTransactedA (
_In_ LPCSTR lpSymlinkFileName, _In_ LPCSTR lpSymlinkFileName,
_In_ LPCSTR lpTargetFileName, _In_ LPCSTR lpTargetFileName,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_ HANDLE hTransaction _In_ HANDLE hTransaction
); );
WINBASEAPI WINBASEAPI
skipping to change at line 8556 skipping to change at line 8558
_In_ __callback PSECURE_MEMORY_CACHE_CALLBACK pfnCallBack _In_ __callback PSECURE_MEMORY_CACHE_CALLBACK pfnCallBack
); );
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#if (NTDDI_VERSION >= NTDDI_WIN7SP1) #if (NTDDI_VERSION >= NTDDI_WIN7SP1)
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Must_inspect_result_ _Must_inspect_result_
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
CopyContext( CopyContext(
_Inout_ PCONTEXT Destination, _Inout_ PCONTEXT Destination,
_In_ DWORD ContextFlags, _In_ DWORD ContextFlags,
_In_ PCONTEXT Source _In_ PCONTEXT Source
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
_Success_(return != FALSE) _Success_(return != FALSE)
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
InitializeContext( InitializeContext(
_Out_writes_bytes_opt_(*ContextLength) PVOID Buffer, _Out_writes_bytes_opt_(*ContextLength) PVOID Buffer,
_In_ DWORD ContextFlags, _In_ DWORD ContextFlags,
_Out_ PCONTEXT* Context, _Out_ PCONTEXT* Context,
_Inout_ PDWORD ContextLength _Inout_ PDWORD ContextLength
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#if defined(_AMD64_) || defined(_X86_) #if defined(_AMD64_) || defined(_X86_)
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINBASEAPI WINBASEAPI
DWORD64 DWORD64
WINAPI WINAPI
GetEnabledXStateFeatures( GetEnabledXStateFeatures(
VOID VOID
); );
_Must_inspect_result_ _Must_inspect_result_
WINBASEAPI WINBASEAPI
skipping to change at line 8619 skipping to change at line 8621
_Success_(return != NULL) _Success_(return != NULL)
WINBASEAPI WINBASEAPI
PVOID PVOID
WINAPI WINAPI
LocateXStateFeature( LocateXStateFeature(
_In_ PCONTEXT Context, _In_ PCONTEXT Context,
_In_ DWORD FeatureId, _In_ DWORD FeatureId,
_Out_opt_ PDWORD Length _Out_opt_ PDWORD Length
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM ) */
#pragma endregion #pragma endregion
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Must_inspect_result_ _Must_inspect_result_
WINBASEAPI WINBASEAPI
BOOL BOOL
WINAPI WINAPI
SetXStateFeaturesMask( SetXStateFeaturesMask(
_Inout_ PCONTEXT Context, _Inout_ PCONTEXT Context,
_In_ DWORD64 FeatureMask _In_ DWORD64 FeatureMask
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif /* defined(_AMD64_) || defined(_X86_) */ #endif /* defined(_AMD64_) || defined(_X86_) */
#endif /* (NTDDI_VERSION >= NTDDI_WIN7SP1) */ #endif /* (NTDDI_VERSION >= NTDDI_WIN7SP1) */
#if (_WIN32_WINNT >= 0x0601) #if (_WIN32_WINNT >= 0x0601)
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
skipping to change at line 8772 skipping to change at line 8774
FORCEINLINE FORCEINLINE
unsigned long unsigned long
InterlockedIncrement( InterlockedIncrement(
_Inout_ _Interlocked_operand_ unsigned long volatile *Addend _Inout_ _Interlocked_operand_ unsigned long volatile *Addend
) )
{ {
return (unsigned long) _InterlockedIncrement((volatile long*) Addend); return (unsigned long) _InterlockedIncrement((volatile long*) Addend);
} }
#if defined(_WIN64) || ((_WIN32_WINNT >= 0x0502) && defined(_WINBASE_) && !defin // ARM64_WORKAROUND : should this work for managed code?
ed(_MANAGED)) #if (defined(_WIN64) && !defined(_ARM64_)) || ((_WIN32_WINNT >= 0x0502) && defin
ed(_WINBASE_) && !defined(_MANAGED))
FORCEINLINE FORCEINLINE
unsigned __int64 unsigned __int64
InterlockedIncrement( InterlockedIncrement(
_Inout_ _Interlocked_operand_ unsigned __int64 volatile *Addend _Inout_ _Interlocked_operand_ unsigned __int64 volatile *Addend
) )
{ {
return (unsigned __int64) _InterlockedIncrement64((volatile long long*) Adde nd); return (unsigned __int64) (InterlockedIncrement64)((volatile __int64*) Adden d);
} }
#endif #endif
FORCEINLINE FORCEINLINE
unsigned unsigned
InterlockedDecrement( InterlockedDecrement(
_Inout_ _Interlocked_operand_ unsigned volatile *Addend _Inout_ _Interlocked_operand_ unsigned volatile *Addend
) )
{ {
skipping to change at line 8803 skipping to change at line 8806
FORCEINLINE FORCEINLINE
unsigned long unsigned long
InterlockedDecrement( InterlockedDecrement(
_Inout_ _Interlocked_operand_ unsigned long volatile *Addend _Inout_ _Interlocked_operand_ unsigned long volatile *Addend
) )
{ {
return (unsigned long) _InterlockedDecrement((volatile long*) Addend); return (unsigned long) _InterlockedDecrement((volatile long*) Addend);
} }
#if defined(_WIN64) || ((_WIN32_WINNT >= 0x0502) && defined(_WINBASE_) && !defin // ARM64_WORKAROUND : should this work for managed code?
ed(_MANAGED)) #if (defined(_WIN64) && !defined(_ARM64_)) || ((_WIN32_WINNT >= 0x0502) && defin
ed(_WINBASE_) && !defined(_MANAGED))
FORCEINLINE FORCEINLINE
unsigned __int64 unsigned __int64
InterlockedDecrement( InterlockedDecrement(
_Inout_ _Interlocked_operand_ unsigned __int64 volatile *Addend _Inout_ _Interlocked_operand_ unsigned __int64 volatile *Addend
) )
{ {
return (unsigned __int64) _InterlockedDecrement64((volatile long long*) Adde nd); return (unsigned __int64) (InterlockedDecrement64)((volatile __int64*) Adden d);
} }
#endif #endif
#if !defined(_M_CEE_PURE) #if !defined(_M_CEE_PURE)
FORCEINLINE FORCEINLINE
unsigned unsigned
InterlockedExchange( InterlockedExchange(
_Inout_ _Interlocked_operand_ unsigned volatile *Target, _Inout_ _Interlocked_operand_ unsigned volatile *Target,
skipping to change at line 8847 skipping to change at line 8851
#if defined(_WIN64) || ((_WIN32_WINNT >= 0x0502) && defined(_WINBASE_) && !defin ed(_MANAGED)) #if defined(_WIN64) || ((_WIN32_WINNT >= 0x0502) && defined(_WINBASE_) && !defin ed(_MANAGED))
FORCEINLINE FORCEINLINE
unsigned __int64 unsigned __int64
InterlockedExchange( InterlockedExchange(
_Inout_ _Interlocked_operand_ unsigned __int64 volatile *Target, _Inout_ _Interlocked_operand_ unsigned __int64 volatile *Target,
_In_ unsigned __int64 Value _In_ unsigned __int64 Value
) )
{ {
return (unsigned __int64) _InterlockedExchange64((volatile long long*) Targe t, (long long) Value); return (unsigned __int64) InterlockedExchange64((volatile __int64*) Target, (__int64) Value);
} }
#endif #endif
FORCEINLINE FORCEINLINE
unsigned unsigned
InterlockedExchangeAdd( InterlockedExchangeAdd(
_Inout_ _Interlocked_operand_ unsigned volatile *Addend, _Inout_ _Interlocked_operand_ unsigned volatile *Addend,
_In_ unsigned Value _In_ unsigned Value
) )
skipping to change at line 8901 skipping to change at line 8905
#if defined(_WIN64) || ((_WIN32_WINNT >= 0x0502) && defined(_WINBASE_) && !defin ed(_MANAGED)) #if defined(_WIN64) || ((_WIN32_WINNT >= 0x0502) && defined(_WINBASE_) && !defin ed(_MANAGED))
FORCEINLINE FORCEINLINE
unsigned __int64 unsigned __int64
InterlockedExchangeAdd( InterlockedExchangeAdd(
_Inout_ _Interlocked_operand_ unsigned __int64 volatile *Addend, _Inout_ _Interlocked_operand_ unsigned __int64 volatile *Addend,
_In_ unsigned __int64 Value _In_ unsigned __int64 Value
) )
{ {
return (unsigned __int64) _InterlockedExchangeAdd64((volatile long long*) Ad dend, (long long) Value); return (unsigned __int64) InterlockedExchangeAdd64((volatile __int64*) Adden d, (__int64) Value);
} }
FORCEINLINE FORCEINLINE
unsigned __int64 unsigned __int64
InterlockedExchangeSubtract( InterlockedExchangeSubtract(
_Inout_ _Interlocked_operand_ unsigned __int64 volatile *Addend, _Inout_ _Interlocked_operand_ unsigned __int64 volatile *Addend,
_In_ unsigned __int64 Value _In_ unsigned __int64 Value
) )
{ {
return (unsigned __int64) _InterlockedExchangeAdd64((volatile long long*) Ad dend, - (long long) Value); return (unsigned __int64) InterlockedExchangeAdd64((volatile __int64*) Adden d, - (__int64) Value);
} }
#endif #endif
FORCEINLINE FORCEINLINE
unsigned unsigned
InterlockedCompareExchange( InterlockedCompareExchange(
_Inout_ _Interlocked_operand_ unsigned volatile *Destination, _Inout_ _Interlocked_operand_ unsigned volatile *Destination,
_In_ unsigned Exchange, _In_ unsigned Exchange,
_In_ unsigned Comperand _In_ unsigned Comperand
skipping to change at line 8948 skipping to change at line 8952
#if defined(_WIN64) || ((_WIN32_WINNT >= 0x0502) && defined(_WINBASE_) && !defin ed(_MANAGED)) #if defined(_WIN64) || ((_WIN32_WINNT >= 0x0502) && defined(_WINBASE_) && !defin ed(_MANAGED))
FORCEINLINE FORCEINLINE
unsigned __int64 unsigned __int64
InterlockedCompareExchange( InterlockedCompareExchange(
_Inout_ _Interlocked_operand_ unsigned __int64 volatile *Destination, _Inout_ _Interlocked_operand_ unsigned __int64 volatile *Destination,
_In_ unsigned __int64 Exchange, _In_ unsigned __int64 Exchange,
_In_ unsigned __int64 Comperand _In_ unsigned __int64 Comperand
) )
{ {
return (unsigned __int64) _InterlockedCompareExchange64((volatile long long* ) Destination, (long long) Exchange, (long long) Comperand); return (unsigned __int64) _InterlockedCompareExchange64((volatile __int64*) Destination, (__int64) Exchange, (__int64) Comperand);
} }
FORCEINLINE FORCEINLINE
unsigned __int64 unsigned __int64
InterlockedAnd( InterlockedAnd(
_Inout_ _Interlocked_operand_ unsigned __int64 volatile *Destination, _Inout_ _Interlocked_operand_ unsigned __int64 volatile *Destination,
_In_ unsigned __int64 Value _In_ unsigned __int64 Value
) )
{ {
return (unsigned __int64) _InterlockedAnd64((volatile long long*) Destinatio n, (long long) Value); return (unsigned __int64) InterlockedAnd64((volatile __int64*) Destination, (__int64) Value);
} }
FORCEINLINE FORCEINLINE
unsigned __int64 unsigned __int64
InterlockedOr( InterlockedOr(
_Inout_ _Interlocked_operand_ unsigned __int64 volatile *Destination, _Inout_ _Interlocked_operand_ unsigned __int64 volatile *Destination,
_In_ unsigned __int64 Value _In_ unsigned __int64 Value
) )
{ {
return (unsigned __int64) _InterlockedOr64((volatile long long*) Destination , (long long) Value); return (unsigned __int64) InterlockedOr64((volatile __int64*) Destination, ( __int64) Value);
} }
FORCEINLINE FORCEINLINE
unsigned __int64 unsigned __int64
InterlockedXor( InterlockedXor(
_Inout_ _Interlocked_operand_ unsigned __int64 volatile *Destination, _Inout_ _Interlocked_operand_ unsigned __int64 volatile *Destination,
_In_ unsigned __int64 Value _In_ unsigned __int64 Value
) )
{ {
return (unsigned __int64) _InterlockedXor64((volatile long long*) Destinatio n, (long long) Value); return (unsigned __int64) InterlockedXor64((volatile __int64*) Destination, (__int64) Value);
} }
#endif #endif
#endif /* !defined(_M_CEE_PURE) */ #endif /* !defined(_M_CEE_PURE) */
} /* extern "C++" */ } /* extern "C++" */
#endif /* } __cplusplus */ #endif /* } __cplusplus */
#endif /* } MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS */ #endif /* } MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS */
 End of changes. 173 change blocks. 
593 lines changed or deleted 651 lines changed or added


 wincred.h (6.3.9600.17415-Windows 8.1)   wincred.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 24 skipping to change at line 24
Author: Author:
Revision History: Revision History:
--*/ --*/
#ifndef _WINCRED_H_ #ifndef _WINCRED_H_
#define _WINCRED_H_ #define _WINCRED_H_
#include <winapifamily.h> #include <winapifamily.h>
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if !defined(_ADVAPI32_) #if !defined(_ADVAPI32_)
#define WINADVAPI DECLSPEC_IMPORT #define WINADVAPI DECLSPEC_IMPORT
#else #else
#define WINADVAPI #define WINADVAPI
#endif #endif
#if !defined(CREDUIAPI) #if !defined(CREDUIAPI)
#if !defined(_CREDUI_) #if !defined(_CREDUI_)
#define CREDUIAPI EXTERN_C DECLSPEC_IMPORT #define CREDUIAPI EXTERN_C DECLSPEC_IMPORT
skipping to change at line 379 skipping to change at line 379
#define CRED_FLAGS_OWF_CRED_BLOB 0x0008 #define CRED_FLAGS_OWF_CRED_BLOB 0x0008
#define CRED_FLAGS_REQUIRE_CONFIRMATION 0x0010 #define CRED_FLAGS_REQUIRE_CONFIRMATION 0x0010
// //
// Valid only for return and only with CredReadDomainCredentials(). // Valid only for return and only with CredReadDomainCredentials().
// Indicates credential was returned due to wildcard match // Indicates credential was returned due to wildcard match
// of targetname with credential. // of targetname with credential.
// //
#define CRED_FLAGS_WILDCARD_MATCH 0x0020 #define CRED_FLAGS_WILDCARD_MATCH 0x0020
#define CRED_FLAGS_VALID_FLAGS 0xF03F // Mask of all valid flags
//
// Valid only for return
// Indicates that the credential is VSM protected
//
#define CRED_FLAGS_VSM_PROTECTED 0x0040
#define CRED_FLAGS_NGC_CERT 0x0080
//
// Mask of all valid flags
//
#define CRED_FLAGS_VALID_FLAGS 0xF0FF
// //
// Bit mask for only those flags which can be passed to the credman // Bit mask for only those flags which can be passed to the credman
// APIs. // APIs.
// //
#define CRED_FLAGS_VALID_INPUT_FLAGS 0xF01F #define CRED_FLAGS_VALID_INPUT_FLAGS 0xF09F
// //
// Values of the Credential Type field. // Values of the Credential Type field.
// //
#define CRED_TYPE_GENERIC 1 #define CRED_TYPE_GENERIC 1
#define CRED_TYPE_DOMAIN_PASSWORD 2 #define CRED_TYPE_DOMAIN_PASSWORD 2
#define CRED_TYPE_DOMAIN_CERTIFICATE 3 #define CRED_TYPE_DOMAIN_CERTIFICATE 3
#define CRED_TYPE_DOMAIN_VISIBLE_PASSWORD 4 #define CRED_TYPE_DOMAIN_VISIBLE_PASSWORD 4
#define CRED_TYPE_GENERIC_CERTIFICATE 5 #define CRED_TYPE_GENERIC_CERTIFICATE 5
#define CRED_TYPE_DOMAIN_EXTENDED 6 #define CRED_TYPE_DOMAIN_EXTENDED 6
skipping to change at line 493 skipping to change at line 507
// //
// Value of the Flags field in CREDENTIAL_TARGET_INFORMATION // Value of the Flags field in CREDENTIAL_TARGET_INFORMATION
// //
#define CRED_TI_SERVER_FORMAT_UNKNOWN 0x0001 // Don't know if server name is DNS or netbios format #define CRED_TI_SERVER_FORMAT_UNKNOWN 0x0001 // Don't know if server name is DNS or netbios format
#define CRED_TI_DOMAIN_FORMAT_UNKNOWN 0x0002 // Don't know if domain name is DNS or netbios format #define CRED_TI_DOMAIN_FORMAT_UNKNOWN 0x0002 // Don't know if domain name is DNS or netbios format
#define CRED_TI_ONLY_PASSWORD_REQUIRED 0x0004 // Server only requires a passwo rd and not a username #define CRED_TI_ONLY_PASSWORD_REQUIRED 0x0004 // Server only requires a passwo rd and not a username
#define CRED_TI_USERNAME_TARGET 0x0008 // TargetName is username #define CRED_TI_USERNAME_TARGET 0x0008 // TargetName is username
#define CRED_TI_CREATE_EXPLICIT_CRED 0x0010 // When creating a cred, create one named TargetInfo->TargetName #define CRED_TI_CREATE_EXPLICIT_CRED 0x0010 // When creating a cred, create one named TargetInfo->TargetName
#define CRED_TI_WORKGROUP_MEMBER 0x0020 // Indicates the machine is a me mber of a workgroup #define CRED_TI_WORKGROUP_MEMBER 0x0020 // Indicates the machine is a me mber of a workgroup
#define CRED_TI_DNSTREE_IS_DFS_SERVER 0x0040 // used to tell credman that the DNSTreeName could be DFS server
#define CRED_TI_VALID_FLAGS 0xF07F #define CRED_TI_VALID_FLAGS 0xF07F
// //
// A credential target // A credential target
// //
typedef struct _CREDENTIAL_TARGET_INFORMATIONA { typedef struct _CREDENTIAL_TARGET_INFORMATIONA {
LPSTR TargetName; LPSTR TargetName;
LPSTR NetbiosServerName; LPSTR NetbiosServerName;
LPSTR DnsServerName; LPSTR DnsServerName;
skipping to change at line 912 skipping to change at line 927
_In_ DWORD Type, _In_ DWORD Type,
_Reserved_ DWORD Flags _Reserved_ DWORD Flags
); );
#ifdef UNICODE #ifdef UNICODE
#define CredDelete CredDeleteW #define CredDelete CredDeleteW
#else #else
#define CredDelete CredDeleteA #define CredDelete CredDeleteA
#endif // UNICODE #endif // UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CredRenameW ( CredRenameW (
_In_ LPCWSTR OldTargetName, _In_ LPCWSTR OldTargetName,
_In_ LPCWSTR NewTargetName, _In_ LPCWSTR NewTargetName,
_In_ DWORD Type, _In_ DWORD Type,
_Reserved_ DWORD Flags _Reserved_ DWORD Flags
); );
skipping to change at line 938 skipping to change at line 959
_In_ DWORD Type, _In_ DWORD Type,
_Reserved_ DWORD Flags _Reserved_ DWORD Flags
); );
#ifdef UNICODE #ifdef UNICODE
#define CredRename CredRenameW #define CredRename CredRenameW
#else #else
#define CredRename CredRenameA #define CredRename CredRenameA
#endif // UNICODE #endif // UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
// //
// Values of flags to CredGetTargetInfo // Values of flags to CredGetTargetInfo
// //
#define CRED_ALLOW_NAME_RESOLUTION 0x1 #define CRED_ALLOW_NAME_RESOLUTION 0x1
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CredGetTargetInfoW ( CredGetTargetInfoW (
skipping to change at line 1023 skipping to change at line 1050
#define CredUnmarshalCredential CredUnmarshalCredentialA #define CredUnmarshalCredential CredUnmarshalCredentialA
#endif // UNICODE #endif // UNICODE
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CredIsMarshaledCredentialW( CredIsMarshaledCredentialW(
_In_ LPCWSTR MarshaledCredential _In_ LPCWSTR MarshaledCredential
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CredIsMarshaledCredentialA( CredIsMarshaledCredentialA(
_In_ LPCSTR MarshaledCredential _In_ LPCSTR MarshaledCredential
); );
#ifdef UNICODE #ifdef UNICODE
#define CredIsMarshaledCredential CredIsMarshaledCredentialW #define CredIsMarshaledCredential CredIsMarshaledCredentialW
#else #else
skipping to change at line 1058 skipping to change at line 1091
_Inout_ DWORD* pcchMaxPassword _Inout_ DWORD* pcchMaxPassword
); );
CREDUIAPI CREDUIAPI
BOOL BOOL
WINAPI WINAPI
CredUnPackAuthenticationBufferA( CredUnPackAuthenticationBufferA(
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_reads_bytes_(cbAuthBuffer) PVOID pAuthBuffer, _In_reads_bytes_(cbAuthBuffer) PVOID pAuthBuffer,
_In_ DWORD cbAuthBuffer, _In_ DWORD cbAuthBuffer,
_Out_writes_opt_(*pcchMaxUserName) LPSTR pszUserName, _Out_writes_opt_(*pcchlMaxUserName) LPSTR pszUserName,
_Inout_ DWORD* pcchlMaxUserName, _Inout_ DWORD* pcchlMaxUserName,
_Out_writes_opt_(*pcchMaxDomainName) LPSTR pszDomainName, _Out_writes_opt_(*pcchMaxDomainName) LPSTR pszDomainName,
_Inout_opt_ DWORD* pcchMaxDomainName, _Inout_opt_ DWORD* pcchMaxDomainName,
_Out_writes_opt_(*pcchMaxPassword) LPSTR pszPassword, _Out_writes_opt_(*pcchMaxPassword) LPSTR pszPassword,
_Inout_ DWORD* pcchMaxPassword _Inout_ DWORD* pcchMaxPassword
); );
#ifdef UNICODE #ifdef UNICODE
#define CredUnPackAuthenticationBuffer CredUnPackAuthenticationBufferW #define CredUnPackAuthenticationBuffer CredUnPackAuthenticationBufferW
#else #else
skipping to change at line 1100 skipping to change at line 1133
_Out_writes_bytes_opt_(*pcbPackedCredentials) PBYTE pPackedCredentials, _Out_writes_bytes_opt_(*pcbPackedCredentials) PBYTE pPackedCredentials,
_Inout_ DWORD* pcbPackedCredentials _Inout_ DWORD* pcbPackedCredentials
); );
#ifdef UNICODE #ifdef UNICODE
#define CredPackAuthenticationBuffer CredPackAuthenticationBufferW #define CredPackAuthenticationBuffer CredPackAuthenticationBufferW
#else #else
#define CredPackAuthenticationBuffer CredPackAuthenticationBufferA #define CredPackAuthenticationBuffer CredPackAuthenticationBufferA
#endif //UNICODE #endif //UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Success_(return) _Success_(return)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CredProtectW( CredProtectW(
_In_ BOOL fAsSelf, _In_ BOOL fAsSelf,
_In_reads_(cchCredentials) LPWSTR pszCredentials, _In_reads_(cchCredentials) LPWSTR pszCredentials,
_In_ DWORD cchCredentials, _In_ DWORD cchCredentials,
_Out_writes_to_(*pcchMaxChars, *pcchMaxChars) LPWSTR pszProtectedCredentials , _Out_writes_to_(*pcchMaxChars, *pcchMaxChars) LPWSTR pszProtectedCredentials ,
_Inout_ DWORD* pcchMaxChars, _Inout_ DWORD* pcchMaxChars,
skipping to change at line 1223 skipping to change at line 1262
_Out_writes_(MaximumPersistCount) LPDWORD MaximumPersist _Out_writes_(MaximumPersistCount) LPDWORD MaximumPersist
); );
WINADVAPI WINADVAPI
VOID VOID
WINAPI WINAPI
CredFree ( CredFree (
_In_ PVOID Buffer _In_ PVOID Buffer
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
CREDUIAPI CREDUIAPI
DWORD DWORD
WINAPI WINAPI
CredUIPromptForCredentialsW( CredUIPromptForCredentialsW(
_In_opt_ PCREDUI_INFOW pUiInfo, _In_opt_ PCREDUI_INFOW pUiInfo,
_In_opt_ PCWSTR pszTargetName, _In_opt_ PCWSTR pszTargetName,
_Reserved_ PCtxtHandle pContext, _Reserved_ PCtxtHandle pContext,
_In_ DWORD dwAuthError, _In_ DWORD dwAuthError,
_Inout_updates_(ulUserNameBufferSize) PWSTR pszUserName, _Inout_updates_(ulUserNameBufferSize) PWSTR pszUserName,
_In_ ULONG ulUserNameBufferSize, _In_ ULONG ulUserNameBufferSize,
skipping to change at line 1406 skipping to change at line 1451
); );
CREDUIAPI CREDUIAPI
DWORD DWORD
WINAPI WINAPI
CredUIReadSSOCredW ( CredUIReadSSOCredW (
_In_opt_ PCWSTR pszRealm, _In_opt_ PCWSTR pszRealm,
_Outptr_ PWSTR* ppszUsername _Outptr_ PWSTR* ppszUsername
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // _WINCRED_H_ #endif // _WINCRED_H_
 End of changes. 12 change blocks. 
6 lines changed or deleted 60 lines changed or added


 wincrypt.h (6.3.9600.17415-Windows 8.1)   wincrypt.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 22 skipping to change at line 22
#ifndef __WINCRYPT_H__ #ifndef __WINCRYPT_H__
#define __WINCRYPT_H__ #define __WINCRYPT_H__
#include <specstrings.h> /* for SAL annotations */ #include <specstrings.h> /* for SAL annotations */
#if defined (_MSC_VER) #if defined (_MSC_VER)
#if ( _MSC_VER >= 800 ) #if ( _MSC_VER >= 800 )
#if _MSC_VER >= 1200 #if _MSC_VER >= 1200
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4668) /* #if not_defined treated as #if 0 */
#pragma warning(disable:4820) /* padding added after data member */
#endif #endif
#pragma warning(disable:4201) /* Nameless struct/union */ #pragma warning(disable:4201) /* Nameless struct/union */
#endif #endif
#if (_MSC_VER > 1020) #if (_MSC_VER > 1020)
#pragma once #pragma once
#endif #endif
#endif #endif
#include <winapifamily.h> #include <winapifamily.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#pragma region Desktop Family /*
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) * The relationship between partitions and families (from: winapifamily.h)
*
* The mapping between families and partitions is summarized here.
* An X indicates that the given partition is active for the given
* platform/family.
*
* +-------------------+
* | *Partition* |
* +---+---+---+---+---+
* | | | | P | |
* | | | | H | |
* | D | | | O | O |
* | E | | P | N | N |
* | S | | C | E | E |
* | K | | _ | _ | C |
* | T | A | A | A | O |
* +-------------------------+-+ O | P | P | P | R |
* | *Platform/Family* \| P | P | P | P | E |
* +---------------------------+---+---+---+---+---+
* | WINAPI_FAMILY_DESKTOP_APP | X | X | X | | |
* +---------------------------+---+---+---+---+---+
* | WINAPI_FAMILY_PC_APP | | X | X | | |
* +---------------------------+---+---+---+---+---+
* | WINAPI_FAMILY_PHONE_APP | | X | | X | |
* +---------------------------+---+---+---+---+---+
* | WINAPI_FAMILY_ONECORE_APP | | | | | X |
* +---------------------------+---+---+---+---+---+
*
* The table above is encoded in the following expressions,
* each of which evaluates to 1 or 0.
*
* Whenever a new family is added, all of these expressions
* need to be reconsidered.
*/
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#ifndef _HRESULT_DEFINED #ifndef _HRESULT_DEFINED
#define _HRESULT_DEFINED #define _HRESULT_DEFINED
typedef _Return_type_success_(return >= 0) long HRESULT; typedef _Return_type_success_(return >= 0) long HRESULT;
#endif #endif
#ifndef WINADVAPI #ifndef WINADVAPI
#define WINADVAPI #define WINADVAPI
#endif #endif
skipping to change at line 981 skipping to change at line 1019
typedef struct _CRYPT_AES_256_KEY_STATE { typedef struct _CRYPT_AES_256_KEY_STATE {
unsigned char Key[32]; unsigned char Key[32];
unsigned char IV[16]; unsigned char IV[16];
unsigned char EncryptionState[15][16]; // 14 rounds + 1 unsigned char EncryptionState[15][16]; // 14 rounds + 1
unsigned char DecryptionState[15][16]; unsigned char DecryptionState[15][16];
unsigned char Feedback[16]; unsigned char Feedback[16];
} CRYPT_AES_256_KEY_STATE, *PCRYPT_AES_256_KEY_STATE; } CRYPT_AES_256_KEY_STATE, *PCRYPT_AES_256_KEY_STATE;
#endif //(NTDDI_VERSION >= NTDDI_VISTA) #endif //(NTDDI_VERSION >= NTDDI_VISTA)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// CRYPTOAPI BLOB definitions // CRYPTOAPI BLOB definitions
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// certenrolls_begin -- *_BLOB // certenrolls_begin -- *_BLOB
#ifndef CRYPTO_BLOBS_DEFINED #ifndef CRYPTO_BLOBS_DEFINED
#define CRYPTO_BLOBS_DEFINED #define CRYPTO_BLOBS_DEFINED
typedef struct _CRYPTOAPI_BLOB { typedef struct _CRYPTOAPI_BLOB {
DWORD cbData; DWORD cbData;
_Field_size_bytes_(cbData) BYTE *pbData; _Field_size_bytes_(cbData) BYTE *pbData;
} CRYPT_INTEGER_BLOB, *PCRYPT_INTEGER_BLOB, } CRYPT_INTEGER_BLOB, *PCRYPT_INTEGER_BLOB,
skipping to change at line 1012 skipping to change at line 1044
CRL_BLOB, *PCRL_BLOB, CRL_BLOB, *PCRL_BLOB,
DATA_BLOB, *PDATA_BLOB, DATA_BLOB, *PDATA_BLOB,
CRYPT_DATA_BLOB, *PCRYPT_DATA_BLOB, CRYPT_DATA_BLOB, *PCRYPT_DATA_BLOB,
CRYPT_HASH_BLOB, *PCRYPT_HASH_BLOB, CRYPT_HASH_BLOB, *PCRYPT_HASH_BLOB,
CRYPT_DIGEST_BLOB, *PCRYPT_DIGEST_BLOB, CRYPT_DIGEST_BLOB, *PCRYPT_DIGEST_BLOB,
CRYPT_DER_BLOB, *PCRYPT_DER_BLOB, CRYPT_DER_BLOB, *PCRYPT_DER_BLOB,
CRYPT_ATTR_BLOB, *PCRYPT_ATTR_BLOB; CRYPT_ATTR_BLOB, *PCRYPT_ATTR_BLOB;
#endif #endif
// certenrolls_end // certenrolls_end
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// structure for use with CryptSetKeyParam for CMS keys // structure for use with CryptSetKeyParam for CMS keys
typedef struct _CMS_DH_KEY_INFO { typedef struct _CMS_DH_KEY_INFO {
DWORD dwVersion; // sizeof(CMS_DH_KEY_INF O) DWORD dwVersion; // sizeof(CMS_DH_KEY_INF O)
ALG_ID Algid; // algorithmm id for the key to be converted ALG_ID Algid; // algorithmm id for the key to be converted
LPSTR pszContentEncObjId; // pointer to OID to hash in with Z LPSTR pszContentEncObjId; // pointer to OID to hash in with Z
CRYPT_DATA_BLOB PubInfo; // OPTIONAL - public information CRYPT_DATA_BLOB PubInfo; // OPTIONAL - public information
void *pReserved; // reserved - should be NULL void *pReserved; // reserved - should be NULL
} CMS_DH_KEY_INFO, *PCMS_DH_KEY_INFO; } CMS_DH_KEY_INFO, *PCMS_DH_KEY_INFO;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM
) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_REST
RICTED)
#if (NTDDI_VERSION >= NTDDI_VISTA) #if (NTDDI_VERSION >= NTDDI_VISTA)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CryptAcquireContextA( CryptAcquireContextA(
_Out_ HCRYPTPROV *phProv, _Out_ HCRYPTPROV *phProv,
_In_opt_ LPCSTR szContainer, _In_opt_ LPCSTR szContainer,
_In_opt_ LPCSTR szProvider, _In_opt_ LPCSTR szProvider,
_In_ DWORD dwProvType, _In_ DWORD dwProvType,
_In_ DWORD dwFlags _In_ DWORD dwFlags
skipping to change at line 1109 skipping to change at line 1141
#endif //(NTDDI_VERSION < NTDDI_WINXP) #endif //(NTDDI_VERSION < NTDDI_WINXP)
#if (NTDDI_VERSION < NTDDI_VISTA) #if (NTDDI_VERSION < NTDDI_VISTA)
#ifdef UNICODE #ifdef UNICODE
#define CryptAcquireContext CryptAcquireContextW #define CryptAcquireContext CryptAcquireContextW
#else #else
#define CryptAcquireContext CryptAcquireContextA #define CryptAcquireContext CryptAcquireContextA
#endif // !UNICODE #endif // !UNICODE
#endif //(NTDDI_VERSION < NTDDI_VISTA) #endif //(NTDDI_VERSION < NTDDI_VISTA)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#if (NTDDI_VERSION >= NTDDI_WINXP) #if (NTDDI_VERSION >= NTDDI_WINXP)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CryptReleaseContext( CryptReleaseContext(
_In_ HCRYPTPROV hProv, _In_ HCRYPTPROV hProv,
_In_ DWORD dwFlags _In_ DWORD dwFlags
); );
#endif //(NTDDI_VERSION >= NTDDI_WINXP) #endif //(NTDDI_VERSION >= NTDDI_WINXP)
#if (NTDDI_VERSION < NTDDI_WINXP) #if (NTDDI_VERSION < NTDDI_WINXP)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CryptReleaseContext( CryptReleaseContext(
HCRYPTPROV hProv, HCRYPTPROV hProv,
ULONG_PTR dwFlags ULONG_PTR dwFlags
); );
skipping to change at line 1129 skipping to change at line 1169
#if (NTDDI_VERSION < NTDDI_WINXP) #if (NTDDI_VERSION < NTDDI_WINXP)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CryptReleaseContext( CryptReleaseContext(
HCRYPTPROV hProv, HCRYPTPROV hProv,
ULONG_PTR dwFlags ULONG_PTR dwFlags
); );
#endif //(NTDDI_VERSION < NTDDI_WINXP) #endif //(NTDDI_VERSION < NTDDI_WINXP)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)*/
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_REST
RICTED)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
CryptGenKey( CryptGenKey(
_In_ HCRYPTPROV hProv, _In_ HCRYPTPROV hProv,
_In_ ALG_ID Algid, _In_ ALG_ID Algid,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Out_ HCRYPTKEY *phKey _Out_ HCRYPTKEY *phKey
); );
skipping to change at line 1914 skipping to change at line 1960
// encryption provider. // encryption provider.
// //
BOOL BOOL
__cdecl __cdecl
GetEncSChannel( GetEncSChannel(
_Outptr_result_buffer_(*dwDecSize) BYTE **pData, _Outptr_result_buffer_(*dwDecSize) BYTE **pData,
_Out_ DWORD *dwDecSize _Out_ DWORD *dwDecSize
); );
#endif //(NTDDI_VERSION >= NTDDI_WS03) #endif //(NTDDI_VERSION >= NTDDI_WS03)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON E_RESTRICTED) */
#pragma endregion #pragma endregion
#if !defined(_DDK_DRIVER_) #if !defined(_DDK_DRIVER_)
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
// In Vista, the following APIs were updated to support the new // In Vista, the following APIs were updated to support the new
// CNG (Cryptography Next Generation) BCrypt* and NCrypt* APIs in addition // CNG (Cryptography Next Generation) BCrypt* and NCrypt* APIs in addition
// to the above CAPI1 APIs. // to the above CAPI1 APIs.
// Include the definitions for the CNG APIs // Include the definitions for the CNG APIs
#include <bcrypt.h> #include <bcrypt.h>
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion #pragma endregion
#pragma region Application Family #pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#include <ncrypt.h> #include <ncrypt.h>
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// This type is used when the API can take either the CAPI1 HCRYPTPROV or // This type is used when the API can take either the CAPI1 HCRYPTPROV or
// the CNG NCRYPT_KEY_HANDLE. Where appropriate, the HCRYPTPROV will be // the CNG NCRYPT_KEY_HANDLE. Where appropriate, the HCRYPTPROV will be
// converted to a NCRYPT_KEY_HANDLE via the CNG NCryptTranslateHandle(). // converted to a NCRYPT_KEY_HANDLE via the CNG NCryptTranslateHandle().
typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE; typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE;
// This type is used where the HCRYPTPROV parameter is no longer used. // This type is used where the HCRYPTPROV parameter is no longer used.
// The caller should always pass in NULL. // The caller should always pass in NULL.
typedef ULONG_PTR HCRYPTPROV_LEGACY; typedef ULONG_PTR HCRYPTPROV_LEGACY;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// In a CRYPT_BIT_BLOB the last byte may contain 0-7 unused bits. Therefore, th e // In a CRYPT_BIT_BLOB the last byte may contain 0-7 unused bits. Therefore, th e
// overall bit length is cbData * 8 - cUnusedBits. // overall bit length is cbData * 8 - cUnusedBits.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// certenrolls_begin -- CERT_CONTEXT // certenrolls_begin -- CERT_CONTEXT
typedef struct _CRYPT_BIT_BLOB { typedef struct _CRYPT_BIT_BLOB {
DWORD cbData; DWORD cbData;
BYTE *pbData; BYTE *pbData;
DWORD cUnusedBits; DWORD cUnusedBits;
} CRYPT_BIT_BLOB, *PCRYPT_BIT_BLOB; } CRYPT_BIT_BLOB, *PCRYPT_BIT_BLOB;
skipping to change at line 1981 skipping to change at line 2015
// //
// Where the Parameters CRYPT_OBJID_BLOB is in its encoded representation. For most // Where the Parameters CRYPT_OBJID_BLOB is in its encoded representation. For most
// algorithm types, the Parameters CRYPT_OBJID_BLOB is NULL (Parameters.cbData = 0). // algorithm types, the Parameters CRYPT_OBJID_BLOB is NULL (Parameters.cbData = 0).
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
typedef struct _CRYPT_ALGORITHM_IDENTIFIER { typedef struct _CRYPT_ALGORITHM_IDENTIFIER {
LPSTR pszObjId; LPSTR pszObjId;
CRYPT_OBJID_BLOB Parameters; CRYPT_OBJID_BLOB Parameters;
} CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER; } CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER;
// certenrolls_end // certenrolls_end
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
// Following are the definitions of various algorithm object identifiers // Following are the definitions of various algorithm object identifiers
// RSA // RSA
#define szOID_RSA "1.2.840.113549" #define szOID_RSA "1.2.840.113549"
#define szOID_PKCS "1.2.840.113549.1" #define szOID_PKCS "1.2.840.113549.1"
#define szOID_RSA_HASH "1.2.840.113549.2" #define szOID_RSA_HASH "1.2.840.113549.2"
#define szOID_RSA_ENCRYPT "1.2.840.113549.3" #define szOID_RSA_ENCRYPT "1.2.840.113549.3"
#define szOID_PKCS_1 "1.2.840.113549.1.1" #define szOID_PKCS_1 "1.2.840.113549.1.1"
#define szOID_PKCS_2 "1.2.840.113549.1.2" #define szOID_PKCS_2 "1.2.840.113549.1.2"
#define szOID_PKCS_3 "1.2.840.113549.1.3" #define szOID_PKCS_3 "1.2.840.113549.1.3"
skipping to change at line 2080 skipping to change at line 2108
// iso(1) member-body(2) us(840) 10045 curves(3) prime(1) 7 // iso(1) member-body(2) us(840) 10045 curves(3) prime(1) 7
#define szOID_ECC_CURVE_P256 "1.2.840.10045.3.1.7" #define szOID_ECC_CURVE_P256 "1.2.840.10045.3.1.7"
// iso(1) identified-organization(3) certicom(132) curve(0) 34 // iso(1) identified-organization(3) certicom(132) curve(0) 34
#define szOID_ECC_CURVE_P384 "1.3.132.0.34" #define szOID_ECC_CURVE_P384 "1.3.132.0.34"
// iso(1) identified-organization(3) certicom(132) curve(0) 35 // iso(1) identified-organization(3) certicom(132) curve(0) 35
#define szOID_ECC_CURVE_P521 "1.3.132.0.35" #define szOID_ECC_CURVE_P521 "1.3.132.0.35"
//
// Generic ECC Curve OIDS
//
#define szOID_ECC_CURVE_BRAINPOOLP160R1 "1.3.36.3.3.2.8.1.1.1"
#define szOID_ECC_CURVE_BRAINPOOLP160T1 "1.3.36.3.3.2.8.1.1.2"
#define szOID_ECC_CURVE_BRAINPOOLP192R1 "1.3.36.3.3.2.8.1.1.3"
#define szOID_ECC_CURVE_BRAINPOOLP192T1 "1.3.36.3.3.2.8.1.1.4"
#define szOID_ECC_CURVE_BRAINPOOLP224R1 "1.3.36.3.3.2.8.1.1.5"
#define szOID_ECC_CURVE_BRAINPOOLP224T1 "1.3.36.3.3.2.8.1.1.6"
#define szOID_ECC_CURVE_BRAINPOOLP256R1 "1.3.36.3.3.2.8.1.1.7"
#define szOID_ECC_CURVE_BRAINPOOLP256T1 "1.3.36.3.3.2.8.1.1.8"
#define szOID_ECC_CURVE_BRAINPOOLP320R1 "1.3.36.3.3.2.8.1.1.9"
#define szOID_ECC_CURVE_BRAINPOOLP320T1 "1.3.36.3.3.2.8.1.1.10"
#define szOID_ECC_CURVE_BRAINPOOLP384R1 "1.3.36.3.3.2.8.1.1.11"
#define szOID_ECC_CURVE_BRAINPOOLP384T1 "1.3.36.3.3.2.8.1.1.12"
#define szOID_ECC_CURVE_BRAINPOOLP512R1 "1.3.36.3.3.2.8.1.1.13"
#define szOID_ECC_CURVE_BRAINPOOLP512T1 "1.3.36.3.3.2.8.1.1.14"
#define szOID_ECC_CURVE_EC192WAPI "1.2.156.11235.1.1.2.1"
#define szOID_ECC_CURVE_NISTP192 "1.2.840.10045.3.1.1"
#define szOID_ECC_CURVE_NISTP224 "1.3.132.0.33"
#define szOID_ECC_CURVE_NISTP256 szOID_ECC_CURVE_P256
#define szOID_ECC_CURVE_NISTP384 szOID_ECC_CURVE_P384
#define szOID_ECC_CURVE_NISTP521 szOID_ECC_CURVE_P521
#define szOID_ECC_CURVE_SECP160K1 "1.3.132.0.9"
#define szOID_ECC_CURVE_SECP160R1 "1.3.132.0.8"
#define szOID_ECC_CURVE_SECP160R2 "1.3.132.0.30"
#define szOID_ECC_CURVE_SECP192K1 "1.3.132.0.31"
#define szOID_ECC_CURVE_SECP192R1 szOID_ECC_CURVE_NISTP192
#define szOID_ECC_CURVE_SECP224K1 "1.3.132.0.32"
#define szOID_ECC_CURVE_SECP224R1 szOID_ECC_CURVE_NISTP224
#define szOID_ECC_CURVE_SECP256K1 "1.3.132.0.10"
#define szOID_ECC_CURVE_SECP256R1 szOID_ECC_CURVE_P256
#define szOID_ECC_CURVE_SECP384R1 szOID_ECC_CURVE_P384
#define szOID_ECC_CURVE_SECP521R1 szOID_ECC_CURVE_P521
#define szOID_ECC_CURVE_WTLS7 szOID_ECC_CURVE_SECP160R2
#define szOID_ECC_CURVE_WTLS9 "2.23.43.1.4.9"
#define szOID_ECC_CURVE_WTLS12 szOID_ECC_CURVE_NISTP224
#define szOID_ECC_CURVE_X962P192V1 "1.2.840.10045.3.1.1"
#define szOID_ECC_CURVE_X962P192V2 "1.2.840.10045.3.1.2"
#define szOID_ECC_CURVE_X962P192V3 "1.2.840.10045.3.1.3"
#define szOID_ECC_CURVE_X962P239V1 "1.2.840.10045.3.1.4"
#define szOID_ECC_CURVE_X962P239V2 "1.2.840.10045.3.1.5"
#define szOID_ECC_CURVE_X962P239V3 "1.2.840.10045.3.1.6"
#define szOID_ECC_CURVE_X962P256V1 szOID_ECC_CURVE_P256
// iso(1) member-body(2) us(840) 10045 signatures(4) sha1(1) // iso(1) member-body(2) us(840) 10045 signatures(4) sha1(1)
#define szOID_ECDSA_SHA1 "1.2.840.10045.4.1" #define szOID_ECDSA_SHA1 "1.2.840.10045.4.1"
// iso(1) member-body(2) us(840) 10045 signatures(4) specified(3) // iso(1) member-body(2) us(840) 10045 signatures(4) specified(3)
#define szOID_ECDSA_SPECIFIED "1.2.840.10045.4.3" #define szOID_ECDSA_SPECIFIED "1.2.840.10045.4.3"
// iso(1) member-body(2) us(840) 10045 signatures(4) specified(3) 2 // iso(1) member-body(2) us(840) 10045 signatures(4) specified(3) 2
#define szOID_ECDSA_SHA256 "1.2.840.10045.4.3.2" #define szOID_ECDSA_SHA256 "1.2.840.10045.4.3.2"
// iso(1) member-body(2) us(840) 10045 signatures(4) specified(3) 3 // iso(1) member-body(2) us(840) 10045 signatures(4) specified(3) 3
skipping to change at line 2222 skipping to change at line 2300
} CRYPT_OBJID_TABLE, *PCRYPT_OBJID_TABLE; } CRYPT_OBJID_TABLE, *PCRYPT_OBJID_TABLE;
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// PKCS #1 HashInfo (DigestInfo) // PKCS #1 HashInfo (DigestInfo)
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
typedef struct _CRYPT_HASH_INFO { typedef struct _CRYPT_HASH_INFO {
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
CRYPT_HASH_BLOB Hash; CRYPT_HASH_BLOB Hash;
} CRYPT_HASH_INFO, *PCRYPT_HASH_INFO; } CRYPT_HASH_INFO, *PCRYPT_HASH_INFO;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Type used for an extension to an encoded content // Type used for an extension to an encoded content
// //
// Where the Value's CRYPT_OBJID_BLOB is in its encoded representation. // Where the Value's CRYPT_OBJID_BLOB is in its encoded representation.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// certenrolls_begin -- CERT_CONTEXT // certenrolls_begin -- CERT_CONTEXT
typedef struct _CERT_EXTENSION { typedef struct _CERT_EXTENSION {
LPSTR pszObjId; LPSTR pszObjId;
BOOL fCritical; BOOL fCritical;
CRYPT_OBJID_BLOB Value; CRYPT_OBJID_BLOB Value;
} CERT_EXTENSION, *PCERT_EXTENSION; } CERT_EXTENSION, *PCERT_EXTENSION;
typedef const CERT_EXTENSION* PCCERT_EXTENSION; typedef const CERT_EXTENSION* PCCERT_EXTENSION;
// certenrolls_end // certenrolls_end
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// AttributeTypeValue // AttributeTypeValue
// //
// Where the Value's CRYPT_OBJID_BLOB is in its encoded representation. // Where the Value's CRYPT_OBJID_BLOB is in its encoded representation.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// certenrolls_begin -- CRYPT_ATTRIBUTE_TYPE_VALUE // certenrolls_begin -- CRYPT_ATTRIBUTE_TYPE_VALUE
typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE { typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE {
LPSTR pszObjId; LPSTR pszObjId;
CRYPT_OBJID_BLOB Value; CRYPT_OBJID_BLOB Value;
} CRYPT_ATTRIBUTE_TYPE_VALUE, *PCRYPT_ATTRIBUTE_TYPE_VALUE; } CRYPT_ATTRIBUTE_TYPE_VALUE, *PCRYPT_ATTRIBUTE_TYPE_VALUE;
skipping to change at line 2496 skipping to change at line 2562
// Name attribute value without the Object Identifier // Name attribute value without the Object Identifier
// //
// The interpretation of the Value depends on the dwValueType. // The interpretation of the Value depends on the dwValueType.
// See above for a list of the types. // See above for a list of the types.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
typedef struct _CERT_NAME_VALUE { typedef struct _CERT_NAME_VALUE {
DWORD dwValueType; DWORD dwValueType;
CERT_RDN_VALUE_BLOB Value; CERT_RDN_VALUE_BLOB Value;
} CERT_NAME_VALUE, *PCERT_NAME_VALUE; } CERT_NAME_VALUE, *PCERT_NAME_VALUE;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Public Key Info // Public Key Info
// //
// The PublicKey is the encoded representation of the information as it is // The PublicKey is the encoded representation of the information as it is
// stored in the bit string // stored in the bit string
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// certenrolls_begin -- CERT_CONTEXT // certenrolls_begin -- CERT_CONTEXT
typedef struct _CERT_PUBLIC_KEY_INFO { typedef struct _CERT_PUBLIC_KEY_INFO {
CRYPT_ALGORITHM_IDENTIFIER Algorithm; CRYPT_ALGORITHM_IDENTIFIER Algorithm;
CRYPT_BIT_BLOB PublicKey; CRYPT_BIT_BLOB PublicKey;
} CERT_PUBLIC_KEY_INFO, *PCERT_PUBLIC_KEY_INFO; } CERT_PUBLIC_KEY_INFO, *PCERT_PUBLIC_KEY_INFO;
// certenrolls_end // certenrolls_end
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#define CERT_RSA_PUBLIC_KEY_OBJID szOID_RSA_RSA #define CERT_RSA_PUBLIC_KEY_OBJID szOID_RSA_RSA
#define CERT_DEFAULT_OID_PUBLIC_KEY_SIGN szOID_RSA_RSA #define CERT_DEFAULT_OID_PUBLIC_KEY_SIGN szOID_RSA_RSA
#define CERT_DEFAULT_OID_PUBLIC_KEY_XCHG szOID_RSA_RSA #define CERT_DEFAULT_OID_PUBLIC_KEY_XCHG szOID_RSA_RSA
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// ECC Private Key Info // ECC Private Key Info
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
typedef struct _CRYPT_ECC_PRIVATE_KEY_INFO{ typedef struct _CRYPT_ECC_PRIVATE_KEY_INFO{
DWORD dwVersion; // ecPrivKeyVer1(1) DWORD dwVersion; // ecPrivKeyVer1(1)
CRYPT_DER_BLOB PrivateKey; // d CRYPT_DER_BLOB PrivateKey; // d
skipping to change at line 2652 skipping to change at line 2706
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
typedef struct _CRYPT_PKCS8_EXPORT_PARAMS{ typedef struct _CRYPT_PKCS8_EXPORT_PARAMS{
HCRYPTPROV hCryptProv; HCRYPTPROV hCryptProv;
DWORD dwKeySpec; DWORD dwKeySpec;
LPSTR pszPrivateKeyObjId; LPSTR pszPrivateKeyObjId;
PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC pEncryptPrivateKeyFunc; PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC pEncryptPrivateKeyFunc;
LPVOID pVoidEncryptFunc; LPVOID pVoidEncryptFunc;
} CRYPT_PKCS8_EXPORT_PARAMS, *PCRYPT_PKCS8_EXPORT_PARAMS; } CRYPT_PKCS8_EXPORT_PARAMS, *PCRYPT_PKCS8_EXPORT_PARAMS;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Information stored in a certificate // Information stored in a certificate
// //
// The Issuer, Subject, Algorithm, PublicKey and Extension BLOBs are the // The Issuer, Subject, Algorithm, PublicKey and Extension BLOBs are the
// encoded representation of the information. // encoded representation of the information.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// certenrolls_begin -- CERT_CONTEXT // certenrolls_begin -- CERT_CONTEXT
typedef struct _CERT_INFO { typedef struct _CERT_INFO {
DWORD dwVersion; DWORD dwVersion;
CRYPT_INTEGER_BLOB SerialNumber; CRYPT_INTEGER_BLOB SerialNumber;
skipping to change at line 2681 skipping to change at line 2729
FILETIME NotAfter; FILETIME NotAfter;
CERT_NAME_BLOB Subject; CERT_NAME_BLOB Subject;
CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
CRYPT_BIT_BLOB IssuerUniqueId; CRYPT_BIT_BLOB IssuerUniqueId;
CRYPT_BIT_BLOB SubjectUniqueId; CRYPT_BIT_BLOB SubjectUniqueId;
DWORD cExtension; DWORD cExtension;
PCERT_EXTENSION rgExtension; PCERT_EXTENSION rgExtension;
} CERT_INFO, *PCERT_INFO; } CERT_INFO, *PCERT_INFO;
// certenrolls_end // certenrolls_end
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Certificate versions // Certificate versions
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define CERT_V1 0 #define CERT_V1 0
#define CERT_V2 1 #define CERT_V2 1
#define CERT_V3 2 #define CERT_V3 2
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Certificate Information Flags // Certificate Information Flags
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
skipping to change at line 3411 skipping to change at line 3453
#define X509_ECC_PRIVATE_KEY ((LPCSTR) 82) // CRYPT_ECC_PRIVATE _KEY_INFO #define X509_ECC_PRIVATE_KEY ((LPCSTR) 82) // CRYPT_ECC_PRIVATE _KEY_INFO
#define CNG_RSA_PRIVATE_KEY_BLOB ((LPCSTR) 83) // BCRYPT_RSAKEY_BLO B #define CNG_RSA_PRIVATE_KEY_BLOB ((LPCSTR) 83) // BCRYPT_RSAKEY_BLO B
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Subject Directory Attributes extension // Subject Directory Attributes extension
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define X509_SUBJECT_DIR_ATTRS ((LPCSTR) 84) #define X509_SUBJECT_DIR_ATTRS ((LPCSTR) 84)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Generic ECC Parameters
//--------------------------------------------------------------------------
#define X509_ECC_PARAMETERS ((LPCSTR) 85)
//+-------------------------------------------------------------------------
// Predefined PKCS #7 data structures that can be encoded / decoded. // Predefined PKCS #7 data structures that can be encoded / decoded.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define PKCS7_SIGNER_INFO ((LPCSTR) 500) #define PKCS7_SIGNER_INFO ((LPCSTR) 500)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Predefined PKCS #7 data structures that can be encoded / decoded. // Predefined PKCS #7 data structures that can be encoded / decoded.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define CMS_SIGNER_INFO ((LPCSTR) 501) #define CMS_SIGNER_INFO ((LPCSTR) 501)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
skipping to change at line 3562 skipping to change at line 3609
// of the corresponding base CRL. // of the corresponding base CRL.
#define szOID_CRL_VIRTUAL_BASE "1.3.6.1.4.1.311.21.3" #define szOID_CRL_VIRTUAL_BASE "1.3.6.1.4.1.311.21.3"
// szOID_CRL_NEXT_PUBLISH -- Contains the time when the next CRL is expected // szOID_CRL_NEXT_PUBLISH -- Contains the time when the next CRL is expected
// to be published. This may be sooner than the CRL's NextUpdate field. // to be published. This may be sooner than the CRL's NextUpdate field.
#define szOID_CRL_NEXT_PUBLISH "1.3.6.1.4.1.311.21.4" #define szOID_CRL_NEXT_PUBLISH "1.3.6.1.4.1.311.21.4"
// Enhanced Key Usage for CA encryption certificate // Enhanced Key Usage for CA encryption certificate
#define szOID_KP_CA_EXCHANGE "1.3.6.1.4.1.311.21.5" #define szOID_KP_CA_EXCHANGE "1.3.6.1.4.1.311.21.5"
// Enhanced Key Usage for Privacy CA encryption certificate
#define szOID_KP_PRIVACY_CA "1.3.6.1.4.1.311.21.36"
// Enhanced Key Usage for key recovery agent certificate // Enhanced Key Usage for key recovery agent certificate
#define szOID_KP_KEY_RECOVERY_AGENT "1.3.6.1.4.1.311.21.6" #define szOID_KP_KEY_RECOVERY_AGENT "1.3.6.1.4.1.311.21.6"
// Certificate template extension (v2) // Certificate template extension (v2)
#define szOID_CERTIFICATE_TEMPLATE "1.3.6.1.4.1.311.21.7" #define szOID_CERTIFICATE_TEMPLATE "1.3.6.1.4.1.311.21.7"
// The root oid for all enterprise specific oids // The root oid for all enterprise specific oids
#define szOID_ENTERPRISE_OID_ROOT "1.3.6.1.4.1.311.21.8" #define szOID_ENTERPRISE_OID_ROOT "1.3.6.1.4.1.311.21.8"
// Dummy signing Subject RDN // Dummy signing Subject RDN
skipping to change at line 3681 skipping to change at line 3731
#define szOID_SERVER_GATED_CRYPTO "1.3.6.1.4.1.311.10.3.3" #define szOID_SERVER_GATED_CRYPTO "1.3.6.1.4.1.311.10.3.3"
#endif #endif
#ifndef szOID_SGC_NETSCAPE #ifndef szOID_SGC_NETSCAPE
#define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1" #define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1"
#endif #endif
#define szOID_KP_EFS "1.3.6.1.4.1.311.10.3.4" #define szOID_KP_EFS "1.3.6.1.4.1.311.10.3.4"
#define szOID_EFS_RECOVERY "1.3.6.1.4.1.311.10.3.4.1" #define szOID_EFS_RECOVERY "1.3.6.1.4.1.311.10.3.4.1"
// Can use Windows Hardware Compatible (WHQL) // Signed by Microsoft through hardware certification (WHQL)
#define szOID_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.5" #define szOID_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.5"
// Signed by Microsoft after the developer attests it is valid (Attested WHQL)
#define szOID_ATTEST_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.5.1"
// Signed by the NT5 build lab // Signed by the NT5 build lab
#define szOID_NT5_CRYPTO "1.3.6.1.4.1.311.10.3.6" #define szOID_NT5_CRYPTO "1.3.6.1.4.1.311.10.3.6"
// Signed by and OEM of WHQL // Signed by and OEM of WHQL
#define szOID_OEM_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.7" #define szOID_OEM_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.7"
// Signed by the Embedded NT // Signed by the Embedded NT
#define szOID_EMBEDDED_NT_CRYPTO "1.3.6.1.4.1.311.10.3.8" #define szOID_EMBEDDED_NT_CRYPTO "1.3.6.1.4.1.311.10.3.8"
// Signer of a CTL containing trusted roots // Signer of a CTL containing trusted roots
skipping to change at line 3720 skipping to change at line 3773
// szOID_PKIX_KP_CODE_SIGNING to indicate new time stamp semantics should be // szOID_PKIX_KP_CODE_SIGNING to indicate new time stamp semantics should be
// used. Support for this OID was added in WXP. // used. Support for this OID was added in WXP.
#define szOID_KP_LIFETIME_SIGNING "1.3.6.1.4.1.311.10.3.13" #define szOID_KP_LIFETIME_SIGNING "1.3.6.1.4.1.311.10.3.13"
#define szOID_KP_MOBILE_DEVICE_SOFTWARE "1.3.6.1.4.1.311.10.3.14" #define szOID_KP_MOBILE_DEVICE_SOFTWARE "1.3.6.1.4.1.311.10.3.14"
#define szOID_KP_SMART_DISPLAY "1.3.6.1.4.1.311.10.3.15" #define szOID_KP_SMART_DISPLAY "1.3.6.1.4.1.311.10.3.15"
#define szOID_KP_CSP_SIGNATURE "1.3.6.1.4.1.311.10.3.16" #define szOID_KP_CSP_SIGNATURE "1.3.6.1.4.1.311.10.3.16"
#define szOID_KP_FLIGHT_SIGNING "1.3.6.1.4.1.311.10.3.27"
#ifndef szOID_DRM #ifndef szOID_DRM
#define szOID_DRM "1.3.6.1.4.1.311.10.5.1" #define szOID_DRM "1.3.6.1.4.1.311.10.5.1"
#endif #endif
// Microsoft DRM EKU // Microsoft DRM EKU
#ifndef szOID_DRM_INDIVIDUALIZATION #ifndef szOID_DRM_INDIVIDUALIZATION
#define szOID_DRM_INDIVIDUALIZATION "1.3.6.1.4.1.311.10.5.2" #define szOID_DRM_INDIVIDUALIZATION "1.3.6.1.4.1.311.10.5.2"
#endif #endif
#ifndef szOID_LICENSES #ifndef szOID_LICENSES
skipping to change at line 3772 skipping to change at line 3827
// Signer of third-party components that are Windows in box // Signer of third-party components that are Windows in box
#define szOID_WINDOWS_THIRD_PARTY_COMPONENT_SIGNER "1.3.6.1.4.1.311.10.3.25" #define szOID_WINDOWS_THIRD_PARTY_COMPONENT_SIGNER "1.3.6.1.4.1.311.10.3.25"
// Signed by the Windows Software Portal // Signed by the Windows Software Portal
#define szOID_WINDOWS_SOFTWARE_EXTENSION_SIGNER "1.3.6.1.4.1.311.10.3.26" #define szOID_WINDOWS_SOFTWARE_EXTENSION_SIGNER "1.3.6.1.4.1.311.10.3.26"
// CTL containing disallowed entries // CTL containing disallowed entries
#define szOID_DISALLOWED_LIST "1.3.6.1.4.1.311.10.3.30" #define szOID_DISALLOWED_LIST "1.3.6.1.4.1.311.10.3.30"
// Signer of a CTL containing Pin Rules.
// The szOID_ROOT_LIST_SIGNER OID can also be used
#define szOID_PIN_RULES_SIGNER "1.3.6.1.4.1.311.10.3.31"
// CTL containing Site Pin Rules
#define szOID_PIN_RULES_CTL "1.3.6.1.4.1.311.10.3.32"
// Pin Rules CTL extension
#define szOID_PIN_RULES_EXT "1.3.6.1.4.1.311.10.3.33"
// SubjectAlgorithm for Pin Rules CTL entries
#define szOID_PIN_RULES_DOMAIN_NAME "1.3.6.1.4.1.311.10.3.34"
// Pin Rules Log End Date CTL extension
#define szOID_PIN_RULES_LOG_END_DATE_EXT "1.3.6.1.4.1.311.10.3.35"
// Image can be executed in Isolated User Mode (IUM)
#define szOID_IUM_SIGNING "1.3.6.1.4.1.311.10.3.37"
// Signed by Microsoft through EV hardware certification (EV WHQL)
#define szOID_EV_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.39"
// The following extension is set in the disallowed CTL to trigger // The following extension is set in the disallowed CTL to trigger
// a quicker sync of the autorootupdate CTL // a quicker sync of the autorootupdate CTL
#define szOID_SYNC_ROOT_CTL_EXT "1.3.6.1.4.1.311.10.3.50" #define szOID_SYNC_ROOT_CTL_EXT "1.3.6.1.4.1.311.10.3.50"
// HAL Extensions // HAL Extensions
#define szOID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING "1.3.6.1.4.1.311.61.5.1" #define szOID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING "1.3.6.1.4.1.311.61.5.1"
// Signer of Windows Store applications // Signer of Windows Store applications
#define szOID_WINDOWS_STORE_SIGNER "1.3.6.1.4.1.311.76.3.1" #define szOID_WINDOWS_STORE_SIGNER "1.3.6.1.4.1.311.76.3.1"
// Signer of dynamic code generators // Signer of dynamic code generators
#define szOID_DYNAMIC_CODE_GEN_SIGNER "1.3.6.1.4.1.311.76.5.1" #define szOID_DYNAMIC_CODE_GEN_SIGNER "1.3.6.1.4.1.311.76.5.1"
// Signer of Microsoft code // Signer of Microsoft code
#define szOID_MICROSOFT_PUBLISHER_SIGNER "1.3.6.1.4.1.311.76.8.1" #define szOID_MICROSOFT_PUBLISHER_SIGNER "1.3.6.1.4.1.311.76.8.1"
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Microsoft Attribute Object Identifiers // Microsoft Attribute Object Identifiers
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
#define szOID_YESNO_TRUST_ATTR "1.3.6.1.4.1.311.10.4.1" #define szOID_YESNO_TRUST_ATTR "1.3.6.1.4.1.311.10.4.1"
#define szOID_SITE_PIN_RULES_INDEX_ATTR "1.3.6.1.4.1.311.10.4.2"
#define szOID_SITE_PIN_RULES_FLAGS_ATTR "1.3.6.1.4.1.311.10.4.3"
#define SITE_PIN_RULES_ALL_SUBDOMAINS_FLAG 0x1
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Qualifiers that may be part of the szOID_CERT_POLICIES and // Qualifiers that may be part of the szOID_CERT_POLICIES and
// szOID_CERT_POLICIES95 extensions // szOID_CERT_POLICIES95 extensions
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
#define szOID_PKIX_POLICY_QUALIFIER_CPS "1.3.6.1.5.5.7.2.1" #define szOID_PKIX_POLICY_QUALIFIER_CPS "1.3.6.1.5.5.7.2.1"
#define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE "1.3.6.1.5.5.7.2.2" #define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE "1.3.6.1.5.5.7.2.2"
#define szOID_ROOT_PROGRAM_FLAGS "1.3.6.1.4.1.311.60.1.1" #define szOID_ROOT_PROGRAM_FLAGS "1.3.6.1.4.1.311.60.1.1"
skipping to change at line 3838 skipping to change at line 3919
//+========================================================================= //+=========================================================================
// TPM Object Identifiers // TPM Object Identifiers
//-========================================================================= //-=========================================================================
// Subject Alt Name Directory Name RDNs // Subject Alt Name Directory Name RDNs
#define szOID_RDN_TPM_MANUFACTURER "2.23.133.2.1" #define szOID_RDN_TPM_MANUFACTURER "2.23.133.2.1"
#define szOID_RDN_TPM_MODEL "2.23.133.2.2" #define szOID_RDN_TPM_MODEL "2.23.133.2.2"
#define szOID_RDN_TPM_VERSION "2.23.133.2.3" #define szOID_RDN_TPM_VERSION "2.23.133.2.3"
#define szOID_RDN_TCG_PLATFORM_MANUFACTURER "2.23.133.2.4"
#define szOID_RDN_TCG_PLATFORM_MODEL "2.23.133.2.5"
#define szOID_RDN_TCG_PLATFORM_VERSION "2.23.133.2.6"
// TPM Manufacturer ASCII Hex Strings // TPM Manufacturer ASCII Hex Strings
// AMD "AMD" 0x41 0x4D 0x44 0x00 // AMD "AMD" 0x41 0x4D 0x44 0x00
// Atmel "ATML" 0x41 0x54 0x4D 0x4C // Atmel "ATML" 0x41 0x54 0x4D 0x4C
// Broadcom "BRCM" 0x42 0x52 0x43 0x4D // Broadcom "BRCM" 0x42 0x52 0x43 0x4D
// IBM "IBM" 0x49 0x42 0x4d 0x00 // IBM "IBM" 0x49 0x42 0x4d 0x00
// Infineon "IFX" 0x49 0x46 0x58 0x00 // Infineon "IFX" 0x49 0x46 0x58 0x00
// Intel "INTC" 0x49 0x4E 0x54 0x43 // Intel "INTC" 0x49 0x4E 0x54 0x43
// Lenovo "LEN" 0x4C 0x45 0x4E 0x00 // Lenovo "LEN" 0x4C 0x45 0x4E 0x00
// National Semiconductor "NSM " 0x4E 0x53 0x4D 0x20 // National Semiconductor "NSM " 0x4E 0x53 0x4D 0x20
// Nationz "NTZ" 0x4E 0x54 0x5A 0x00
// Nuvoton Technology "NTC" 0x4E 0x54 0x43 0x00
// Qualcomm "QCOM" 0x51 0x43 0x4F 0x4D // Qualcomm "QCOM" 0x51 0x43 0x4F 0x4D
// SMSC "SMSC" 0x53 0x4D 0x53 0x43 // SMSC "SMSC" 0x53 0x4D 0x53 0x43
// ST Microelectronics "STM " 0x53 0x54 0x4D 0x20 // ST Microelectronics "STM " 0x53 0x54 0x4D 0x20
// Samsung "SMSN" 0x53 0x4D 0x53 0x4E // Samsung "SMSN" 0x53 0x4D 0x53 0x4E
// Sinosun "SNS" 0x53 0x4E 0x53 0x00 // Sinosun "SNS" 0x53 0x4E 0x53 0x00
// Texas Instruments "TXN" 0x54 0x58 0x4E 0x00 // Texas Instruments "TXN" 0x54 0x58 0x4E 0x00
// Winbond "WEC" 0x57 0x45 0x43 0x00 // Winbond "WEC" 0x57 0x45 0x43 0x00
// //
// Obtained from: http://www.trustedcomputinggroup.org/files/static_page_files/B 4D74EEA-1A4B-B294-D022691CD8A6FD41/Vendor_ID_Registry_0.5_clean.pdf // Obtained from: http://www.trustedcomputinggroup.org/files/static_page_files/3 3FCF23D-1A4B-B294-D07ED1FE636CF4BE/Vendor_ID_Registry_0%207_clean.pdf
// pkcs10 attributes // pkcs10 attributes
#define szOID_ENROLL_EK_INFO "1.3.6.1.4.1.311.21.23" #define szOID_ENROLL_EK_INFO "1.3.6.1.4.1.311.21.23" // EKInfo
#define szOID_ENROLL_AIK_INFO "1.3.6.1.4.1.311.21.39" // EKInfo
#define szOID_ENROLL_ATTESTATION_STATEMENT "1.3.6.1.4.1.311.21.24" #define szOID_ENROLL_ATTESTATION_STATEMENT "1.3.6.1.4.1.311.21.24"
#define szOID_ENROLL_KSP_NAME "1.3.6.1.4.1.311.21.25" // pkcs10 an
d cmc full response // pkcs10 and CMC Full Response Tagged Attribute containing the KSP name.
// ksp_name // Encoded as a unicode string, which must be null terminated.
encoded as a unicode // See CERT_RDN_UNICODE_STRING in the CERT_NAME_VALUE structure.
// string. S #define szOID_ENROLL_KSP_NAME "1.3.6.1.4.1.311.21.25"
ee CERT_RDN_UNICODE_STRING.
// on CERT_N
AME_VALUE structure. It
// must be n
ull terminated.
// CMC Full Response Tagged Attributes // CMC Full Response Tagged Attributes
#define szOID_ENROLL_EKPUB_CHALLENGE "1.3.6.1.4.1.311.21.26" #define szOID_ENROLL_EKPUB_CHALLENGE "1.3.6.1.4.1.311.21.26"
#define szOID_ENROLL_CAXCHGCERT_HASH "1.3.6.1.4.1.311.21.27" #define szOID_ENROLL_CAXCHGCERT_HASH "1.3.6.1.4.1.311.21.27"
#define szOID_ENROLL_ATTESTATION_CHALLENGE "1.3.6.1.4.1.311.21.28" #define szOID_ENROLL_ATTESTATION_CHALLENGE "1.3.6.1.4.1.311.21.28"
#define szOID_ENROLL_ENCRYPTION_ALGORITHM "1.3.6.1.4.1.311.21.29" // algorithm oid #define szOID_ENROLL_ENCRYPTION_ALGORITHM "1.3.6.1.4.1.311.21.29" // algorithm oid
// TPM certificate EKU OIDs // TPM certificate EKU OIDs
#define szOID_KP_TPM_EK_CERTIFICATE "2.23.133.8.1" #define szOID_KP_TPM_EK_CERTIFICATE "2.23.133.8.1"
#define szOID_KP_TPM_PLATFORM_CERTIFICATE "2.23.133.8.2" #define szOID_KP_TPM_PLATFORM_CERTIFICATE "2.23.133.8.2"
#define szOID_KP_TPM_AIK_CERTIFICATE "2.23.133.8.3" #define szOID_KP_TPM_AIK_CERTIFICATE "2.23.133.8.3"
// EK validation Issuance Policy OIDs // EK validation Issuance Policy OIDs
#define szOID_ENROLL_EKVERIFYKEY "1.3.6.1.4.1.311.21.30" #define szOID_ENROLL_EKVERIFYKEY "1.3.6.1.4.1.311.21.30"
#define szOID_ENROLL_EKVERIFYCERT "1.3.6.1.4.1.311.21.31" #define szOID_ENROLL_EKVERIFYCERT "1.3.6.1.4.1.311.21.31"
#define szOID_ENROLL_EKVERIFYCREDS "1.3.6.1.4.1.311.21.32" #define szOID_ENROLL_EKVERIFYCREDS "1.3.6.1.4.1.311.21.32"
// Signed decimal string encoded as a Printable String // Signed decimal string encoded as a Printable String
#define szOID_ENROLL_SCEP_ERROR "1.3.6.1.4.1.311.21.33" #define szOID_ENROLL_SCEP_ERROR "1.3.6.1.4.1.311.21.33" // HRESULT
// SCEP attestation attributes
#define szOID_ENROLL_SCEP_SERVER_STATE "1.3.6.1.4.1.311.21.34" // blob
#define szOID_ENROLL_SCEP_CHALLENGE_ANSWER "1.3.6.1.4.1.311.21.35" // blob
#define szOID_ENROLL_SCEP_CLIENT_REQUEST "1.3.6.1.4.1.311.21.37" // Pkcs10
#define szOID_ENROLL_SCEP_SERVER_MESSAGE "1.3.6.1.4.1.311.21.38" // String
#define szOID_ENROLL_SCEP_SERVER_SECRET "1.3.6.1.4.1.311.21.40" // blob
// key affinity extension: ASN NULL in requests, SEQUENCE of ANY containing
// two OCTET strings in issued certs: a salt blob and a hash value.
#define szOID_ENROLL_KEY_AFFINITY "1.3.6.1.4.1.311.21.41"
// SCEP pkcs10 attribute: signer cert thumbprint
#define szOID_ENROLL_SCEP_SIGNER_HASH "1.3.6.1.4.1.311.21.42" // blob
// TPM line specific EK CA KeyId
#define szOID_ENROLL_EK_CA_KEYID "1.3.6.1.4.1.311.21.43" // blob
// Subject Directory Attributes // Subject Directory Attributes
#define szOID_ATTR_SUPPORTED_ALGORITHMS "2.5.4.52" #define szOID_ATTR_SUPPORTED_ALGORITHMS "2.5.4.52"
#define szOID_ATTR_TPM_SPECIFICATION "2.23.133.2.16" #define szOID_ATTR_TPM_SPECIFICATION "2.23.133.2.16"
#define szOID_ATTR_PLATFORM_SPECIFICATION "2.23.133.2.17"
#define szOID_ATTR_TPM_SECURITY_ASSERTIONS "2.23.133.2.18" #define szOID_ATTR_TPM_SECURITY_ASSERTIONS "2.23.133.2.18"
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// X509_CERT // X509_CERT
// //
// The "to be signed" encoded content plus its signature. The ToBeSigned // The "to be signed" encoded content plus its signature. The ToBeSigned
// content is the CryptEncodeObject() output for one of the following: // content is the CryptEncodeObject() output for one of the following:
// X509_CERT_TO_BE_SIGNED, X509_CERT_CRL_TO_BE_SIGNED or // X509_CERT_TO_BE_SIGNED, X509_CERT_CRL_TO_BE_SIGNED or
// X509_CERT_REQUEST_TO_BE_SIGNED. // X509_CERT_REQUEST_TO_BE_SIGNED.
// //
skipping to change at line 4444 skipping to change at line 4550
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// szOID_SUBJECT_DIR_ATTRS // szOID_SUBJECT_DIR_ATTRS
// X509_SUBJECT_DIR_ATTRS // X509_SUBJECT_DIR_ATTRS
// //
// pvStructInfo points to a CRYPT_ATTRIBUTES. // pvStructInfo points to a CRYPT_ATTRIBUTES.
// //
// Encoded as a "SEQUENCE OF" instead of "SET OF" // Encoded as a "SEQUENCE OF" instead of "SET OF"
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// X509_ECC_PARAMETERS
//
// pvStructInfo points to a CRYPT_DATA_BLOB which contains CNG Parameters
//--------------------------------------------------------------------------
//+-------------------------------------------------------------------------
// PKCS_CONTENT_INFO_SEQUENCE_OF_ANY data structure // PKCS_CONTENT_INFO_SEQUENCE_OF_ANY data structure
// //
// pvStructInfo points to following CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY. // pvStructInfo points to following CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY.
// //
// For X509_ASN_ENCODING: encoded as a PKCS#7 ContentInfo structure wrapping // For X509_ASN_ENCODING: encoded as a PKCS#7 ContentInfo structure wrapping
// a sequence of ANY. The value of the contentType field is pszObjId, // a sequence of ANY. The value of the contentType field is pszObjId,
// while the content field is the following structure: // while the content field is the following structure:
// SequenceOfAny ::= SEQUENCE OF ANY // SequenceOfAny ::= SEQUENCE OF ANY
// //
// The CRYPT_DER_BLOBs point to the already encoded ANY content. // The CRYPT_DER_BLOBs point to the already encoded ANY content.
skipping to change at line 4617 skipping to change at line 4729
// enumerated values: // enumerated values:
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define CRL_REASON_UNSPECIFIED 0 #define CRL_REASON_UNSPECIFIED 0
#define CRL_REASON_KEY_COMPROMISE 1 #define CRL_REASON_KEY_COMPROMISE 1
#define CRL_REASON_CA_COMPROMISE 2 #define CRL_REASON_CA_COMPROMISE 2
#define CRL_REASON_AFFILIATION_CHANGED 3 #define CRL_REASON_AFFILIATION_CHANGED 3
#define CRL_REASON_SUPERSEDED 4 #define CRL_REASON_SUPERSEDED 4
#define CRL_REASON_CESSATION_OF_OPERATION 5 #define CRL_REASON_CESSATION_OF_OPERATION 5
#define CRL_REASON_CERTIFICATE_HOLD 6 #define CRL_REASON_CERTIFICATE_HOLD 6
#define CRL_REASON_REMOVE_FROM_CRL 8 #define CRL_REASON_REMOVE_FROM_CRL 8
#define CRL_REASON_PRIVILEGE_WITHDRAWN 9
#define CRL_REASON_AA_COMPROMISE 10
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// X509_CRL_DIST_POINTS // X509_CRL_DIST_POINTS
// szOID_CRL_DIST_POINTS // szOID_CRL_DIST_POINTS
// //
// pvStructInfo points to following CRL_DIST_POINTS_INFO. // pvStructInfo points to following CRL_DIST_POINTS_INFO.
// //
// For CRYPT_E_INVALID_IA5_STRING, the error location is returned in // For CRYPT_E_INVALID_IA5_STRING, the error location is returned in
// *pcbEncoded by CryptEncodeObject(X509_CRL_DIST_POINTS) // *pcbEncoded by CryptEncodeObject(X509_CRL_DIST_POINTS)
// //
skipping to change at line 4654 skipping to change at line 4768
#define CRL_DIST_POINT_NO_NAME 0 #define CRL_DIST_POINT_NO_NAME 0
#define CRL_DIST_POINT_FULL_NAME 1 #define CRL_DIST_POINT_FULL_NAME 1
#define CRL_DIST_POINT_ISSUER_RDN_NAME 2 #define CRL_DIST_POINT_ISSUER_RDN_NAME 2
typedef struct _CRL_DIST_POINT { typedef struct _CRL_DIST_POINT {
CRL_DIST_POINT_NAME DistPointName; // OPTIONAL CRL_DIST_POINT_NAME DistPointName; // OPTIONAL
CRYPT_BIT_BLOB ReasonFlags; // OPTIONAL CRYPT_BIT_BLOB ReasonFlags; // OPTIONAL
CERT_ALT_NAME_INFO CRLIssuer; // OPTIONAL CERT_ALT_NAME_INFO CRLIssuer; // OPTIONAL
} CRL_DIST_POINT, *PCRL_DIST_POINT; } CRL_DIST_POINT, *PCRL_DIST_POINT;
// Byte[0]
#define CRL_REASON_UNUSED_FLAG 0x80 #define CRL_REASON_UNUSED_FLAG 0x80
#define CRL_REASON_KEY_COMPROMISE_FLAG 0x40 #define CRL_REASON_KEY_COMPROMISE_FLAG 0x40
#define CRL_REASON_CA_COMPROMISE_FLAG 0x20 #define CRL_REASON_CA_COMPROMISE_FLAG 0x20
#define CRL_REASON_AFFILIATION_CHANGED_FLAG 0x10 #define CRL_REASON_AFFILIATION_CHANGED_FLAG 0x10
#define CRL_REASON_SUPERSEDED_FLAG 0x08 #define CRL_REASON_SUPERSEDED_FLAG 0x08
#define CRL_REASON_CESSATION_OF_OPERATION_FLAG 0x04 #define CRL_REASON_CESSATION_OF_OPERATION_FLAG 0x04
#define CRL_REASON_CERTIFICATE_HOLD_FLAG 0x02 #define CRL_REASON_CERTIFICATE_HOLD_FLAG 0x02
#define CRL_REASON_PRIVILEGE_WITHDRAWN_FLAG 0x01
// Byte[1]
#define CRL_REASON_AA_COMPROMISE_FLAG 0x80
typedef struct _CRL_DIST_POINTS_INFO { typedef struct _CRL_DIST_POINTS_INFO {
DWORD cDistPoint; DWORD cDistPoint;
PCRL_DIST_POINT rgDistPoint; PCRL_DIST_POINT rgDistPoint;
} CRL_DIST_POINTS_INFO, *PCRL_DIST_POINTS_INFO; } CRL_DIST_POINTS_INFO, *PCRL_DIST_POINTS_INFO;
#define CRL_DIST_POINT_ERR_INDEX_MASK 0x7F #define CRL_DIST_POINT_ERR_INDEX_MASK 0x7F
#define CRL_DIST_POINT_ERR_INDEX_SHIFT 24 #define CRL_DIST_POINT_ERR_INDEX_SHIFT 24
#define GET_CRL_DIST_POINT_ERR_INDEX(X) \ #define GET_CRL_DIST_POINT_ERR_INDEX(X) \
((X >> CRL_DIST_POINT_ERR_INDEX_SHIFT) & CRL_DIST_POINT_ERR_INDEX_MASK) ((X >> CRL_DIST_POINT_ERR_INDEX_SHIFT) & CRL_DIST_POINT_ERR_INDEX_MASK)
skipping to change at line 5927 skipping to change at line 6045
// szOID_ATTR_TPM_SPECIFICATION // szOID_ATTR_TPM_SPECIFICATION
// //
// pvStructInfo points to following CERT_TPM_SPECIFICATION_INFO. // pvStructInfo points to following CERT_TPM_SPECIFICATION_INFO.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
typedef struct _CERT_TPM_SPECIFICATION_INFO { typedef struct _CERT_TPM_SPECIFICATION_INFO {
LPWSTR pwszFamily; // Encoded as UTF8 LPWSTR pwszFamily; // Encoded as UTF8
DWORD dwLevel; DWORD dwLevel;
DWORD dwRevision; DWORD dwRevision;
} CERT_TPM_SPECIFICATION_INFO, *PCERT_TPM_SPECIFICATION_INFO; } CERT_TPM_SPECIFICATION_INFO, *PCERT_TPM_SPECIFICATION_INFO;
//+-------------------------------------------------------------------------
// szOID_ENROLL_KEY_AFFINITY -- certificate extension
//
// pvStructInfo points to a CRYPT_SEQUENCE_OF_ANY.
//
// The two resulting CRYPT_DER_BLOBs point to a salt blob and a hash result.
// In Pkcs10 requests, the extension will contain an ASN NULL.
//--------------------------------------------------------------------------
//+========================================================================= //+=========================================================================
// Object IDentifier (OID) Installable Functions: Data Structures and APIs // Object IDentifier (OID) Installable Functions: Data Structures and APIs
//========================================================================== //==========================================================================
typedef void *HCRYPTOIDFUNCSET; typedef void *HCRYPTOIDFUNCSET;
typedef void *HCRYPTOIDFUNCADDR; typedef void *HCRYPTOIDFUNCADDR;
// Predefined OID Function Names // Predefined OID Function Names
#define CRYPT_OID_ENCODE_OBJECT_FUNC "CryptDllEncodeObject" #define CRYPT_OID_ENCODE_OBJECT_FUNC "CryptDllEncodeObject"
#define CRYPT_OID_DECODE_OBJECT_FUNC "CryptDllDecodeObject" #define CRYPT_OID_DECODE_OBJECT_FUNC "CryptDllDecodeObject"
#define CRYPT_OID_ENCODE_OBJECT_EX_FUNC "CryptDllEncodeObjectEx" #define CRYPT_OID_ENCODE_OBJECT_EX_FUNC "CryptDllEncodeObjectEx"
#define CRYPT_OID_DECODE_OBJECT_EX_FUNC "CryptDllDecodeObjectEx" #define CRYPT_OID_DECODE_OBJECT_EX_FUNC "CryptDllDecodeObjectEx"
#define CRYPT_OID_CREATE_COM_OBJECT_FUNC "CryptDllCreateCOMObject" #define CRYPT_OID_CREATE_COM_OBJECT_FUNC "CryptDllCreateCOMObject"
#define CRYPT_OID_VERIFY_REVOCATION_FUNC "CertDllVerifyRevocation" #define CRYPT_OID_VERIFY_REVOCATION_FUNC "CertDllVerifyRevocation"
skipping to change at line 6155 skipping to change at line 6281
// or CryptGetDefaultOIDFunctionAddress. // or CryptGetDefaultOIDFunctionAddress.
// //
// If a Dll was loaded for the function its unloaded. However, before doing // If a Dll was loaded for the function its unloaded. However, before doing
// the unload, the DllCanUnloadNow function exported by the loaded Dll is // the unload, the DllCanUnloadNow function exported by the loaded Dll is
// called. It should return S_FALSE to inhibit the unload or S_TRUE to enable // called. It should return S_FALSE to inhibit the unload or S_TRUE to enable
// the unload. If the Dll doesn't export DllCanUnloadNow, the Dll is unloaded. // the unload. If the Dll doesn't export DllCanUnloadNow, the Dll is unloaded.
// //
// DllCanUnloadNow has the following signature: // DllCanUnloadNow has the following signature:
// STDAPI DllCanUnloadNow(void); // STDAPI DllCanUnloadNow(void);
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptFreeOIDFunctionAddress( CryptFreeOIDFunctionAddress(
_In_ HCRYPTOIDFUNCADDR hFuncAddr, _In_ HCRYPTOIDFUNCADDR hFuncAddr,
_In_ DWORD dwFlags _In_ DWORD dwFlags
); );
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Register the Dll containing the function to be called for the specified // Register the Dll containing the function to be called for the specified
// encoding type, function name and OID. // encoding type, function name and OID.
// //
// pwszDll may contain environment-variable strings // pwszDll may contain environment-variable strings
// which are ExpandEnvironmentStrings()'ed before loading the Dll. // which are ExpandEnvironmentStrings()'ed before loading the Dll.
// //
// In addition to registering the DLL, you may override the // In addition to registering the DLL, you may override the
// name of the function to be called. For example, // name of the function to be called. For example,
// pszFuncName = "CryptDllEncodeObject", // pszFuncName = "CryptDllEncodeObject",
skipping to change at line 6270 skipping to change at line 6403
); );
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Get the value for the specified encoding type, function name, OID and // Get the value for the specified encoding type, function name, OID and
// value name. // value name.
// //
// See RegEnumValue for the possible value types. // See RegEnumValue for the possible value types.
// //
// String types are UNICODE. // String types are UNICODE.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptGetOIDFunctionValue( CryptGetOIDFunctionValue(
_In_ DWORD dwEncodingType, _In_ DWORD dwEncodingType,
_In_ LPCSTR pszFuncName, _In_ LPCSTR pszFuncName,
_In_ LPCSTR pszOID, _In_ LPCSTR pszOID,
_In_opt_ LPCWSTR pwszValueName, _In_opt_ LPCWSTR pwszValueName,
_Out_opt_ DWORD *pdwValueType, _Out_opt_ DWORD *pdwValueType,
_Out_writes_bytes_to_opt_(*pcbValueData, *pcbValueData) BYTE *pbValueData, _Out_writes_bytes_to_opt_(*pcbValueData, *pcbValueData) BYTE *pbValueData,
skipping to change at line 6439 skipping to change at line 6579
// in the PKCS7's digestEncryptionAlgorithm's parameters. // in the PKCS7's digestEncryptionAlgorithm's parameters.
// CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG can be set to omit // CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG can be set to omit
// NULL parameters when encoding. // NULL parameters when encoding.
// //
// For the ECC named curve public keys // For the ECC named curve public keys
// DWORD[1] - BCRYPT_ECCKEY_BLOB dwMagic field value // DWORD[1] - BCRYPT_ECCKEY_BLOB dwMagic field value
// DWORD[2] - dwBitLength. Where BCRYPT_ECCKEY_BLOB's // DWORD[2] - dwBitLength. Where BCRYPT_ECCKEY_BLOB's
// cbKey = dwBitLength / 8 + ((dwBitLength % 8) ? 1 : 0) // cbKey = dwBitLength / 8 + ((dwBitLength % 8) ? 1 : 0)
// //
#define CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG 0x00000001 #define CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG 0x00000001
#define CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG 0x00000002 #define CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG 0x00000002
#define CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG 0x00000004 #define CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG 0x00000004
#define CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG 0x80000000 #define CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG 0x80000000
#define CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG 0x40000000 #define CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG 0x40000000
#define CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG 0x20000000
#define CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG 0x10000000
// CRYPT_SIGN_ALG_OID_GROUP_ID has the following optional ExtraInfo: // CRYPT_SIGN_ALG_OID_GROUP_ID has the following optional ExtraInfo:
// DWORD[0] - Public Key Algid. // DWORD[0] - Public Key Algid.
// DWORD[1] - Flags. Same as above for CRYPT_PUBKEY_ALG_OID_GROUP_ID. // DWORD[1] - Flags. Same as above for CRYPT_PUBKEY_ALG_OID_GROUP_ID.
// DWORD[2] - Optional CryptAcquireContext(CRYPT_VERIFYCONTEXT)'s dwProvType. // DWORD[2] - Optional CryptAcquireContext(CRYPT_VERIFYCONTEXT)'s dwProvType.
// If omitted or 0, uses Public Key Algid to select // If omitted or 0, uses Public Key Algid to select
// appropriate dwProvType for signature verification. // appropriate dwProvType for signature verification.
// CRYPT_RDN_ATTR_OID_GROUP_ID has the following optional ExtraInfo: // CRYPT_RDN_ATTR_OID_GROUP_ID has the following optional ExtraInfo:
// Array of DWORDs: // Array of DWORDs:
skipping to change at line 6542 skipping to change at line 6684
// CryptFindOIDInfo( // CryptFindOIDInfo(
// CRYPT_OID_INFO_CNG_ALGID_KEY, // CRYPT_OID_INFO_CNG_ALGID_KEY,
// (void *) BCRYPT_AES_ALGORITHM, // (void *) BCRYPT_AES_ALGORITHM,
// CRYPT_ENCRYPT_ALG_OID_GROUP_ID | // CRYPT_ENCRYPT_ALG_OID_GROUP_ID |
// (192 << CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT) // (192 << CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT)
// ); // );
#define CRYPT_OID_INFO_OID_GROUP_BIT_LEN_MASK 0x0FFF0000 #define CRYPT_OID_INFO_OID_GROUP_BIT_LEN_MASK 0x0FFF0000
#define CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT 16 #define CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT 16
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Register OID information. The OID information specified in the // Register OID information. The OID information specified in the
// CCRYPT_OID_INFO structure is persisted to the registry. // CCRYPT_OID_INFO structure is persisted to the registry.
// //
// crypt32.dll contains information for the commonly known OIDs. This function // crypt32.dll contains information for the commonly known OIDs. This function
// allows applications to augment crypt32.dll's OID information. During // allows applications to augment crypt32.dll's OID information. During
// CryptFindOIDInfo's first call, the registered OID information is installed. // CryptFindOIDInfo's first call, the registered OID information is installed.
// //
// By default the registered OID information is installed after crypt32.dll's // By default the registered OID information is installed after crypt32.dll's
// OID entries. Set CRYPT_INSTALL_OID_INFO_BEFORE_FLAG to install before. // OID entries. Set CRYPT_INSTALL_OID_INFO_BEFORE_FLAG to install before.
skipping to change at line 6574 skipping to change at line 6722
// Unregister OID information. Only the pszOID and dwGroupId fields are // Unregister OID information. Only the pszOID and dwGroupId fields are
// used to identify the OID information to be unregistered. // used to identify the OID information to be unregistered.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptUnregisterOIDInfo( CryptUnregisterOIDInfo(
_In_ PCCRYPT_OID_INFO pInfo _In_ PCCRYPT_OID_INFO pInfo
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// If the callback returns FALSE, stops the enumeration. // If the callback returns FALSE, stops the enumeration.
typedef BOOL (WINAPI *PFN_CRYPT_ENUM_OID_INFO)( typedef BOOL (WINAPI *PFN_CRYPT_ENUM_OID_INFO)(
_In_ PCCRYPT_OID_INFO pInfo, _In_ PCCRYPT_OID_INFO pInfo,
_Inout_opt_ void *pvArg _Inout_opt_ void *pvArg
); );
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Enumerate the OID information. // Enumerate the OID information.
// //
// pfnEnumOIDInfo is called for each OID information entry. // pfnEnumOIDInfo is called for each OID information entry.
skipping to change at line 6862 skipping to change at line 7017
// CMS signed messages allow the inclusion of Attribute Certs. // CMS signed messages allow the inclusion of Attribute Certs.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
typedef struct _CMSG_SIGNER_ENCODE_INFO { typedef struct _CMSG_SIGNER_ENCODE_INFO {
DWORD cbSize; DWORD cbSize;
PCERT_INFO pCertInfo; PCERT_INFO pCertInfo;
// NCryptIsKeyHandle() is called to determine the union choice. // NCryptIsKeyHandle() is called to determine the union choice.
union { union {
HCRYPTPROV hCryptProv; HCRYPTPROV hCryptProv;
NCRYPT_KEY_HANDLE hNCryptKey; NCRYPT_KEY_HANDLE hNCryptKey;
#ifdef CMSG_SIGNER_ENCODE_INFO_HAS_IUM_FIELDS
BCRYPT_KEY_HANDLE hBCryptKey;
#endif
} DUMMYUNIONNAME; } DUMMYUNIONNAME;
// not applicable for hNCryptKey choice // not applicable for hNCryptKey choice
DWORD dwKeySpec; DWORD dwKeySpec;
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
void *pvHashAuxInfo; void *pvHashAuxInfo;
DWORD cAuthAttr; DWORD cAuthAttr;
PCRYPT_ATTRIBUTE rgAuthAttr; PCRYPT_ATTRIBUTE rgAuthAttr;
DWORD cUnauthAttr; DWORD cUnauthAttr;
skipping to change at line 7307 skipping to change at line 7465
#define CMSG_LENGTH_ONLY_FLAG 0x00000002 #define CMSG_LENGTH_ONLY_FLAG 0x00000002
#define CMSG_DETACHED_FLAG 0x00000004 #define CMSG_DETACHED_FLAG 0x00000004
#define CMSG_AUTHENTICATED_ATTRIBUTES_FLAG 0x00000008 #define CMSG_AUTHENTICATED_ATTRIBUTES_FLAG 0x00000008
#define CMSG_CONTENTS_OCTETS_FLAG 0x00000010 #define CMSG_CONTENTS_OCTETS_FLAG 0x00000010
#define CMSG_MAX_LENGTH_FLAG 0x00000020 #define CMSG_MAX_LENGTH_FLAG 0x00000020
// When set, nonData type inner content is encapsulated within an // When set, nonData type inner content is encapsulated within an
// OCTET STRING. Applicable to both Signed and Enveloped messages. // OCTET STRING. Applicable to both Signed and Enveloped messages.
#define CMSG_CMS_ENCAPSULATED_CONTENT_FLAG 0x00000040 #define CMSG_CMS_ENCAPSULATED_CONTENT_FLAG 0x00000040
// If set then the message will not have a signature in the final PKCS7
// of SignedData type. Instead the signature will contain plain text of
// the to-be-signed hash. It is used with digest signing.
#define CMSG_SIGNED_DATA_NO_SIGN_FLAG 0x00000080
// If set, then, the hCryptProv passed to CryptMsgOpenToEncode or // If set, then, the hCryptProv passed to CryptMsgOpenToEncode or
// CryptMsgOpenToDecode is released on the final CryptMsgClose. // CryptMsgOpenToDecode is released on the final CryptMsgClose.
// Not released if CryptMsgOpenToEncode or CryptMsgOpenToDecode fails. // Not released if CryptMsgOpenToEncode or CryptMsgOpenToDecode fails.
// //
// Also applies to hNCryptKey where applicable. // Also applies to hNCryptKey where applicable.
// //
// Note, the envelope recipient hCryptProv's aren't released. // Note, the envelope recipient hCryptProv's aren't released.
#define CMSG_CRYPT_RELEASE_CONTEXT_FLAG 0x00008000 #define CMSG_CRYPT_RELEASE_CONTEXT_FLAG 0x00008000
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
skipping to change at line 9075 skipping to change at line 9238
// If these properties don't already exist, then, a hash of the // If these properties don't already exist, then, a hash of the
// content is computed. (CERT_HASH_PROP_ID maps to the default // content is computed. (CERT_HASH_PROP_ID maps to the default
// hash algorithm, currently, CERT_SHA1_HASH_PROP_ID). // hash algorithm, currently, CERT_SHA1_HASH_PROP_ID).
// //
// There are additional APIs for creating certificate and CRL // There are additional APIs for creating certificate and CRL
// contexts not in a store (CertCreateCertificateContext and // contexts not in a store (CertCreateCertificateContext and
// CertCreateCRLContext). // CertCreateCRLContext).
// //
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
typedef void *HCERTSTORE; typedef void *HCERTSTORE;
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Certificate context. // Certificate context.
// //
// A certificate context contains both the encoded and decoded representation // A certificate context contains both the encoded and decoded representation
// of a certificate. A certificate context returned by a cert store function // of a certificate. A certificate context returned by a cert store function
// must be freed by calling the CertFreeCertificateContext function. The // must be freed by calling the CertFreeCertificateContext function. The
// CertDuplicateCertificateContext function can be called to make a duplicate // CertDuplicateCertificateContext function can be called to make a duplicate
// copy (which also must be freed by calling CertFreeCertificateContext). // copy (which also must be freed by calling CertFreeCertificateContext).
skipping to change at line 9103 skipping to change at line 9260
typedef struct _CERT_CONTEXT { typedef struct _CERT_CONTEXT {
DWORD dwCertEncodingType; DWORD dwCertEncodingType;
BYTE *pbCertEncoded; BYTE *pbCertEncoded;
DWORD cbCertEncoded; DWORD cbCertEncoded;
PCERT_INFO pCertInfo; PCERT_INFO pCertInfo;
HCERTSTORE hCertStore; HCERTSTORE hCertStore;
} CERT_CONTEXT, *PCERT_CONTEXT; } CERT_CONTEXT, *PCERT_CONTEXT;
typedef const CERT_CONTEXT *PCCERT_CONTEXT; typedef const CERT_CONTEXT *PCCERT_CONTEXT;
// certenrolls_end // certenrolls_end
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// CRL context. // CRL context.
// //
// A CRL context contains both the encoded and decoded representation // A CRL context contains both the encoded and decoded representation
// of a CRL. A CRL context returned by a cert store function // of a CRL. A CRL context returned by a cert store function
// must be freed by calling the CertFreeCRLContext function. The // must be freed by calling the CertFreeCRLContext function. The
// CertDuplicateCRLContext function can be called to make a duplicate // CertDuplicateCRLContext function can be called to make a duplicate
// copy (which also must be freed by calling CertFreeCRLContext). // copy (which also must be freed by calling CertFreeCRLContext).
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
typedef struct _CRL_CONTEXT { typedef struct _CRL_CONTEXT {
skipping to change at line 9161 skipping to change at line 9312
// Certificate, CRL and CTL property IDs // Certificate, CRL and CTL property IDs
// //
// See CertSetCertificateContextProperty or CertGetCertificateContextProperty // See CertSetCertificateContextProperty or CertGetCertificateContextProperty
// for usage information. // for usage information.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define CERT_KEY_PROV_HANDLE_PROP_ID 1 #define CERT_KEY_PROV_HANDLE_PROP_ID 1
#define CERT_KEY_PROV_INFO_PROP_ID 2 // CRYPT_KEY_PROV_INFO #define CERT_KEY_PROV_INFO_PROP_ID 2 // CRYPT_KEY_PROV_INFO
#define CERT_SHA1_HASH_PROP_ID 3 #define CERT_SHA1_HASH_PROP_ID 3
#define CERT_MD5_HASH_PROP_ID 4 #define CERT_MD5_HASH_PROP_ID 4
#define CERT_HASH_PROP_ID CERT_SHA1_HASH_PROP_ID #define CERT_HASH_PROP_ID CERT_SHA1_HASH_PROP_ID
#define CERT_KEY_CONTEXT_PROP_ID 5 #define CERT_KEY_CONTEXT_PROP_ID 5 // CERT_KEY_CONTEXT
#define CERT_KEY_SPEC_PROP_ID 6 #define CERT_KEY_SPEC_PROP_ID 6
#define CERT_IE30_RESERVED_PROP_ID 7 #define CERT_IE30_RESERVED_PROP_ID 7
#define CERT_PUBKEY_HASH_RESERVED_PROP_ID 8 #define CERT_PUBKEY_HASH_RESERVED_PROP_ID 8
#define CERT_ENHKEY_USAGE_PROP_ID 9 #define CERT_ENHKEY_USAGE_PROP_ID 9
#define CERT_CTL_USAGE_PROP_ID CERT_ENHKEY_USAGE_PROP_ID #define CERT_CTL_USAGE_PROP_ID CERT_ENHKEY_USAGE_PROP_ID
#define CERT_NEXT_UPDATE_LOCATION_PROP_ID 10 #define CERT_NEXT_UPDATE_LOCATION_PROP_ID 10
#define CERT_FRIENDLY_NAME_PROP_ID 11 // string #define CERT_FRIENDLY_NAME_PROP_ID 11 // string
#define CERT_PVK_FILE_PROP_ID 12 #define CERT_PVK_FILE_PROP_ID 12
#define CERT_DESCRIPTION_PROP_ID 13 // string #define CERT_DESCRIPTION_PROP_ID 13 // string
#define CERT_ACCESS_STATE_PROP_ID 14 #define CERT_ACCESS_STATE_PROP_ID 14
skipping to change at line 9264 skipping to change at line 9415
#define CERT_SCEP_SERVER_CERTS_PROP_ID 108 // Pkcs7 #define CERT_SCEP_SERVER_CERTS_PROP_ID 108 // Pkcs7
#define CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID 109 // sha1 Thumbprint #define CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID 109 // sha1 Thumbprint
#define CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID 110 // sha1 Thumbprint #define CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID 110 // sha1 Thumbprint
#define CERT_SCEP_CA_CERT_PROP_ID 111 // sha1 Thumbprint #define CERT_SCEP_CA_CERT_PROP_ID 111 // sha1 Thumbprint
#define CERT_SCEP_SIGNER_CERT_PROP_ID 112 // sha1 Thumbprint #define CERT_SCEP_SIGNER_CERT_PROP_ID 112 // sha1 Thumbprint
#define CERT_SCEP_NONCE_PROP_ID 113 // blob #define CERT_SCEP_NONCE_PROP_ID 113 // blob
// string: "CNGEncryptAlgId/CNGHashAlgId" example: "3DES/SHA1" // string: "CNGEncryptAlgId/CNGHashAlgId" example: "3DES/SHA1"
#define CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID 114 #define CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID 114
#define CERT_SCEP_FLAGS_PROP_ID 115 // DWORD #define CERT_SCEP_FLAGS_PROP_ID 115 // DWORD
#define CERT_SCEP_GUID_PROP_ID 116 // string
#define CERT_SERIALIZABLE_KEY_CONTEXT_PROP_ID 117 // CERT_KEY_CONTEXT
#define CERT_FIRST_RESERVED_PROP_ID 116 // Binary: isolated
#define CERT_ISOLATED_KEY_PROP_ID 118 // blob
#define CERT_SERIAL_CHAIN_PROP_ID 119
#define CERT_FIRST_RESERVED_PROP_ID 120
#define CERT_LAST_RESERVED_PROP_ID 0x00007FFF #define CERT_LAST_RESERVED_PROP_ID 0x00007FFF
#define CERT_FIRST_USER_PROP_ID 0x00008000 #define CERT_FIRST_USER_PROP_ID 0x00008000
#define CERT_LAST_USER_PROP_ID 0x0000FFFF #define CERT_LAST_USER_PROP_ID 0x0000FFFF
// certenrolld_end // certenrolld_end
#define IS_CERT_HASH_PROP_ID(X) (CERT_SHA1_HASH_PROP_ID == (X) || \ #define IS_CERT_HASH_PROP_ID(X) (CERT_SHA1_HASH_PROP_ID == (X) || \
CERT_MD5_HASH_PROP_ID == (X) || \ CERT_MD5_HASH_PROP_ID == (X) || \
CERT_SHA256_HASH_PROP_ID == (X) || \ CERT_SHA256_HASH_PROP_ID == (X) || \
CERT_SIGNATURE_HASH_PROP_ID == (X)) CERT_SIGNATURE_HASH_PROP_ID == (X))
skipping to change at line 9751 skipping to change at line 9907
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// Registry path to the OCM Subcomponents local machine subkey // Registry path to the OCM Subcomponents local machine subkey
#define CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH \ #define CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH \
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OC Manager\\Subcompon ents" L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OC Manager\\Subcompon ents"
// REG_DWORD, 1 is installed, 0 is NOT installed // REG_DWORD, 1 is installed, 0 is NOT installed
#define CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME L"RootAutoUpdate" #define CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME L"RootAutoUpdate"
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Root and Disallowed Certificate AutoUpdate Defines // Root, Disallowed Certificate and Pin Rules AutoUpdate Defines
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// Registry path to the DisableRootAutoUpdate SubKey // Registry path to the DisableRootAutoUpdate SubKey
#define CERT_DISABLE_ROOT_AUTO_UPDATE_REGPATH \ #define CERT_DISABLE_ROOT_AUTO_UPDATE_REGPATH \
CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\AuthRoot" CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\AuthRoot"
// The following disables both Root and Disallowed Certificate AutoUpdate // The following disables Root, Disallowed Certificate and Pin Rules AutoUpdate
// REG_DWORD Value Name, 1 - disables, 0 - enables // REG_DWORD Value Name, 1 - disables, 0 - enables
#define CERT_DISABLE_ROOT_AUTO_UPDATE_VALUE_NAME L"DisableRootAutoUpdate" #define CERT_DISABLE_ROOT_AUTO_UPDATE_VALUE_NAME L"DisableRootAutoUpdate"
// The following enables Disallowed Certificate AutoUpdate. It takes precedence // The following enables Disallowed Certificate and Pin Rules AutoUpdate.
// over the above registry setting. // It takes precedence over the above registry setting.
// REG_DWORD Value Name, 1 - enables // REG_DWORD Value Name, 1 - enables
#define CERT_ENABLE_DISALLOWED_CERT_AUTO_UPDATE_VALUE_NAME L"EnableDisallowedCer tAutoUpdate" #define CERT_ENABLE_DISALLOWED_CERT_AUTO_UPDATE_VALUE_NAME L"EnableDisallowedCer tAutoUpdate"
// The following disables Pin Rules AutoUpdate.
// It takes precedence over the above registry setting.
// REG_DWORD Value Name, 1 - disables
#define CERT_DISABLE_PIN_RULES_AUTO_UPDATE_VALUE_NAME L"DisablePinRulesAutoUpdat
e"
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Auto Update Definitions // Auto Update Definitions
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// Registry path to the "Auto Update" local machine subkey // Registry path to the "Auto Update" local machine subkey
#define CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH \ #define CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH \
CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\AuthRoot\\AutoUpdate" CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\AuthRoot\\AutoUpdate"
// Auto Update subkey value names. // Auto Update subkey value names.
// REG_SZ, URL to the directory containing the AutoUpdate files // REG_SZ, URL to the directory containing the AutoUpdate files
#define CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME L"RootDirUrl" #define CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME L"RootDirUrl"
// REG_SZ, URL to the AutoUpdate test staging directory containing the
// AutoUpdate files. certutil.exe will use for its -syncWithWU and
// -generateSSTFromWU verbs to override the default Windows Update URL.
#define CERT_AUTO_UPDATE_SYNC_FROM_DIR_URL_VALUE_NAME L"SyncFromDirUrl
"
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// AuthRoot Auto Update Definitions // AuthRoot Auto Update Definitions
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// Registry path to the AuthRoot "Auto Update" local machine subkey // Registry path to the AuthRoot "Auto Update" local machine subkey
#define CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH \ #define CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH \
CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH
// AuthRoot Auto Update subkey value names. // AuthRoot Auto Update subkey value names.
skipping to change at line 9872 skipping to change at line 10038
// //
// DisallowedCert Auto Update CTL List Identifiers // DisallowedCert Auto Update CTL List Identifiers
// //
// Disallowed Cert CTL List Identifier // Disallowed Cert CTL List Identifier
#define CERT_DISALLOWED_CERT_AUTO_UPDATE_LIST_IDENTIFIER \ #define CERT_DISALLOWED_CERT_AUTO_UPDATE_LIST_IDENTIFIER \
L"DisallowedCert_AutoUpdate_1" L"DisallowedCert_AutoUpdate_1"
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// PinRules Auto Update Definitions
//--------------------------------------------------------------------------
//
// PinRules Auto Update subkey value names.
//
// REG_DWORD, seconds between syncs. 0 implies use default.
#define CERT_PIN_RULES_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME \
L"PinRulesSyncDeltaTime"
// REG_BINARY, updated with FILETIME of last wire retrieval of pin rules
// CTL
#define CERT_PIN_RULES_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME \
L"PinRulesLastSyncTime"
// REG_BINARY, updated with last retrieved and verified pin rules ctl
#define CERT_PIN_RULES_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME \
L"PinRulesEncodedCtl"
//
// PinRules Auto Update filenames
//
// CTL containing the list of pin rules
#define CERT_PIN_RULES_CTL_FILENAME L"pinrules.stl"
#define CERT_PIN_RULES_CTL_FILENAME_A "pinrules.stl"
// Cab containing pin rules CTL
#define CERT_PIN_RULES_CAB_FILENAME L"pinrulesstl.cab"
//
// Pin Rules Auto Update CTL List Identifiers
//
// Pin Rules CTL List Identifier
#define CERT_PIN_RULES_AUTO_UPDATE_LIST_IDENTIFIER \
L"PinRules_AutoUpdate_1"
//+-------------------------------------------------------------------------
// Certificate Registry Store Flag Values (CERT_STORE_REG) // Certificate Registry Store Flag Values (CERT_STORE_REG)
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// Set this flag if the HKEY passed in pvPara points to a remote computer // Set this flag if the HKEY passed in pvPara points to a remote computer
// registry key. // registry key.
#define CERT_REGISTRY_STORE_REMOTE_FLAG 0x10000 #define CERT_REGISTRY_STORE_REMOTE_FLAG 0x10000
// Set this flag if the contexts are to be persisted as a single serialized // Set this flag if the contexts are to be persisted as a single serialized
// store in the registry. Mainly used for stores downloaded from the GPT. // store in the registry. Mainly used for stores downloaded from the GPT.
// Such as the CurrentUserGroupPolicy or LocalMachineGroupPolicy stores. // Such as the CurrentUserGroupPolicy or LocalMachineGroupPolicy stores.
skipping to change at line 9956 skipping to change at line 10162
// //
// For the FILENAME providers: the file is committed as either a PKCS7 or // For the FILENAME providers: the file is committed as either a PKCS7 or
// serialized store depending on the type read at open. However, if the // serialized store depending on the type read at open. However, if the
// file is empty then, if the filename has either a ".p7c" or ".spc" // file is empty then, if the filename has either a ".p7c" or ".spc"
// extension its committed as a PKCS7. Otherwise, its committed as a // extension its committed as a PKCS7. Otherwise, its committed as a
// serialized store. // serialized store.
// //
// For CERT_STORE_PROV_FILE, the file handle is duplicated. Its always // For CERT_STORE_PROV_FILE, the file handle is duplicated. Its always
// committed as a serialized store. // committed as a serialized store.
// //
#define CERT_FILE_STORE_COMMIT_ENABLE_FLAG 0x10000 #define CERT_FILE_STORE_COMMIT_ENABLE_FLAG 0x10000
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Certificate LDAP Store Flag Values for the providers: // Certificate LDAP Store Flag Values for the providers:
// CERT_STORE_PROV_LDAP // CERT_STORE_PROV_LDAP
// CERT_STORE_PROV_LDAP_W // CERT_STORE_PROV_LDAP_W
// sz_CERT_STORE_PROV_LDAP_W // sz_CERT_STORE_PROV_LDAP_W
// sz_CERT_STORE_PROV_LDAP // sz_CERT_STORE_PROV_LDAP
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// Set this flag to digitally sign all of the ldap traffic to and from a // Set this flag to digitally sign all of the ldap traffic to and from a
skipping to change at line 11591 skipping to change at line 11797
// property, they aren't enumerated individually. // property, they aren't enumerated individually.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
DWORD DWORD
WINAPI WINAPI
CertEnumCertificateContextProperties( CertEnumCertificateContextProperties(
_In_ PCCERT_CONTEXT pCertContext, _In_ PCCERT_CONTEXT pCertContext,
_In_ DWORD dwPropId _In_ DWORD dwPropId
); );
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Creates a CTL entry whose attributes are the certificate context's // Creates a CTL entry whose attributes are the certificate context's
// properties. // properties.
// //
// The SubjectIdentifier in the CTL entry is the SHA1 hash of the certificate. // The SubjectIdentifier in the CTL entry is the SHA1 hash of the certificate.
// //
// The certificate properties are added as attributes. The property attribute // The certificate properties are added as attributes. The property attribute
// OID is the decimal PROP_ID preceded by szOID_CERT_PROP_ID_PREFIX. Each // OID is the decimal PROP_ID preceded by szOID_CERT_PROP_ID_PREFIX. Each
// property value is copied as a single attribute value. // property value is copied as a single attribute value.
// //
skipping to change at line 11644 skipping to change at line 11856
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CertSetCertificateContextPropertiesFromCTLEntry( CertSetCertificateContextPropertiesFromCTLEntry(
_In_ PCCERT_CONTEXT pCertContext, _In_ PCCERT_CONTEXT pCertContext,
_In_ PCTL_ENTRY pCtlEntry, _In_ PCTL_ENTRY pCtlEntry,
_In_ DWORD dwFlags _In_ DWORD dwFlags
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Get the first or next CRL context from the store for the specified // Get the first or next CRL context from the store for the specified
// issuer certificate. Perform the enabled verification checks on the CRL. // issuer certificate. Perform the enabled verification checks on the CRL.
// //
// If the first or next CRL isn't found, NULL is returned. // If the first or next CRL isn't found, NULL is returned.
// Otherwise, a pointer to a read only CRL_CONTEXT is returned. CRL_CONTEXT // Otherwise, a pointer to a read only CRL_CONTEXT is returned. CRL_CONTEXT
// must be freed by calling CertFreeCRLContext. However, the free must be // must be freed by calling CertFreeCRLContext. However, the free must be
// pPrevCrlContext on a subsequent call. CertDuplicateCRLContext // pPrevCrlContext on a subsequent call. CertDuplicateCRLContext
// can be called to make a duplicate. // can be called to make a duplicate.
// //
skipping to change at line 13084 skipping to change at line 13303
} CERT_PHYSICAL_STORE_INFO, *PCERT_PHYSICAL_STORE_INFO; } CERT_PHYSICAL_STORE_INFO, *PCERT_PHYSICAL_STORE_INFO;
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Physical Store Information dwFlags // Physical Store Information dwFlags
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG 0x1 #define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG 0x1
#define CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG 0x2 #define CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG 0x2
#define CERT_PHYSICAL_STORE_REMOTE_OPEN_DISABLE_FLAG 0x4 #define CERT_PHYSICAL_STORE_REMOTE_OPEN_DISABLE_FLAG 0x4
#define CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG 0x8 #define CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG 0x8
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Register a system store. // Register a system store.
// //
// The upper word of the dwFlags parameter is used to specify the location of // The upper word of the dwFlags parameter is used to specify the location of
// the system store. // the system store.
// //
// If CERT_SYSTEM_STORE_RELOCATE_FLAG is set in dwFlags, pvSystemStore // If CERT_SYSTEM_STORE_RELOCATE_FLAG is set in dwFlags, pvSystemStore
// points to a CERT_SYSTEM_STORE_RELOCATE_PARA data structure. Otherwise, // points to a CERT_SYSTEM_STORE_RELOCATE_PARA data structure. Otherwise,
// pvSystemStore points to a null terminated UNICODE string. // pvSystemStore points to a null terminated UNICODE string.
// //
skipping to change at line 13195 skipping to change at line 13420
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CertUnregisterPhysicalStore( CertUnregisterPhysicalStore(
_In_ const void *pvSystemStore, _In_ const void *pvSystemStore,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_ LPCWSTR pwszStoreName _In_ LPCWSTR pwszStoreName
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Enum callbacks // Enum callbacks
// //
// The CERT_SYSTEM_STORE_LOCATION_MASK bits in the dwFlags parameter // The CERT_SYSTEM_STORE_LOCATION_MASK bits in the dwFlags parameter
// specifies the location of the system store // specifies the location of the system store
// //
// If CERT_SYSTEM_STORE_RELOCATE_FLAG is set in dwFlags, pvSystemStore // If CERT_SYSTEM_STORE_RELOCATE_FLAG is set in dwFlags, pvSystemStore
// points to a CERT_SYSTEM_STORE_RELOCATE_PARA data structure. Otherwise, // points to a CERT_SYSTEM_STORE_RELOCATE_PARA data structure. Otherwise,
// pvSystemStore points to a null terminated UNICODE string. // pvSystemStore points to a null terminated UNICODE string.
// //
skipping to change at line 13392 skipping to change at line 13623
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CertGetEnhancedKeyUsage( CertGetEnhancedKeyUsage(
_In_ PCCERT_CONTEXT pCertContext, _In_ PCCERT_CONTEXT pCertContext,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Out_writes_bytes_to_opt_(*pcbUsage, *pcbUsage) PCERT_ENHKEY_USAGE pUsage, _Out_writes_bytes_to_opt_(*pcbUsage, *pcbUsage) PCERT_ENHKEY_USAGE pUsage,
_Inout_ DWORD *pcbUsage _Inout_ DWORD *pcbUsage
); );
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Set the enhanced key usage property for the certificate. // Set the enhanced key usage property for the certificate.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CertSetEnhancedKeyUsage( CertSetEnhancedKeyUsage(
_In_ PCCERT_CONTEXT pCertContext, _In_ PCCERT_CONTEXT pCertContext,
_In_opt_ PCERT_ENHKEY_USAGE pUsage _In_opt_ PCERT_ENHKEY_USAGE pUsage
); );
skipping to change at line 13426 skipping to change at line 13663
// property. // property.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CertRemoveEnhancedKeyUsageIdentifier( CertRemoveEnhancedKeyUsageIdentifier(
_In_ PCCERT_CONTEXT pCertContext, _In_ PCCERT_CONTEXT pCertContext,
_In_ LPCSTR pszUsageIdentifier _In_ LPCSTR pszUsageIdentifier
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
//+--------------------------------------------------------------------------- //+---------------------------------------------------------------------------
// //
// //
// Takes an array of certs and returns an array of usages // Takes an array of certs and returns an array of usages
// which consists of the intersection of the valid usages for each cert. // which consists of the intersection of the valid usages for each cert.
// If each cert is good for all possible usages then the cNumOIDs is set to -1. // If each cert is good for all possible usages then the cNumOIDs is set to -1.
// //
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
_Success_(return != FALSE) _Success_(return != FALSE)
skipping to change at line 13490 skipping to change at line 13734
_In_reads_opt_(cSignerStore) HCERTSTORE *rghSignerStore, _In_reads_opt_(cSignerStore) HCERTSTORE *rghSignerStore,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Outptr_opt_ PCCERT_CONTEXT *ppSigner, _Outptr_opt_ PCCERT_CONTEXT *ppSigner,
_Inout_opt_ DWORD *pdwSignerIndex _Inout_opt_ DWORD *pdwSignerIndex
); );
#define CMSG_TRUSTED_SIGNER_FLAG 0x1 #define CMSG_TRUSTED_SIGNER_FLAG 0x1
#define CMSG_SIGNER_ONLY_FLAG 0x2 #define CMSG_SIGNER_ONLY_FLAG 0x2
#define CMSG_USE_SIGNER_INDEX_FLAG 0x4 #define CMSG_USE_SIGNER_INDEX_FLAG 0x4
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Sign an encoded CTL. // Sign an encoded CTL.
// //
// The pbCtlContent can be obtained via a CTL_CONTEXT's pbCtlContent // The pbCtlContent can be obtained via a CTL_CONTEXT's pbCtlContent
// field or via a CryptEncodeObject(PKCS_CTL or PKCS_SORTED_CTL). // field or via a CryptEncodeObject(PKCS_CTL or PKCS_SORTED_CTL).
// //
// CMSG_CMS_ENCAPSULATED_CTL_FLAG can be set to encode a CMS compatible // CMSG_CMS_ENCAPSULATED_CTL_FLAG can be set to encode a CMS compatible
// V3 SignedData message. // V3 SignedData message.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
skipping to change at line 13592 skipping to change at line 13842
_In_ PCCTL_CONTEXT pCtlContext, _In_ PCCTL_CONTEXT pCtlContext,
_Inout_ void **ppvNextSubject, _Inout_ void **ppvNextSubject,
_Out_opt_ PCRYPT_DER_BLOB pSubjectIdentifier, _Out_opt_ PCRYPT_DER_BLOB pSubjectIdentifier,
_Out_opt_ PCRYPT_DER_BLOB pEncodedAttributes _Out_opt_ PCRYPT_DER_BLOB pEncodedAttributes
); );
//+========================================================================= //+=========================================================================
// Certificate Verify CTL Usage Data Structures and APIs // Certificate Verify CTL Usage Data Structures and APIs
//========================================================================== //==========================================================================
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
typedef struct _CTL_VERIFY_USAGE_PARA { typedef struct _CTL_VERIFY_USAGE_PARA {
DWORD cbSize; DWORD cbSize;
CRYPT_DATA_BLOB ListIdentifier; // OPTIONAL CRYPT_DATA_BLOB ListIdentifier; // OPTIONAL
DWORD cCtlStore; DWORD cCtlStore;
HCERTSTORE *rghCtlStore; // OPTIONAL HCERTSTORE *rghCtlStore; // OPTIONAL
DWORD cSignerStore; DWORD cSignerStore;
HCERTSTORE *rghSignerStore; // OPTIONAL HCERTSTORE *rghSignerStore; // OPTIONAL
} CTL_VERIFY_USAGE_PARA, *PCTL_VERIFY_USAGE_PARA; } CTL_VERIFY_USAGE_PARA, *PCTL_VERIFY_USAGE_PARA;
typedef struct _CTL_VERIFY_USAGE_STATUS { typedef struct _CTL_VERIFY_USAGE_STATUS {
skipping to change at line 13618 skipping to change at line 13874
DWORD dwSignerIndex; DWORD dwSignerIndex;
} CTL_VERIFY_USAGE_STATUS, *PCTL_VERIFY_USAGE_STATUS; } CTL_VERIFY_USAGE_STATUS, *PCTL_VERIFY_USAGE_STATUS;
#define CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG 0x1 #define CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG 0x1
#define CERT_VERIFY_TRUSTED_SIGNERS_FLAG 0x2 #define CERT_VERIFY_TRUSTED_SIGNERS_FLAG 0x2
#define CERT_VERIFY_NO_TIME_CHECK_FLAG 0x4 #define CERT_VERIFY_NO_TIME_CHECK_FLAG 0x4
#define CERT_VERIFY_ALLOW_MORE_USAGE_FLAG 0x8 #define CERT_VERIFY_ALLOW_MORE_USAGE_FLAG 0x8
#define CERT_VERIFY_UPDATED_CTL_FLAG 0x1 #define CERT_VERIFY_UPDATED_CTL_FLAG 0x1
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Verify that a subject is trusted for the specified usage by finding a // Verify that a subject is trusted for the specified usage by finding a
// signed and time valid CTL with the usage identifiers and containing the // signed and time valid CTL with the usage identifiers and containing the
// the subject. A subject can be identified by either its certificate context // the subject. A subject can be identified by either its certificate context
// or any identifier such as its SHA1 hash. // or any identifier such as its SHA1 hash.
// //
// See CertFindSubjectInCTL for definition of dwSubjectType and pvSubject // See CertFindSubjectInCTL for definition of dwSubjectType and pvSubject
// parameters. // parameters.
// //
// Via pVerifyUsagePara, the caller can specify the stores to be searched // Via pVerifyUsagePara, the caller can specify the stores to be searched
skipping to change at line 13684 skipping to change at line 13946
_In_ PCTL_USAGE pSubjectUsage, _In_ PCTL_USAGE pSubjectUsage,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_opt_ PCTL_VERIFY_USAGE_PARA pVerifyUsagePara, _In_opt_ PCTL_VERIFY_USAGE_PARA pVerifyUsagePara,
_Inout_ PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus _Inout_ PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus
); );
//+========================================================================= //+=========================================================================
// Certificate Revocation Data Structures and APIs // Certificate Revocation Data Structures and APIs
//========================================================================== //==========================================================================
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// This data structure is updated by a CRL revocation type handler // This data structure is updated by a CRL revocation type handler
// with the base and possibly the delta CRL used. // with the base and possibly the delta CRL used.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
typedef struct _CERT_REVOCATION_CRL_INFO { typedef struct _CERT_REVOCATION_CRL_INFO {
DWORD cbSize; DWORD cbSize;
PCCRL_CONTEXT pBaseCrlContext; PCCRL_CONTEXT pBaseCrlContext;
PCCRL_CONTEXT pDeltaCrlContext; PCCRL_CONTEXT pDeltaCrlContext;
// When revoked, points to entry in either of the above CRL contexts. // When revoked, points to entry in either of the above CRL contexts.
skipping to change at line 13805 skipping to change at line 14073
// The Freshness time is only applicable to the last context checked. If // The Freshness time is only applicable to the last context checked. If
// interested in this information, then, CertVerifyRevocation should be // interested in this information, then, CertVerifyRevocation should be
// called with cContext = 1. // called with cContext = 1.
// //
// fHasFreshnessTime is only set if we are able to retrieve revocation // fHasFreshnessTime is only set if we are able to retrieve revocation
// information. For a CRL its CurrentTime - ThisUpdate. // information. For a CRL its CurrentTime - ThisUpdate.
BOOL fHasFreshnessTime; BOOL fHasFreshnessTime;
DWORD dwFreshnessTime; // seconds DWORD dwFreshnessTime; // seconds
} CERT_REVOCATION_STATUS, *PCERT_REVOCATION_STATUS; } CERT_REVOCATION_STATUS, *PCERT_REVOCATION_STATUS;
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Verifies the array of contexts for revocation. The dwRevType parameter // Verifies the array of contexts for revocation. The dwRevType parameter
// indicates the type of the context data structure passed in rgpvContext. // indicates the type of the context data structure passed in rgpvContext.
// Currently only the revocation of certificates is defined. // Currently only the revocation of certificates is defined.
// //
// If the CERT_VERIFY_REV_CHAIN_FLAG flag is set, then, CertVerifyRevocation // If the CERT_VERIFY_REV_CHAIN_FLAG flag is set, then, CertVerifyRevocation
// is verifying a chain of certs where, rgpvContext[i + 1] is the issuer // is verifying a chain of certs where, rgpvContext[i + 1] is the issuer
// of rgpvContext[i]. Otherwise, CertVerifyRevocation makes no assumptions // of rgpvContext[i]. Otherwise, CertVerifyRevocation makes no assumptions
// about the order of the contexts. // about the order of the contexts.
// //
skipping to change at line 13895 skipping to change at line 14169
CertVerifyRevocation( CertVerifyRevocation(
_In_ DWORD dwEncodingType, _In_ DWORD dwEncodingType,
_In_ DWORD dwRevType, _In_ DWORD dwRevType,
_In_ DWORD cContext, _In_ DWORD cContext,
_In_reads_(cContext) PVOID rgpvContext[], _In_reads_(cContext) PVOID rgpvContext[],
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_opt_ PCERT_REVOCATION_PARA pRevPara, _In_opt_ PCERT_REVOCATION_PARA pRevPara,
_Inout_ PCERT_REVOCATION_STATUS pRevStatus _Inout_ PCERT_REVOCATION_STATUS pRevStatus
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Revocation types // Revocation types
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define CERT_CONTEXT_REVOCATION_TYPE 1 #define CERT_CONTEXT_REVOCATION_TYPE 1
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// When the following flag is set, rgpvContext[] consists of a chain // When the following flag is set, rgpvContext[] consists of a chain
// of certificates, where rgpvContext[i + 1] is the issuer of rgpvContext[i]. // of certificates, where rgpvContext[i + 1] is the issuer of rgpvContext[i].
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define CERT_VERIFY_REV_CHAIN_FLAG 0x00000001 #define CERT_VERIFY_REV_CHAIN_FLAG 0x00000001
skipping to change at line 13996 skipping to change at line 14276
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CertCompareCertificateName( CertCompareCertificateName(
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_ PCERT_NAME_BLOB pCertName1, _In_ PCERT_NAME_BLOB pCertName1,
_In_ PCERT_NAME_BLOB pCertName2 _In_ PCERT_NAME_BLOB pCertName2
); );
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Compare the attributes in the certificate name with the specified // Compare the attributes in the certificate name with the specified
// Relative Distinguished Name's (CERT_RDN) array of attributes. // Relative Distinguished Name's (CERT_RDN) array of attributes.
// The comparison iterates through the CERT_RDN attributes and looks for an // The comparison iterates through the CERT_RDN attributes and looks for an
// attribute match in any of the certificate name's RDNs. // attribute match in any of the certificate name's RDNs.
// Returns TRUE if all the attributes are found and match. // Returns TRUE if all the attributes are found and match.
// //
// The CERT_RDN_ATTR fields can have the following special values: // The CERT_RDN_ATTR fields can have the following special values:
// pszObjId == NULL - ignore the attribute object identifier // pszObjId == NULL - ignore the attribute object identifier
// dwValueType == RDN_ANY_TYPE - ignore the value type // dwValueType == RDN_ANY_TYPE - ignore the value type
skipping to change at line 14041 skipping to change at line 14327
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CertComparePublicKeyInfo( CertComparePublicKeyInfo(
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_ PCERT_PUBLIC_KEY_INFO pPublicKey1, _In_ PCERT_PUBLIC_KEY_INFO pPublicKey1,
_In_ PCERT_PUBLIC_KEY_INFO pPublicKey2 _In_ PCERT_PUBLIC_KEY_INFO pPublicKey2
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM)*/
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Get the public/private key's bit length. // Get the public/private key's bit length.
// //
// Returns 0 if unable to determine the key's length. // Returns 0 if unable to determine the key's length.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
DWORD DWORD
WINAPI WINAPI
CertGetPublicKeyLength( CertGetPublicKeyLength(
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_ PCERT_PUBLIC_KEY_INFO pPublicKey _In_ PCERT_PUBLIC_KEY_INFO pPublicKey
); );
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Verify the signature of a subject certificate or a CRL using the // Verify the signature of a subject certificate or a CRL using the
// public key info // public key info
// //
// Returns TRUE for a valid signature. // Returns TRUE for a valid signature.
// //
// hCryptProv specifies the crypto provider to use to verify the signature. // hCryptProv specifies the crypto provider to use to verify the signature.
// It doesn't need to use a private key. // It doesn't need to use a private key.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
skipping to change at line 14115 skipping to change at line 14413
_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_ DWORD dwSubjectType, _In_ DWORD dwSubjectType,
_In_ void *pvSubject, _In_ void *pvSubject,
_In_ DWORD dwIssuerType, _In_ DWORD dwIssuerType,
_In_opt_ void *pvIssuer, _In_opt_ void *pvIssuer,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Inout_opt_ void *pvExtra _Inout_opt_ void *pvExtra
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// Subject Types // Subject Types
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB 1 #define CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB 1
// pvSubject :: PCRYPT_DATA_BLOB // pvSubject :: PCRYPT_DATA_BLOB
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT 2 #define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT 2
// pvSubject :: PCCERT_CONTEXT // pvSubject :: PCCERT_CONTEXT
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL 3 #define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL 3
// pvSubject :: PCCRL_CONTEXT // pvSubject :: PCCRL_CONTEXT
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE 4 #define CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE 4
// pvSubject :: POCSP_BASIC_SIGNED_RESPONSE_INFO // pvSubject :: POCSP_BASIC_SIGNED_RESPONSE_INFO
skipping to change at line 14194 skipping to change at line 14498
typedef struct _CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO { typedef struct _CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO {
DWORD cCNGHashAlgid; DWORD cCNGHashAlgid;
PCWSTR *rgpwszCNGHashAlgid; PCWSTR *rgpwszCNGHashAlgid;
// If not weak, dwWeakIndex is set to cCNGHashAlgid. Otherwise, // If not weak, dwWeakIndex is set to cCNGHashAlgid. Otherwise,
// index into the above array. // index into the above array.
DWORD dwWeakIndex; DWORD dwWeakIndex;
} CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO, } CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO,
*PCRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO; *PCRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO;
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Checks if the specified hash algorithm and the signing certificate's // Checks if the specified hash algorithm and the signing certificate's
// public key algorithm can be used to do a strong signature. // public key algorithm can be used to do a strong signature.
// //
// Returns TRUE if the hash algorithm and certificate public key algorithm // Returns TRUE if the hash algorithm and certificate public key algorithm
// satisfy the strong signature requirements. // satisfy the strong signature requirements.
// //
// pwszCNGHashAlgid is the CNG hash algorithm identifier string, for example, // pwszCNGHashAlgid is the CNG hash algorithm identifier string, for example,
// BCRYPT_SHA256_ALGORITHM (L"SHA256") // BCRYPT_SHA256_ALGORITHM (L"SHA256")
// //
skipping to change at line 14296 skipping to change at line 14606
// //
// If the SignatureAlgorithm is a hash algorithm, then, the signature // If the SignatureAlgorithm is a hash algorithm, then, the signature
// contains the hash octets. A private key isn't used to encrypt the hash. // contains the hash octets. A private key isn't used to encrypt the hash.
// dwKeySpec isn't used and hCryptProvOrNCryptKey can be NULL where an // dwKeySpec isn't used and hCryptProvOrNCryptKey can be NULL where an
// appropriate default provider will be used for hashing. // appropriate default provider will be used for hashing.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptSignCertificate( CryptSignCertificate(
#ifdef CMSG_SIGNER_ENCODE_INFO_HAS_IUM_FIELDS
_In_ BCRYPT_KEY_HANDLE hBCryptKey,
#else
_In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
#endif
_In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_reads_bytes_(cbEncodedToBeSigned) const BYTE *pbEncodedToBeSigned, _In_reads_bytes_(cbEncodedToBeSigned) const BYTE *pbEncodedToBeSigned,
_In_ DWORD cbEncodedToBeSigned, _In_ DWORD cbEncodedToBeSigned,
_In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
_In_opt_ const void *pvHashAuxInfo, _In_opt_ const void *pvHashAuxInfo,
_Out_writes_bytes_to_opt_(*pcbSignature, *pcbSignature) BYTE *pbSignature, _Out_writes_bytes_to_opt_(*pcbSignature, *pcbSignature) BYTE *pbSignature,
_Inout_ DWORD *pcbSignature _Inout_ DWORD *pcbSignature
); );
skipping to change at line 14323 skipping to change at line 14637
// //
// If the SignatureAlgorithm is a hash algorithm, then, the signature // If the SignatureAlgorithm is a hash algorithm, then, the signature
// contains the hash octets. A private key isn't used to encrypt the hash. // contains the hash octets. A private key isn't used to encrypt the hash.
// dwKeySpec isn't used and hCryptProv can be NULL where an appropriate // dwKeySpec isn't used and hCryptProv can be NULL where an appropriate
// default provider will be used for hashing. // default provider will be used for hashing.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptSignAndEncodeCertificate( CryptSignAndEncodeCertificate(
#ifdef CMSG_SIGNER_ENCODE_INFO_HAS_IUM_FIELDS
_In_ BCRYPT_KEY_HANDLE hBCryptKey,
#else
_In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
#endif
_In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_ LPCSTR lpszStructType, // "to be signed" _In_ LPCSTR lpszStructType, // "to be signed"
_In_ const void *pvStructInfo, _In_ const void *pvStructInfo,
_In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
_In_opt_ const void *pvHashAuxInfo, _In_opt_ const void *pvHashAuxInfo,
_Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded,
_Inout_ DWORD *pcbEncoded _Inout_ DWORD *pcbEncoded
); );
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Certificate and CryptMsg encoded signature OID installable functions // Certificate and CryptMsg encoded signature OID installable functions
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// The dwCertEncodingType and pSignatureAlgorithm->pszObjId are used // The dwCertEncodingType and pSignatureAlgorithm->pszObjId are used
// to call the signature OID installable functions. // to call the signature OID installable functions.
// //
// If the OID installable function doesn't support the signature, // If the OID installable function doesn't support the signature,
// it should return FALSE with LastError set to ERROR_NOT_SUPPORTED. // it should return FALSE with LastError set to ERROR_NOT_SUPPORTED.
// Called if the signature has encoded parameters. Returns the CNG // Called if the signature has encoded parameters. Returns the CNG
// hash algorithm identifier string. Optionally returns the decoded // hash algorithm identifier string. Optionally returns the decoded
// signature parameters passed to either the SignAndEncodeHash or // signature parameters passed to either the SignAndEncodeHash or
// VerifyEncodedSignature OID installable function. // VerifyEncodedSignature OID installable function.
skipping to change at line 14408 skipping to change at line 14732
// If pTimeToVerify is NULL, uses the current time. // If pTimeToVerify is NULL, uses the current time.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
LONG LONG
WINAPI WINAPI
CertVerifyTimeValidity( CertVerifyTimeValidity(
_In_opt_ LPFILETIME pTimeToVerify, _In_opt_ LPFILETIME pTimeToVerify,
_In_ PCERT_INFO pCertInfo _In_ PCERT_INFO pCertInfo
); );
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Verify the time validity of a CRL. // Verify the time validity of a CRL.
// //
// Returns -1 if before ThisUpdate, +1 if after NextUpdate and otherwise 0 for // Returns -1 if before ThisUpdate, +1 if after NextUpdate and otherwise 0 for
// a valid CRL // a valid CRL
// //
// If pTimeToVerify is NULL, uses the current time. // If pTimeToVerify is NULL, uses the current time.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
LONG LONG
skipping to change at line 14483 skipping to change at line 14813
WINAPI WINAPI
CertOIDToAlgId( CertOIDToAlgId(
_In_ LPCSTR pszObjId _In_ LPCSTR pszObjId
); );
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Find an extension identified by its Object Identifier. // Find an extension identified by its Object Identifier.
// //
// If found, returns pointer to the extension. Otherwise, returns NULL. // If found, returns pointer to the extension. Otherwise, returns NULL.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINCRYPT32API WINCRYPT32API
PCERT_EXTENSION PCERT_EXTENSION
WINAPI WINAPI
CertFindExtension( CertFindExtension(
_In_ LPCSTR pszObjId, _In_ LPCSTR pszObjId,
_In_ DWORD cExtensions, _In_ DWORD cExtensions,
_In_reads_(cExtensions) CERT_EXTENSION rgExtensions[] _In_reads_(cExtensions) CERT_EXTENSION rgExtensions[]
); );
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
skipping to change at line 14540 skipping to change at line 14876
WINAPI WINAPI
CertGetIntendedKeyUsage( CertGetIntendedKeyUsage(
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_ PCERT_INFO pCertInfo, _In_ PCERT_INFO pCertInfo,
_Out_writes_bytes_all_(cbKeyUsage) BYTE *pbKeyUsage, _Out_writes_bytes_all_(cbKeyUsage) BYTE *pbKeyUsage,
_In_ DWORD cbKeyUsage _In_ DWORD cbKeyUsage
); );
typedef void *HCRYPTDEFAULTCONTEXT; typedef void *HCRYPTDEFAULTCONTEXT;
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Install a previously CryptAcquiredContext'ed HCRYPTPROV to be used as // Install a previously CryptAcquiredContext'ed HCRYPTPROV to be used as
// a default context. // a default context.
// //
// dwDefaultType and pvDefaultPara specify where the default context is used. // dwDefaultType and pvDefaultPara specify where the default context is used.
// For example, install the HCRYPTPROV to be used to verify certificate's // For example, install the HCRYPTPROV to be used to verify certificate's
// having szOID_OIWSEC_md5RSA signatures. // having szOID_OIWSEC_md5RSA signatures.
// //
// By default, the installed HCRYPTPROV is only applicable to the current // By default, the installed HCRYPTPROV is only applicable to the current
// thread. Set CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG to allow the HCRYPTPROV // thread. Set CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG to allow the HCRYPTPROV
skipping to change at line 14664 skipping to change at line 15006
// //
// If unable to find an installable OID function for the pszPublicKeyObjId, // If unable to find an installable OID function for the pszPublicKeyObjId,
// attempts to export as a RSA Public Key (szOID_RSA_RSA). // attempts to export as a RSA Public Key (szOID_RSA_RSA).
// //
// The dwFlags and pvAuxInfo aren't used for szOID_RSA_RSA. // The dwFlags and pvAuxInfo aren't used for szOID_RSA_RSA.
// //
// dwFlags can be set with the following 2 flags passed directly to // dwFlags can be set with the following 2 flags passed directly to
// CryptFindOIDInfo: // CryptFindOIDInfo:
// CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG // CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
// CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG // CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
//
// dwFlags can be set with the following 2 flags to encode either Curve OID
// or ECC Parameters in Algorithm's Parameters section:
// CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG
// CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptExportPublicKeyInfoEx( CryptExportPublicKeyInfoEx(
_In_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, _In_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
_In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_opt_ LPSTR pszPublicKeyObjId, _In_opt_ LPSTR pszPublicKeyObjId,
skipping to change at line 14918 skipping to change at line 15266
// returned HCRYPTPROV or NCRYPT_KEY_HANDLE will be released on the last // returned HCRYPTPROV or NCRYPT_KEY_HANDLE will be released on the last
// free of the certificate context. // free of the certificate context.
// //
// Otherwise, *pfCallerFreeProvOrNCryptKey is TRUE and a returned // Otherwise, *pfCallerFreeProvOrNCryptKey is TRUE and a returned
// HCRYPTPROV must be released by the caller by calling CryptReleaseContext. // HCRYPTPROV must be released by the caller by calling CryptReleaseContext.
// A returned NCRYPT_KEY_HANDLE is freed by calling NCryptFreeObject. // A returned NCRYPT_KEY_HANDLE is freed by calling NCryptFreeObject.
// *pdwKeySpec MUST be checked when CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG // *pdwKeySpec MUST be checked when CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG
// or CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG is set. // or CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG is set.
// //
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptAcquireCertificatePrivateKey( CryptAcquireCertificatePrivateKey(
_In_ PCCERT_CONTEXT pCert, _In_ PCCERT_CONTEXT pCert,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_opt_ void *pvParameters, _In_opt_ void *pvParameters,
_Out_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey, _Out_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey,
_Out_opt_ DWORD *pdwKeySpec, _Out_opt_ DWORD *pdwKeySpec,
_Out_opt_ BOOL *pfCallerFreeProvOrNCryptKey _Out_opt_ BOOL *pfCallerFreeProvOrNCryptKey
skipping to change at line 14943 skipping to change at line 15298
#define CRYPT_ACQUIRE_NO_HEALING 0x00000008 #define CRYPT_ACQUIRE_NO_HEALING 0x00000008
#define CRYPT_ACQUIRE_SILENT_FLAG 0x00000040 #define CRYPT_ACQUIRE_SILENT_FLAG 0x00000040
#define CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG 0x00000080 #define CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG 0x00000080
#define CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK 0x00070000 #define CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK 0x00070000
#define CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG 0x00010000 #define CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG 0x00010000
#define CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG 0x00020000 #define CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG 0x00020000
#define CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG 0x00040000 #define CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG 0x00040000
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Enumerates the cryptographic providers and their containers to find the // Enumerates the cryptographic providers and their containers to find the
// private key corresponding to the certificate's public key. For a match, // private key corresponding to the certificate's public key. For a match,
// the certificate's CERT_KEY_PROV_INFO_PROP_ID property is updated. // the certificate's CERT_KEY_PROV_INFO_PROP_ID property is updated.
// //
// If the CERT_KEY_PROV_INFO_PROP_ID is already set, then, its checked to // If the CERT_KEY_PROV_INFO_PROP_ID is already set, then, its checked to
// see if it matches the provider's public key. For a match, the above // see if it matches the provider's public key. For a match, the above
// enumeration is skipped. // enumeration is skipped.
// //
// By default both the user and machine key containers are searched. // By default both the user and machine key containers are searched.
skipping to change at line 15063 skipping to change at line 15424
CryptExportPKCS8( CryptExportPKCS8(
_In_ HCRYPTPROV hCryptProv, // in _In_ HCRYPTPROV hCryptProv, // in
_In_ DWORD dwKeySpec, // in _In_ DWORD dwKeySpec, // in
_In_ LPSTR pszPrivateKeyObjId, // in _In_ LPSTR pszPrivateKeyObjId, // in
_In_ DWORD dwFlags, // in _In_ DWORD dwFlags, // in
_In_opt_ void* pvAuxInfo, // in _In_opt_ void* pvAuxInfo, // in
_Out_writes_bytes_opt_ (*pcbPrivateKeyBlob) BYTE* pbPrivateKeyBlob, // out _Out_writes_bytes_opt_ (*pcbPrivateKeyBlob) BYTE* pbPrivateKeyBlob, // out
_Inout_ DWORD *pcbPrivateKeyBlob // in, out _Inout_ DWORD *pcbPrivateKeyBlob // in, out
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_REST
RICTED)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// CryptExportPKCS8Ex // CryptExportPKCS8Ex
// //
// Export the private key in PKCS8 format // Export the private key in PKCS8 format
// //
// //
// Uses the pszPrivateKeyObjId to call the // Uses the pszPrivateKeyObjId to call the
// installable CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC. The called function // installable CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC. The called function
// has the signature defined by PFN_EXPORT_PRIV_KEY_FUNC. // has the signature defined by PFN_EXPORT_PRIV_KEY_FUNC.
// //
skipping to change at line 15096 skipping to change at line 15463
BOOL BOOL
WINAPI WINAPI
CryptExportPKCS8Ex( CryptExportPKCS8Ex(
_In_ CRYPT_PKCS8_EXPORT_PARAMS* psExportParams, // in _In_ CRYPT_PKCS8_EXPORT_PARAMS* psExportParams, // in
_In_ DWORD dwFlags, // in _In_ DWORD dwFlags, // in
_In_opt_ void* pvAuxInfo, // in _In_opt_ void* pvAuxInfo, // in
_Out_writes_bytes_opt_ (*pcbPrivateKeyBlob) BYTE* pbPrivateKeyBlob, // out _Out_writes_bytes_opt_ (*pcbPrivateKeyBlob) BYTE* pbPrivateKeyBlob, // out
_Inout_ DWORD* pcbPrivateKeyBlob // in, out _Inout_ DWORD* pcbPrivateKeyBlob // in, out
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Compute the hash of the encoded public key info. // Compute the hash of the encoded public key info.
// //
// The public key info is encoded and then hashed. // The public key info is encoded and then hashed.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptHashPublicKeyInfo( CryptHashPublicKeyInfo(
_In_opt_ HCRYPTPROV_LEGACY hCryptProv, _In_opt_ HCRYPTPROV_LEGACY hCryptProv,
skipping to change at line 15266 skipping to change at line 15640
WINCRYPT32API WINCRYPT32API
DWORD DWORD
WINAPI WINAPI
CertNameToStrA( CertNameToStrA(
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_ PCERT_NAME_BLOB pName, _In_ PCERT_NAME_BLOB pName,
_In_ DWORD dwStrType, _In_ DWORD dwStrType,
_Out_writes_to_opt_(csz, return) LPSTR psz, _Out_writes_to_opt_(csz, return) LPSTR psz,
_In_ DWORD csz _In_ DWORD csz
); );
//+-------------------------------------------------------------------------
//--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
DWORD DWORD
WINAPI WINAPI
CertNameToStrW( CertNameToStrW(
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_ PCERT_NAME_BLOB pName, _In_ PCERT_NAME_BLOB pName,
_In_ DWORD dwStrType, _In_ DWORD dwStrType,
_Out_writes_to_opt_(csz, return) LPWSTR psz, _Out_writes_to_opt_(csz, return) LPWSTR psz,
_In_ DWORD csz _In_ DWORD csz
); );
skipping to change at line 15937 skipping to change at line 16309
// //
// cbSize must be set to the sizeof(CRYPT_KEY_VERIFY_MESSAGE_PARA) or else // cbSize must be set to the sizeof(CRYPT_KEY_VERIFY_MESSAGE_PARA) or else
// LastError will be updated with E_INVALIDARG. // LastError will be updated with E_INVALIDARG.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
typedef struct _CRYPT_KEY_VERIFY_MESSAGE_PARA { typedef struct _CRYPT_KEY_VERIFY_MESSAGE_PARA {
DWORD cbSize; DWORD cbSize;
DWORD dwMsgEncodingType; DWORD dwMsgEncodingType;
HCRYPTPROV_LEGACY hCryptProv; HCRYPTPROV_LEGACY hCryptProv;
} CRYPT_KEY_VERIFY_MESSAGE_PARA, *PCRYPT_KEY_VERIFY_MESSAGE_PARA; } CRYPT_KEY_VERIFY_MESSAGE_PARA, *PCRYPT_KEY_VERIFY_MESSAGE_PARA;
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Sign the message. // Sign the message.
// //
// If fDetachedSignature is TRUE, the "to be signed" content isn't included // If fDetachedSignature is TRUE, the "to be signed" content isn't included
// in the encoded signed blob. // in the encoded signed blob.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptSignMessage( CryptSignMessage(
skipping to change at line 16382 skipping to change at line 16760
_In_ LPCWSTR szCertStoreName, _In_ LPCWSTR szCertStoreName,
_In_reads_bytes_(cbCertEncoded) const BYTE * pbCertEncoded, _In_reads_bytes_(cbCertEncoded) const BYTE * pbCertEncoded,
_In_ DWORD cbCertEncoded _In_ DWORD cbCertEncoded
); );
#ifdef UNICODE #ifdef UNICODE
#define CertAddEncodedCertificateToSystemStore CertAddEncodedCertificateToSyste mStoreW #define CertAddEncodedCertificateToSystemStore CertAddEncodedCertificateToSyste mStoreW
#else #else
#define CertAddEncodedCertificateToSystemStore CertAddEncodedCertificateToSyste mStoreA #define CertAddEncodedCertificateToSystemStore CertAddEncodedCertificateToSyste mStoreA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family or Wintrust Package
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP |WINAPI_PARTITION_PHONE_RES
TRICTED | WINAPI_PARTITION_PKG_WINTRUST)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Find all certificate chains tying the given issuer name to any certificate // Find all certificate chains tying the given issuer name to any certificate
// that the current user has a private key for. // that the current user has a private key for.
// //
// If no certificate chain is found, FALSE is returned with LastError set // If no certificate chain is found, FALSE is returned with LastError set
// to CRYPT_E_NOT_FOUND and the counts zeroed. // to CRYPT_E_NOT_FOUND and the counts zeroed.
// //
// IE 3.0 ASSUMPTION: // IE 3.0 ASSUMPTION:
// The client certificates are in the "My" system store. The issuer // The client certificates are in the "My" system store. The issuer
// cerificates may be in the "Root", "CA" or "My" system stores. // cerificates may be in the "Root", "CA" or "My" system stores.
skipping to change at line 16414 skipping to change at line 16798
_Out_writes_bytes_to_opt_(*pcbCertChains, *pcbCertChains) PCERT_CHAIN pCertC hains, _Out_writes_bytes_to_opt_(*pcbCertChains, *pcbCertChains) PCERT_CHAIN pCertC hains,
_Inout_ DWORD *pcbCertChains, _Inout_ DWORD *pcbCertChains,
_Out_ DWORD *pcCertChains, // count of certificates chains returned _Out_ DWORD *pcCertChains, // count of certificates chains returned
_In_reads_bytes_opt_(cbEncodedIssuerName) BYTE* pbEncodedIssuerName, // DE R encoded issuer name _In_reads_bytes_opt_(cbEncodedIssuerName) BYTE* pbEncodedIssuerName, // DE R encoded issuer name
_In_ DWORD cbEncodedIssuerName, // count in bytes of encoded issuer name _In_ DWORD cbEncodedIssuerName, // count in bytes of encoded issuer name
_In_opt_ LPCWSTR pwszPurpose, // "ClientAuth" or "CodeSigning" _In_opt_ LPCWSTR pwszPurpose, // "ClientAuth" or "CodeSigning"
_In_ DWORD dwKeySpec // only return signers supporting this _In_ DWORD dwKeySpec // only return signers supporting this
// keyspec // keyspec
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP |WINAPI_PARTITION_PHO
NE_RESTRICTED | WINAPI_PARTITION_PKG_WINTRUST) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
// //
// CryptQueryObject takes a CERT_BLOB or a file name and returns the // CryptQueryObject takes a CERT_BLOB or a file name and returns the
// information about the content in the blob or in the file. // information about the content in the blob or in the file.
// //
// Parameters: // Parameters:
// INPUT dwObjectType: // INPUT dwObjectType:
// Indicate the type of the object. Should be one of the // Indicate the type of the object. Should be one of the
// following: // following:
// CERT_QUERY_OBJECT_FILE // CERT_QUERY_OBJECT_FILE
skipping to change at line 16716 skipping to change at line 17106
//the content is ascii hex encoded with "{ASN}" prefix //the content is ascii hex encoded with "{ASN}" prefix
#define CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED \ #define CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED \
( 1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED) ( 1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)
//the content can be of any format //the content can be of any format
#define CERT_QUERY_FORMAT_FLAG_ALL \ #define CERT_QUERY_FORMAT_FLAG_ALL \
( CERT_QUERY_FORMAT_FLAG_BINARY | \ ( CERT_QUERY_FORMAT_FLAG_BINARY | \
CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | \ CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | \
CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED ) CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED )
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
// //
// Crypt32 Memory Management Routines. All Crypt32 API which return allocated // Crypt32 Memory Management Routines. All Crypt32 API which return allocated
// buffers will do so via CryptMemAlloc, CryptMemRealloc. Clients can free // buffers will do so via CryptMemAlloc, CryptMemRealloc. Clients can free
// those buffers using CryptMemFree. Also included is CryptMemSize // those buffers using CryptMemFree. Also included is CryptMemSize
// //
WINCRYPT32API WINCRYPT32API
LPVOID LPVOID
WINAPI WINAPI
CryptMemAlloc ( CryptMemAlloc (
skipping to change at line 16796 skipping to change at line 17192
_Outptr_opt_result_maybenull_ __callback PFN_CRYPT_ASYNC_PARAM_FREE_FUNC* p pfnFree _Outptr_opt_result_maybenull_ __callback PFN_CRYPT_ASYNC_PARAM_FREE_FUNC* p pfnFree
); );
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptCloseAsyncHandle ( CryptCloseAsyncHandle (
_In_opt_ HCRYPTASYNC hAsync _In_opt_ HCRYPTASYNC hAsync
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// //
// Crypt32 Remote Object Retrieval Routines. This API allows retrieval of // Crypt32 Remote Object Retrieval Routines. This API allows retrieval of
// remote PKI objects where the location is given by an URL. The remote // remote PKI objects where the location is given by an URL. The remote
// object retrieval manager exposes two provider models. One is the "Scheme // object retrieval manager exposes two provider models. One is the "Scheme
// Provider" model which allows for installable protocol providers as defined // Provider" model which allows for installable protocol providers as defined
// by the URL scheme e.g. ldap, http, ftp. The scheme provider entry point is // by the URL scheme e.g. ldap, http, ftp. The scheme provider entry point is
// the same as the CryptRetrieveObjectByUrl however the *ppvObject returned // the same as the CryptRetrieveObjectByUrl however the *ppvObject returned
// is ALWAYS a counted array of encoded bits (one per object retrieved). The // is ALWAYS a counted array of encoded bits (one per object retrieved). The
// second provider model is the "Context Provider" model which allows for // second provider model is the "Context Provider" model which allows for
// installable creators of CAPI2 context handles (objects) based on the // installable creators of CAPI2 context handles (objects) based on the
skipping to change at line 17015 skipping to change at line 17417
// Update content. The random query string ensures that cached proxy content // Update content. The random query string ensures that cached proxy content
// isn't used and the HTTP request will always reach the Content Delivery // isn't used and the HTTP request will always reach the Content Delivery
// Network (CDN) used by Windows Update which removes a query string // Network (CDN) used by Windows Update which removes a query string
// before doing a cache lookup. // before doing a cache lookup.
#define CRYPT_RANDOM_QUERY_STRING_RETRIEVAL 0x04000000 #define CRYPT_RANDOM_QUERY_STRING_RETRIEVAL 0x04000000
// File scheme retrieval's are disabled by default. This flag can be set to // File scheme retrieval's are disabled by default. This flag can be set to
// allow file retrievals. // allow file retrievals.
#define CRYPT_ENABLE_FILE_RETRIEVAL 0x08000000 #define CRYPT_ENABLE_FILE_RETRIEVAL 0x08000000
// Set this flag to check if a cache flush entry already exists for this URL.
// If it already exists, this API will fail and set LastError to
// ERROR_FILE_EXISTS. Otherwise, the pvVerify parameter will be used.
// If NULL, we only check if the cache entry exists. If nonNULL, then,
// pvVerify should be a PCRYPTNET_URL_CACHE_FLUSH_INFO containing the
// flush information to be written.
#define CRYPT_CREATE_NEW_FLUSH_ENTRY 0x10000000
// //
// Data verification retrieval flags // Data verification retrieval flags
// //
// CRYPT_VERIFY_CONTEXT_SIGNATURE is used to get signature verification // CRYPT_VERIFY_CONTEXT_SIGNATURE is used to get signature verification
// on the context created. In this case pszObjectOid must be non-NULL and // on the context created. In this case pszObjectOid must be non-NULL and
// pvVerify points to the signer certificate context // pvVerify points to the signer certificate context
// //
// CRYPT_VERIFY_DATA_HASH is used to get verification of the blob data // CRYPT_VERIFY_DATA_HASH is used to get verification of the blob data
// retrieved by the protocol. The pvVerify points to an URL_DATA_HASH // retrieved by the protocol. The pvVerify points to an URL_DATA_HASH
// structure (TBD) // structure (TBD)
skipping to change at line 17079 skipping to change at line 17489
FILETIME PublishTime; // May be zero FILETIME PublishTime; // May be zero
} CRYPTNET_URL_CACHE_PRE_FETCH_INFO, *PCRYPTNET_URL_CACHE_PRE_FETCH_INFO; } CRYPTNET_URL_CACHE_PRE_FETCH_INFO, *PCRYPTNET_URL_CACHE_PRE_FETCH_INFO;
// Pre-fetch ObjectTypes // Pre-fetch ObjectTypes
#define CRYPTNET_URL_CACHE_PRE_FETCH_NONE 0 #define CRYPTNET_URL_CACHE_PRE_FETCH_NONE 0
#define CRYPTNET_URL_CACHE_PRE_FETCH_BLOB 1 #define CRYPTNET_URL_CACHE_PRE_FETCH_BLOB 1
#define CRYPTNET_URL_CACHE_PRE_FETCH_CRL 2 #define CRYPTNET_URL_CACHE_PRE_FETCH_CRL 2
#define CRYPTNET_URL_CACHE_PRE_FETCH_OCSP 3 #define CRYPTNET_URL_CACHE_PRE_FETCH_OCSP 3
#define CRYPTNET_URL_CACHE_PRE_FETCH_AUTOROOT_CAB 5 #define CRYPTNET_URL_CACHE_PRE_FETCH_AUTOROOT_CAB 5
#define CRYPTNET_URL_CACHE_PRE_FETCH_DISALLOWED_CERT_CAB 6 #define CRYPTNET_URL_CACHE_PRE_FETCH_DISALLOWED_CERT_CAB 6
#define CRYPTNET_URL_CACHE_PRE_FETCH_PIN_RULES_CAB 7
// //
// Cryptnet URL Cache Flush Info // Cryptnet URL Cache Flush Info
// //
typedef struct _CRYPTNET_URL_CACHE_FLUSH_INFO { typedef struct _CRYPTNET_URL_CACHE_FLUSH_INFO {
DWORD cbSize; DWORD cbSize;
// If pre-fetching is enabled, following is ignored // If pre-fetching is enabled, following is ignored
// //
// 0 - use default flush exempt seconds (2 weeks) // 0 - use default flush exempt seconds (2 weeks)
// 0xFFFFFFFF - disable flushing // 0xFFFFFFFF - disable flushing
skipping to change at line 17179 skipping to change at line 17590
// This value is only updated upon return for a nonSuccessful status code // This value is only updated upon return for a nonSuccessful status code
// returned in a HTTP response header. This value won't be explicitly // returned in a HTTP response header. This value won't be explicitly
// cleared. This value will only be updated for http or https URL // cleared. This value will only be updated for http or https URL
// retrievals. // retrievals.
// //
// If CRYPT_NOT_MODIFIED_RETRIEVAL was set in dwFlags, set to winhttp.h's // If CRYPT_NOT_MODIFIED_RETRIEVAL was set in dwFlags, set to winhttp.h's
// HTTP_STATUS_NOT_MODIFIED if the retrieval returned not modified. In // HTTP_STATUS_NOT_MODIFIED if the retrieval returned not modified. In
// this case TRUE is returned with *ppvObject set to NULL. // this case TRUE is returned with *ppvObject set to NULL.
DWORD dwHttpStatusCode; DWORD dwHttpStatusCode;
// To get the HTTP response headers for a retrieval error, set the following
// pointer to the address of a LPWSTR to receive the list of
// headers. L'|' is used as the separator between headers.
// The *ppwszErrorResponseHeaders must be freed via CryptMemFree().
LPWSTR *ppwszErrorResponseHeaders;
// To get the content for a retrieval decode error, set the following
// pointer to the address of a PCRYPT_DATA_BLOB.
// The *ppErrorContentBlob must be freed via CryptMemFree().
PCRYPT_DATA_BLOB *ppErrorContentBlob;
} CRYPT_RETRIEVE_AUX_INFO, *PCRYPT_RETRIEVE_AUX_INFO; } CRYPT_RETRIEVE_AUX_INFO, *PCRYPT_RETRIEVE_AUX_INFO;
// Limit the error content to be allocated and returned.
#define CRYPT_RETRIEVE_MAX_ERROR_CONTENT_LENGTH 0x1000
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
WINCRYPT32API WINCRYPT32API
_Success_(return == TRUE) _Success_(return == TRUE)
BOOL BOOL
WINAPI WINAPI
CryptRetrieveObjectByUrlA ( CryptRetrieveObjectByUrlA (
_In_ LPCSTR pszUrl, _In_ LPCSTR pszUrl,
_In_opt_ LPCSTR pszObjectOid, _In_opt_ LPCSTR pszObjectOid,
_In_ DWORD dwRetrievalFlags, _In_ DWORD dwRetrievalFlags,
_In_ DWORD dwTimeout, // milliseconds _In_ DWORD dwTimeout, // milliseconds
_Outptr_ LPVOID* ppvObject, _Outptr_ LPVOID* ppvObject,
skipping to change at line 17257 skipping to change at line 17688
); );
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptUninstallCancelRetrieval( CryptUninstallCancelRetrieval(
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Reserved_ void *pvReserved _Reserved_ void *pvReserved
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_REST
RICTED)
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
CryptCancelAsyncRetrieval ( CryptCancelAsyncRetrieval (
_In_opt_ HCRYPTASYNC hAsyncRetrieval _In_opt_ HCRYPTASYNC hAsyncRetrieval
); );
// //
// Remote Object Async Retrieval parameters // Remote Object Async Retrieval parameters
// //
skipping to change at line 17299 skipping to change at line 17736
// This function is set on the async handle by a scheme provider that // This function is set on the async handle by a scheme provider that
// supports asynchronous retrieval // supports asynchronous retrieval
// //
#define CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL ((LPCSTR)2) #define CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL ((LPCSTR)2)
typedef BOOL (WINAPI *PFN_CANCEL_ASYNC_RETRIEVAL_FUNC) ( typedef BOOL (WINAPI *PFN_CANCEL_ASYNC_RETRIEVAL_FUNC) (
_In_opt_ HCRYPTASYNC hAsyncRetrieve _In_opt_ HCRYPTASYNC hAsyncRetrieve
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
// //
// Get the locator for a CAPI object // Get the locator for a CAPI object
// //
#define CRYPT_GET_URL_FROM_PROPERTY 0x00000001 #define CRYPT_GET_URL_FROM_PROPERTY 0x00000001
#define CRYPT_GET_URL_FROM_EXTENSION 0x00000002 #define CRYPT_GET_URL_FROM_EXTENSION 0x00000002
#define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x00000004 #define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x00000004
#define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE 0x00000008 #define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE 0x00000008
typedef struct _CRYPT_URL_ARRAY { typedef struct _CRYPT_URL_ARRAY {
skipping to change at line 17468 skipping to change at line 17910
#define URL_OID_CERTIFICATE_CRL_DIST_POINT_AND_OCSP ((LPCSTR)11) #define URL_OID_CERTIFICATE_CRL_DIST_POINT_AND_OCSP ((LPCSTR)11)
#define URL_OID_CROSS_CERT_SUBJECT_INFO_ACCESS ((LPCSTR)12) #define URL_OID_CROSS_CERT_SUBJECT_INFO_ACCESS ((LPCSTR)12)
#define URL_OID_CERTIFICATE_ONLY_OCSP ((LPCSTR)13) #define URL_OID_CERTIFICATE_ONLY_OCSP ((LPCSTR)13)
typedef struct _CERT_CRL_CONTEXT_PAIR { typedef struct _CERT_CRL_CONTEXT_PAIR {
PCCERT_CONTEXT pCertContext; PCCERT_CONTEXT pCertContext;
PCCRL_CONTEXT pCrlContext; PCCRL_CONTEXT pCrlContext;
} CERT_CRL_CONTEXT_PAIR, *PCERT_CRL_CONTEXT_PAIR; } CERT_CRL_CONTEXT_PAIR, *PCERT_CRL_CONTEXT_PAIR;
typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR; typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR;
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_REST
RICTED)
// //
// Get a time valid CAPI2 object // Get a time valid CAPI2 object
// //
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// The following optional Extra Info may be passed to // The following optional Extra Info may be passed to
// CryptGetTimeValidObject(). // CryptGetTimeValidObject().
// //
// All unused fields in this data structure must be zeroed. More fields // All unused fields in this data structure must be zeroed. More fields
// could be added in a future release. // could be added in a future release.
skipping to change at line 17607 skipping to change at line 18055
// freshest CRL to flush // freshest CRL to flush
// //
#define TIME_VALID_OID_FLUSH_CTL ((LPCSTR)1) #define TIME_VALID_OID_FLUSH_CTL ((LPCSTR)1)
#define TIME_VALID_OID_FLUSH_CRL ((LPCSTR)2) #define TIME_VALID_OID_FLUSH_CRL ((LPCSTR)2)
#define TIME_VALID_OID_FLUSH_CRL_FROM_CERT ((LPCSTR)3) #define TIME_VALID_OID_FLUSH_CRL_FROM_CERT ((LPCSTR)3)
#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT ((LPCSTR)4) #define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT ((LPCSTR)4)
#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL ((LPCSTR)5) #define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL ((LPCSTR)5)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
//+========================================================================= //+=========================================================================
// Helper functions to build certificates // Helper functions to build certificates
//========================================================================== //==========================================================================
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// //
// Builds a self-signed certificate and returns a PCCERT_CONTEXT representing // Builds a self-signed certificate and returns a PCCERT_CONTEXT representing
// the certificate. A hProv may be specified to build the cert context. // the certificate. A hProv may be specified to build the cert context.
// //
// pSubjectIssuerBlob is the DN for the certifcate. If an alternate subject // pSubjectIssuerBlob is the DN for the certifcate. If an alternate subject
skipping to change at line 17640 skipping to change at line 18094
// pEntensions will be empty. // pEntensions will be empty.
// //
// The returned PCCERT_CONTEXT will reference the private keys by setting the // The returned PCCERT_CONTEXT will reference the private keys by setting the
// CERT_KEY_PROV_INFO_PROP_ID. However, if this property is not desired specify the // CERT_KEY_PROV_INFO_PROP_ID. However, if this property is not desired specify the
// CERT_CREATE_SELFSIGN_NO_KEY_INFO in dwFlags. // CERT_CREATE_SELFSIGN_NO_KEY_INFO in dwFlags.
// //
// If the cert being built is only a dummy placeholder cert for speed it may not // If the cert being built is only a dummy placeholder cert for speed it may not
// need to be signed. Signing of the cert is skipped if CERT_CREATE_SELFSIGN_NO_ SIGN // need to be signed. Signing of the cert is skipped if CERT_CREATE_SELFSIGN_NO_ SIGN
// is specified in dwFlags. // is specified in dwFlags.
// //
// Following flags can be passed to CertCreateSelfSignCertificate which will be
// directly passed to CryptExportPublicKeyInfo to indicate the preference of
// putting ECC Curve OID vs ECC Curve Parameters in Cert's Public Key informatio
n's
// algorithm section:
// CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG
// CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
PCCERT_CONTEXT PCCERT_CONTEXT
WINAPI WINAPI
CertCreateSelfSignCertificate( CertCreateSelfSignCertificate(
_In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
_In_ PCERT_NAME_BLOB pSubjectIssuerBlob, _In_ PCERT_NAME_BLOB pSubjectIssuerBlob,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_In_opt_ PCRYPT_KEY_PROV_INFO pKeyProvInfo, _In_opt_ PCRYPT_KEY_PROV_INFO pKeyProvInfo,
_In_opt_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, _In_opt_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
_In_opt_ PSYSTEMTIME pStartTime, _In_opt_ PSYSTEMTIME pStartTime,
_In_opt_ PSYSTEMTIME pEndTime, _In_opt_ PSYSTEMTIME pEndTime,
_In_opt_ PCERT_EXTENSIONS pExtensions _In_opt_ PCERT_EXTENSIONS pExtensions
); );
#define CERT_CREATE_SELFSIGN_NO_SIGN 1 #define CERT_CREATE_SELFSIGN_NO_SIGN 1
#define CERT_CREATE_SELFSIGN_NO_KEY_INFO 2 #define CERT_CREATE_SELFSIGN_NO_KEY_INFO 2
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+========================================================================= //+=========================================================================
// Key Identifier Property Data Structures and APIs // Key Identifier Property Data Structures and APIs
//========================================================================== //==========================================================================
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Get the property for the specified Key Identifier. // Get the property for the specified Key Identifier.
// //
// The Key Identifier is the SHA1 hash of the encoded CERT_PUBLIC_KEY_INFO. // The Key Identifier is the SHA1 hash of the encoded CERT_PUBLIC_KEY_INFO.
// The Key Identifier for a certificate can be obtained by getting the // The Key Identifier for a certificate can be obtained by getting the
// certificate's CERT_KEY_IDENTIFIER_PROP_ID. The // certificate's CERT_KEY_IDENTIFIER_PROP_ID. The
skipping to change at line 17820 skipping to change at line 18286
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Reserved_ void *pvReserved, _Reserved_ void *pvReserved,
_Out_writes_bytes_to_opt_(*pcbHash, *pcbHash) BYTE *pbHash, _Out_writes_bytes_to_opt_(*pcbHash, *pcbHash) BYTE *pbHash,
_Inout_ DWORD *pcbHash _Inout_ DWORD *pcbHash
); );
//+========================================================================= //+=========================================================================
// Certificate Chaining Infrastructure // Certificate Chaining Infrastructure
//========================================================================== //==========================================================================
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#define CERT_CHAIN_CONFIG_REGPATH \ #define CERT_CHAIN_CONFIG_REGPATH \
L"Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CertDllCreateCerti ficateChainEngine\\Config" L"Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CertDllCreateCerti ficateChainEngine\\Config"
// max size of the cryptographic object to download, in bytes // max size of the cryptographic object to download, in bytes
// NOTE: AIA has different configuration // NOTE: AIA has different configuration
#define CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME \ #define CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME \
L"MaxUrlRetrievalByteCount" L"MaxUrlRetrievalByteCount"
#define CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_DEFAULT (100*1024*1024) #define CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_DEFAULT (100*1024*1024)
// The following is a REG_BINARY. It contains the cache resync FILETIME. // The following is a REG_BINARY. It contains the cache resync FILETIME.
skipping to change at line 17882 skipping to change at line 18354
L"MaxAIAUrlRetrievalCertCount" L"MaxAIAUrlRetrievalCertCount"
#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_DEFAULT 10 #define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_DEFAULT 10
// The following is a REG_DWORD. If the OCSP response NextUpdate is zero, // The following is a REG_DWORD. If the OCSP response NextUpdate is zero,
// this value is added to the ThisUpdate to get a nonzero NextUpdate. // this value is added to the ThisUpdate to get a nonzero NextUpdate.
#define CERT_CHAIN_OCSP_VALIDITY_SECONDS_VALUE_NAME \ #define CERT_CHAIN_OCSP_VALIDITY_SECONDS_VALUE_NAME \
L"OcspValiditySeconds" L"OcspValiditySeconds"
// 12 hours // 12 hours
#define CERT_CHAIN_OCSP_VALIDITY_SECONDS_DEFAULT (12 * 60 * 60) #define CERT_CHAIN_OCSP_VALIDITY_SECONDS_DEFAULT (12 * 60 * 60)
// The following is a REG_DWORD. It can be set to a nonzero value to disable
// the use of the Serial Chain optimization for SSL ServerAuth chains. This
// value is queried in each process on the first CertGetCertificateChain call
// where the CERT_SERIAL_CHAIN_PROP_ID property is set.
#define CERT_CHAIN_DISABLE_SERIAL_CHAIN_VALUE_NAME \
L"DisableSerialChain"
// The following is a REG_SZ containing the name of the file to log
// Serial Chain errors.
// The file's directory must already exist. If the file already
// exists, events are appended. Otherwise, the file is created.
// The directory/file should be ACL'ed so all processes and users have
// write access.
#define CERT_CHAIN_SERIAL_CHAIN_LOG_FILE_NAME_VALUE_NAME \
L"SerialChainLogFileName"
// The following is a REG_DWORD. It can be set to a nonzero value to disable
// using SSL handshakes as a source of time. Will also disable the above
// Serial Chain optimization. Value is queried once on the first SSL
// handshake in the lsass.exe process.
#define CERT_CHAIN_DISABLE_SYNC_WITH_SSL_TIME_VALUE_NAME \
L"DisableSyncWithSslTime"
// The following is a REG_DWORD that specifies the maximum number of
// "SslTimeUpdated" events to be uploaded after boot or when the
// current time is synch'ed with SSL time. If not defined or a value of
// 0, uses the default value.
#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_VALUE_NAME \
L"MaxSslTimeUpdatedEventCount"
#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_DEFAULT 256
// The following value disables uploading "SslTimeUpdated" events
#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_DISABLE 0xFFFFFFFF
// The following is a REG_SZ containing the name of the file to log
// SSL handshakes that were processed.
// The file's directory must already exist. If the file already
// exists, events are appended. Otherwise, the file is created.
#define CERT_CHAIN_SSL_HANDSHAKE_LOG_FILE_NAME_VALUE_NAME \
L"SslHandshakeLogFileName"
// The following is a REG_DWORD. Flags can be set to enable weak // The following is a REG_DWORD. Flags can be set to enable weak
// signature hash algorithms and/or weak public key lengths that // signature hash algorithms and/or weak public key lengths that
// are disabled by default. Also, has flags to enable logging of weak // are disabled by default. Also, has flags to enable logging of weak
// certificates. // certificates.
// //
#define CERT_CHAIN_ENABLE_WEAK_SIGNATURE_FLAGS_VALUE_NAME \ #define CERT_CHAIN_ENABLE_WEAK_SIGNATURE_FLAGS_VALUE_NAME \
L"EnableWeakSignatureFlags" L"EnableWeakSignatureFlags"
// The following flag is set to enable MD2 or MD4 hashes that are // The following flag is set to enable MD2 or MD4 hashes that are
// disabled by default. If none, code signing, driver signing // disabled by default. If none, code signing, driver signing
skipping to change at line 17960 skipping to change at line 18473
#define CERT_CHAIN_DEFAULT_CONFIG_SUBDIR L"Default" #define CERT_CHAIN_DEFAULT_CONFIG_SUBDIR L"Default"
// //
// The registry values will have the following name syntax: // The registry values will have the following name syntax:
// "Weak"<CryptoAlg><ConfigType><ValueType> // "Weak"<CryptoAlg><ConfigType><ValueType>
// //
// Where: // Where:
// - <CryptoAlg> can be: "Md5", "Sha1", "Rsa", "Dsa" or "Ecdsa" // - <CryptoAlg> can be: "Md5", "Sha1", "Rsa", "Dsa" or "Ecdsa"
// - <ConfigType> can be: "ThirdParty" or "All" // - <ConfigType> can be: "ThirdParty" or "All"
// - <ValueType> can be: "Flags", "Hygiene", "MinBitLength", "AfterTime" or // - <ValueType> can be: "Flags", "Hygiene", "MinBitLength", "AfterTime",
// "Sha256Allow" // "FileHashAfterTime "TimestampHashAfterTime" or "Sha256Allow"
// - "Hygiene" is only applicable to hash algorithms // - "Hygiene" is only applicable to hash algorithms
// - "FileHashAfterTime" and "TimestampHashAfterTime" are only applicable
// to hash algorithms. These times can be in the future.
// - "MinBitLengh" is only applicable to key algorithms // - "MinBitLengh" is only applicable to key algorithms
// - <CryptoAlg>, <ConfigType> and <ValueType> will be present in all names. // - <CryptoAlg>, <ConfigType> and <ValueType> will be present in all names.
// //
// //
// For example, all possible registry value names for Md5: // For example, all possible registry value names for Md5:
// WeakMd5ThirdPartyFlags // WeakMd5ThirdPartyFlags
// WeakMd5AllFlags // WeakMd5AllFlags
// WeakMd5ThirdPartyHygiene // WeakMd5ThirdPartyHygiene
// WeakMd5AllHygiene // WeakMd5AllHygiene
// WeakMd5ThirdPartyAfterTime // WeakMd5ThirdPartyAfterTime
// WeakMd5AllAfterTime // WeakMd5AllAfterTime
// WeakMd5ThirdPartyFileHashAfterTime
// WeakMd5AllFileHashAfterTime
// WeakMd5ThirdPartyTimestampHashAfterTime
// WeakMd5AllTimestampHashAfterTime
// WeakMd5ThirdPartySha256Allow // WeakMd5ThirdPartySha256Allow
// WeakMd5AllSha256Allow // WeakMd5AllSha256Allow
// //
// For example, all possible registry value names for Rsa: // For example, all possible registry value names for Rsa:
// WeakRsaThirdPartyFlags // WeakRsaThirdPartyFlags
// WeakRsaAllFlags // WeakRsaAllFlags
// WeakRsaThirdPartyAfterTime // WeakRsaThirdPartyAfterTime
// WeakRsaAllAfterTime // WeakRsaAllAfterTime
// WeakRsaThirdPartyMinBitLength // WeakRsaThirdPartyMinBitLength
// WeakRsaAllMinBitLength // WeakRsaAllMinBitLength
skipping to change at line 18008 skipping to change at line 18527
// - The hygiene checks are skipped if the hash algorithm has been disabled. // - The hygiene checks are skipped if the hash algorithm has been disabled.
// - "Weak"<KeyCryptoAlg><ConfigType>"MinBitLength" // - "Weak"<KeyCryptoAlg><ConfigType>"MinBitLength"
// - REG_DWORD // - REG_DWORD
// - This value specifies the minimum public key length in bits. // - This value specifies the minimum public key length in bits.
// - "Weak"<CryptoAlg><ConfigType>"AfterTime" // - "Weak"<CryptoAlg><ConfigType>"AfterTime"
// - REG_BINARY // - REG_BINARY
// - This value contains an 8 byte FILETIME. The weak crypto algorithm // - This value contains an 8 byte FILETIME. The weak crypto algorithm
// check is disabled for time stamped files before this time. // check is disabled for time stamped files before this time.
// - This configuration value isn't applicable to timestamp chains. // - This configuration value isn't applicable to timestamp chains.
// - This configuration value isn't applicable to hygiene checks. // - This configuration value isn't applicable to hygiene checks.
// - If this time is after the CurrentTime, then, the CurrentTime is used.
// - "Weak"<CryptoAlg><ConfigType>"FileHashAfterTime"
// - REG_BINARY
// - This value contains an 8 byte FILETIME. The file hash weak crypto
// algorithm check is disabled for time stamped files before this time.
// This can be set to a date/time in the future.
// - Only applicable to the API: CertIsWeakHash.
// - "Weak"<CryptoAlg><ConfigType>"TimestampHashAfterTime"
// - REG_BINARY
// - This value contains an 8 byte FILETIME. The timestamp hash weak crypto
// algorithm check is disabled before this time is reached. This can be
// set to a date/time in the future.
// - Only applicable to the API: CertIsWeakHash.
// - "Weak"<CryptoAlg><ConfigType>"Sha256Allow" // - "Weak"<CryptoAlg><ConfigType>"Sha256Allow"
// - REG_SZ or REG_MULTI_SZ // - REG_SZ or REG_MULTI_SZ
// - This value contains the list of certificate SHA256 thumbprints // - This value contains the list of certificate SHA256 thumbprints
// (ASCII_HEX formatted) identifying weak certificates to be explicitly // (ASCII_HEX formatted) identifying weak certificates to be explicitly
// allowed. Non ASCII_HEX characters in the string are skipped. // allowed. Non ASCII_HEX characters in the string are skipped.
// This allows embedded spaces. // This allows embedded spaces.
// - The resultant set used for either "Weak"<CryptoAlg>"ThirdParty" or // - The resultant set used for either "Weak"<CryptoAlg>"ThirdParty" or
// "Weak"<CryptoAlg>"All" is the union of: // "Weak"<CryptoAlg>"All" is the union of:
// - Default and Administrator // - Default and Administrator
// - "ThirdParty" and "All" // - "ThirdParty" and "All"
// //
#define CERT_CHAIN_WEAK_PREFIX_NAME L"Weak" #define CERT_CHAIN_WEAK_PREFIX_NAME L"Weak"
#define CERT_CHAIN_WEAK_THIRD_PARTY_CONFIG_NAME L"ThirdParty" #define CERT_CHAIN_WEAK_THIRD_PARTY_CONFIG_NAME L"ThirdParty"
#define CERT_CHAIN_WEAK_ALL_CONFIG_NAME L"All" #define CERT_CHAIN_WEAK_ALL_CONFIG_NAME L"All"
#define CERT_CHAIN_WEAK_FLAGS_NAME L"Flags" #define CERT_CHAIN_WEAK_FLAGS_NAME L"Flags"
#define CERT_CHAIN_WEAK_HYGIENE_NAME L"Hygiene" #define CERT_CHAIN_WEAK_HYGIENE_NAME L"Hygiene"
#define CERT_CHAIN_WEAK_AFTER_TIME_NAME L"AfterTime" #define CERT_CHAIN_WEAK_AFTER_TIME_NAME L"AfterTime"
#define CERT_CHAIN_WEAK_MIN_BIT_LENGTH_NAME L"MinBitLength" #define CERT_CHAIN_WEAK_FILE_HASH_AFTER_TIME_NAME L"FileHashAfterTime"
#define CERT_CHAIN_WEAK_SHA256_ALLOW_NAME L"Sha256Allow" #define CERT_CHAIN_WEAK_TIMESTAMP_HASH_AFTER_TIME_NAME L"TimestampHashAfterTime
"
#define CERT_CHAIN_WEAK_MIN_BIT_LENGTH_NAME L"MinBitLength"
#define CERT_CHAIN_WEAK_SHA256_ALLOW_NAME L"Sha256Allow"
// The following value disables checking for weak public key lengths. // The following value disables checking for weak public key lengths.
#define CERT_CHAIN_MIN_PUB_KEY_BIT_LENGTH_DISABLE \ #define CERT_CHAIN_MIN_PUB_KEY_BIT_LENGTH_DISABLE \
0xFFFFFFFF 0xFFFFFFFF
// The following flags can be set in the above // The following flags can be set in the above
// "Weak"<CryptoAlg><ConfigType>"Flags" // "Weak"<CryptoAlg><ConfigType>"Flags"
// If the following flag isn't set, then all other flags and registry values // If the following flag isn't set, then all other flags and registry values
// are ignored for this "Weak"<CryptoAlg><ConfigType>. // are ignored for this "Weak"<CryptoAlg><ConfigType>.
skipping to change at line 18128 skipping to change at line 18662
// Mark-Of-The-Web (CERT_CHAIN_HAS_MOTW) // Mark-Of-The-Web (CERT_CHAIN_HAS_MOTW)
#define CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG 0x40000000 #define CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG 0x40000000
// If the hash algorithm is disabled, then, the hygiene check will be skipped. // If the hash algorithm is disabled, then, the hygiene check will be skipped.
// The hygiene flags are only applicable to hash algorithms. // The hygiene flags are only applicable to hash algorithms.
// If no EKU flags are set, then, weak crypto isn't enforced for the // If no EKU flags are set, then, weak crypto isn't enforced for the
// "Weak"<CryptoAlg><ConfigType>. This allows the administrator to always // "Weak"<CryptoAlg><ConfigType>. This allows the administrator to always
// ignore the Default OS/Windows Update settings. // ignore the Default OS/Windows Update settings.
// This flag disables for file hashes. Only applicable to CertIsWeakHash()
// API.
#define CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAG 0x00001000
// This flag disables for file hashes. Only applicable when CertIsWeakHash()
// API is called with the Mark-Of-The-Web (CERT_CHAIN_HAS_MOTW)
#define CERT_CHAIN_DISABLE_MOTW_FILE_HASH_WEAK_FLAG 0x00002000
// This flag disables for timestamp hashes. Only applicable to CertIsWeakHash()
// API.
#define CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAG 0x00004000
// This flag disables for timestamp hashes. Only applicable when CertIsWeakHash(
)
// API is called with the Mark-Of-The-Web (CERT_CHAIN_HAS_MOTW)
#define CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_HASH_WEAK_FLAG 0x00008000
#define CERT_CHAIN_DISABLE_WEAK_FLAGS ( \ #define CERT_CHAIN_DISABLE_WEAK_FLAGS ( \
CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG | \ CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG | \
CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG | \ CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG | \
CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG | \ CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG | \
CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG | \ CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG | \
CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG | \ CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG | \
CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG ) CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG )
#define CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAGS ( \
CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAG | \
CERT_CHAIN_DISABLE_MOTW_FILE_HASH_WEAK_FLAG )
#define CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAGS ( \
CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAG | \
CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_HASH_WEAK_FLAG )
#define CERT_CHAIN_ENABLE_HYGIENE_FLAGS ( \ #define CERT_CHAIN_ENABLE_HYGIENE_FLAGS ( \
CERT_CHAIN_ENABLE_ALL_EKU_HYGIENE_FLAG | \ CERT_CHAIN_ENABLE_ALL_EKU_HYGIENE_FLAG | \
CERT_CHAIN_ENABLE_SERVER_AUTH_HYGIENE_FLAG | \ CERT_CHAIN_ENABLE_SERVER_AUTH_HYGIENE_FLAG | \
CERT_CHAIN_ENABLE_CODE_SIGNING_HYGIENE_FLAG | \ CERT_CHAIN_ENABLE_CODE_SIGNING_HYGIENE_FLAG | \
CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG | \ CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG | \
CERT_CHAIN_ENABLE_TIMESTAMP_HYGIENE_FLAG | \ CERT_CHAIN_ENABLE_TIMESTAMP_HYGIENE_FLAG | \
CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG ) CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG )
#define CERT_CHAIN_MOTW_WEAK_FLAGS ( \ #define CERT_CHAIN_MOTW_WEAK_FLAGS ( \
CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG | \ CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG | \
CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG | \ CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG | \
CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG | \ CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG | \
CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG | \ CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG | \
CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG) CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG)
//+=========================================================================
//
// Certificate Chain Engine Auto Flush Registry Configuration
//
//==========================================================================
//
// The following registry values are under the
// CERT_CHAIN_CONFIG_REGPATH defined above.
//
//
// Types of certificate chain engine auto create and flush events
//
#define CERT_CHAIN_AUTO_CURRENT_USER 1
#define CERT_CHAIN_AUTO_LOCAL_MACHINE 2
#define CERT_CHAIN_AUTO_IMPERSONATED 3
#define CERT_CHAIN_AUTO_PROCESS_INFO 4
#define CERT_CHAIN_AUTO_PINRULE_INFO 5
#define CERT_CHAIN_AUTO_NETWORK_INFO 6
#define CERT_CHAIN_AUTO_SERIAL_LOCAL_MACHINE 7
// The following is a REG_DWORD that can be set to disable
// auto flush or enable the logging of auto create, free or
// flush events. By default, auto flush is enabled without
// any logging.
#define CERT_CHAIN_AUTO_FLAGS_VALUE_NAME \
L"AutoFlags"
#define CERT_CHAIN_AUTO_FLUSH_DISABLE_FLAG 0x00000001
#define CERT_CHAIN_AUTO_LOG_CREATE_FLAG 0x00000002
#define CERT_CHAIN_AUTO_LOG_FREE_FLAG 0x00000004
#define CERT_CHAIN_AUTO_LOG_FLUSH_FLAG 0x00000008
#define CERT_CHAIN_AUTO_LOG_FLAGS ( \
CERT_CHAIN_AUTO_LOG_CREATE_FLAG | \
CERT_CHAIN_AUTO_LOG_FREE_FLAG | \
CERT_CHAIN_AUTO_LOG_FLUSH_FLAG )
// The following are REG_DWORDs. If the registry value doesn't exist or
// is set to zero, then, the DEFAULT is used.
// This is the delta time in seconds to set the first timeout.
// At the first timeout we set the initial next timeout.
#define CERT_CHAIN_AUTO_FLUSH_FIRST_DELTA_SECONDS_VALUE_NAME \
L"AutoFlushFirstDeltaSeconds"
// 5 Minutes
#define CERT_CHAIN_AUTO_FLUSH_FIRST_DELTA_SECONDS_DEFAULT \
(5 * 60)
// This is the delta time in seconds to set the next timeouts.
// For each next timeout, we check if there was any chain
// engine usage (such as CertGetCertificateChain) since
// the last timeout. Auto flush is triggered if there wasn't
// any usage. Otherwise, we set the next timeout to this delta time.
#define CERT_CHAIN_AUTO_FLUSH_NEXT_DELTA_SECONDS_VALUE_NAME \
L"AutoFlushNextDeltaSeconds"
// 30 Minutes
#define CERT_CHAIN_AUTO_FLUSH_NEXT_DELTA_SECONDS_DEFAULT \
(30 * 60)
// The following is REG_SZ containing the name of the file to log
// the certificate chain engine auto events to.
// The file's directory must already exist. If the file already
// exists, events are appended. Otherwise, the file is created.
// The directory/file should be ACL'ed so all processes and users have
// write access.
#define CERT_CHAIN_AUTO_LOG_FILE_NAME_VALUE_NAME \
L"AutoLogFileName"
// The following is REG_MULTI_SZ containing the list of
// process names to disable auto flush for.
//
// Auto flush is always disabled for the lsass.exe process. It doesn't need
// to be in the following registry value list.
#define CERT_CHAIN_DISABLE_AUTO_FLUSH_PROCESS_NAME_LIST_VALUE_NAME \
L"DisableAutoFlushProcessNameList"
// The following are REG_DWORD's. These configuration parameters are // The following are REG_DWORD's. These configuration parameters are
// used by the following APIs to get a non-blocking, time valid OCSP // used by the following APIs to get a non-blocking, time valid OCSP
// response for a server certificate chain: // response for a server certificate chain:
// CertOpenServerOcspResponse // CertOpenServerOcspResponse
// CertAddRefServerOcspResponse // CertAddRefServerOcspResponse
// CertCloseServerOcspResponse // CertCloseServerOcspResponse
// CertGetServerOcspResponseContext // CertGetServerOcspResponseContext
// CertAddRefServerOcspResponseContext // CertAddRefServerOcspResponseContext
// CertFreeServerOcspResponseContext // CertFreeServerOcspResponseContext
skipping to change at line 18208 skipping to change at line 18847
// This is the minimum number of seconds to do a server OCSP response // This is the minimum number of seconds to do a server OCSP response
// pre-fetch retrieval after the OCSP response's NextUpdate when // pre-fetch retrieval after the OCSP response's NextUpdate when
// (NextUpdate - MinBeforeNextUpdateSeconds) < CurrentTime < NextUpdate. // (NextUpdate - MinBeforeNextUpdateSeconds) < CurrentTime < NextUpdate.
#define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME\ #define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME\
L"SrvOcspRespMinAfterNextUpdateSeconds" L"SrvOcspRespMinAfterNextUpdateSeconds"
// 1 minute // 1 minute
#define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT \ #define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT \
(1 * 60) (1 * 60)
// This is the minimum number of seconds between certificate directory
// update sync checks. Used by certutil.exe for the downloadOcsp option.
#define CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_VALUE_NAME \
L"SrvOcspRespMinSyncCertFileSeconds"
// 5 seconds
#define CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_DEFAULT \
5
// This is the maximum number of seconds between certificate directory
// update sync checks. Used by certutil.exe for the downloadOcsp option.
#define CERT_SRV_OCSP_RESP_MAX_SYNC_CERT_FILE_SECONDS_VALUE_NAME \
L"SrvOcspRespMaxSyncCertFileSeconds"
// 1 hour
#define CERT_SRV_OCSP_RESP_MAX_SYNC_CERT_FILE_SECONDS_DEFAULT \
(1 * 60 * 60)
// The following are REG_DWORD's. These configuration parameters are used // The following are REG_DWORD's. These configuration parameters are used
// in the ordering of the revocation retrieval URLs. // in the ordering of the revocation retrieval URLs.
// When the number of cached OCSP URLs associated with the same CDP extension // When the number of cached OCSP URLs associated with the same CDP extension
// equal or exceed this number, the OCSP AIA URLs aren't used. // equal or exceed this number, the OCSP AIA URLs aren't used.
#define CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_VALUE_NAME \ #define CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_VALUE_NAME \
L"CryptnetMaxCachedOcspPerCrlCount" L"CryptnetMaxCachedOcspPerCrlCount"
#define CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_DEFAULT \ #define CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_DEFAULT \
500 500
skipping to change at line 18372 skipping to change at line 19027
// The above registry value can be set to this value, to disable the // The above registry value can be set to this value, to disable the
// sending of trigger URL cache PreFetch LRPC messages. Note, a registry // sending of trigger URL cache PreFetch LRPC messages. Note, a registry
// value of 0, uses the above default value. // value of 0, uses the above default value.
#define CRYPTNET_PRE_FETCH_TRIGGER_DISABLE \ #define CRYPTNET_PRE_FETCH_TRIGGER_DISABLE \
0xFFFFFFFF 0xFFFFFFFF
// Following parameter specifies the delay time to wait to scan the // Following parameter specifies the delay time to wait to scan the
// URL cache directory after receiving a trigger LRPC message request. // URL cache directory after receiving a trigger LRPC message request.
#define CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_VALUE_NAME \ #define CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_VALUE_NAME \
L"CryptnetPreFetchScanAfterTriggerDelaySeconds" L"CryptnetPreFetchScanAfterTriggerDelaySeconds"
// 30 seconds // 60 seconds
#define CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_DEFAULT \ #define CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_DEFAULT \
30 60
// Following parameter specifies the maximum amount of time to wait for any // Following parameter specifies the maximum amount of time to wait for any
// PreFetch retrieval to complete // PreFetch retrieval to complete
#define CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_VALUE_NAME \ #define CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_VALUE_NAME \
L"CryptnetPreFetchRetrievalTimeoutSeconds" L"CryptnetPreFetchRetrievalTimeoutSeconds"
// 5 minutes // 5 minutes
#define CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_DEFAULT \ #define CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_DEFAULT \
(5 * 60) (5 * 60)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Cryptnet in-process CRL PreFetch configuration
//--------------------------------------------------------------------------
#define CRYPTNET_CRL_PRE_FETCH_CONFIG_REGPATH \
CERT_CHAIN_CONFIG_REGPATH L"\\CrlPreFetch"
// The following is REG_MULTI_SZ containing the list of
// process names to enable PreFetching for
#define CRYPTNET_CRL_PRE_FETCH_PROCESS_NAME_LIST_VALUE_NAME \
L"ProcessNameList"
// The following is REG_MULTI_SZ containing the list of
// CRL Urls to be PreFetched. This should be the encoded format used
// in the certificate. Normally, the one with the %20 for the " " space
// character.
#define CRYPTNET_CRL_PRE_FETCH_URL_LIST_VALUE_NAME \
L"PreFetchUrlList"
// By default PreFetch information events are logged to the Windows
// Application Logs. The following REG_DWORD can be set to nonzero
// value to disable the logging.
#define CRYPTNET_CRL_PRE_FETCH_DISABLE_INFORMATION_EVENTS_VALUE_NAME \
L"DisableInformationEvents"
// The following is REG_SZ containing the name of the file to log verbose events
// to. The file's directory must already exist. If the file already
// exists, events are appended. Otherwise, the file is created.
// The directory/file should be ACL'ed so all processes and users have
// write access.
#define CRYPTNET_CRL_PRE_FETCH_LOG_FILE_NAME_VALUE_NAME \
L"LogFileName"
// The following are REG_DWORDs. If the registry value doesn't exist or
// is set to zero, then, the DEFAULT is used.
// Following parameter specifies the maximum amount of time to wait for any
// CRL PreFetch retrieval to complete
#define CRYPTNET_CRL_PRE_FETCH_TIMEOUT_SECONDS_VALUE_NAME \
L"TimeoutSeconds"
// 5 minutes
#define CRYPTNET_CRL_PRE_FETCH_TIMEOUT_SECONDS_DEFAULT \
(5 * 60)
// Following parameter specifies the max-age retrievals before the
// expected publish time. Setting to any value >= NextUpdate - ThisUpdate
// will disable. 5 minutes is the minimum.
#define CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_VALUE_NAME \
L"MaxAgeSeconds"
// 2 hours
#define CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_DEFAULT \
(2 * 60 * 60)
// 5 minutes
#define CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_MIN \
(5 * 60)
// Following parameter specifies the expected publish time before
// NextUpdate
#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME \
L"PublishBeforeNextUpdateSeconds"
// 1 hour
#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT \
(1 * 60 * 60)
// Following parameter specifies the interval to be randomized and
// subtracted from the expected publish time. Setting to any value
// >= publish time will disable randomization. Setting to 1
// will disable any randomization. Setting to 0 will use the DEFAULT.
#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_RANDOM_INTERVAL_SECONDS_VALUE_NAME \
L"PublishRandomIntervalSeconds"
// 5 minutes
#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_RANDOM_INTERVAL_SECONDS_DEFAULT \
(5 * 60)
// Following parameter specifies the minimum time before NextUpdate
#define CRYPTNET_CRL_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME \
L"MinBeforeNextUpdateSeconds"
// 5 minutes
#define CRYPTNET_CRL_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT \
(5 * 60)
// Following parameter specifies the minimum time after NextUpdate
#define CRYPTNET_CRL_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME \
L"MinAfterNextUpdateSeconds"
// 5 minutes
#define CRYPTNET_CRL_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT \
(5 * 60)
//+-------------------------------------------------------------------------
// The following configuration parameters are store in HKLM group policy // The following configuration parameters are store in HKLM group policy
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define CERT_GROUP_POLICY_CHAIN_CONFIG_REGPATH \ #define CERT_GROUP_POLICY_CHAIN_CONFIG_REGPATH \
CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\ChainEngine\\Config" CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\ChainEngine\\Config"
// In Vista, the following have been moved from the above HKLM // In Vista, the following have been moved from the above HKLM
// configuration parameters: // configuration parameters:
// The following are REG_DWORD's. These configuration parameters are used // The following are REG_DWORD's. These configuration parameters are used
skipping to change at line 18484 skipping to change at line 19228
// is defined for the process which uses all default system stores e.g. // is defined for the process which uses all default system stores e.g.
// Root, CA, Trust, for chain building and caching. If an application // Root, CA, Trust, for chain building and caching. If an application
// wishes to define its own store namespace or have its own partitioned // wishes to define its own store namespace or have its own partitioned
// cache then it can create its own chain engine. It is advisable to create // cache then it can create its own chain engine. It is advisable to create
// a chain engine at application startup and use it throughout the lifetime // a chain engine at application startup and use it throughout the lifetime
// of the application in order to get optimal caching behavior // of the application in order to get optimal caching behavior
// //
typedef HANDLE HCERTCHAINENGINE; typedef HANDLE HCERTCHAINENGINE;
#define HCCE_CURRENT_USER ((HCERTCHAINENGINE)NULL) #define HCCE_CURRENT_USER ((HCERTCHAINENGINE)NULL)
#define HCCE_LOCAL_MACHINE ((HCERTCHAINENGINE)0x1) #define HCCE_LOCAL_MACHINE ((HCERTCHAINENGINE)0x1)
#define HCCE_SERIAL_LOCAL_MACHINE ((HCERTCHAINENGINE)0x2)
// //
// Create a certificate chain engine. // Create a certificate chain engine.
// //
// //
// Configuration parameters for the certificate chain engine // Configuration parameters for the certificate chain engine
// //
// hRestrictedRoot - restrict the root store (must be a subset of "Root") // hRestrictedRoot - restrict the root store (must be a subset of "Root")
// //
skipping to change at line 18710 skipping to change at line 19455
// These can be applied to certificates only // These can be applied to certificates only
#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 0x00000001 #define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 0x00000001
#define CERT_TRUST_HAS_KEY_MATCH_ISSUER 0x00000002 #define CERT_TRUST_HAS_KEY_MATCH_ISSUER 0x00000002
#define CERT_TRUST_HAS_NAME_MATCH_ISSUER 0x00000004 #define CERT_TRUST_HAS_NAME_MATCH_ISSUER 0x00000004
#define CERT_TRUST_IS_SELF_SIGNED 0x00000008 #define CERT_TRUST_IS_SELF_SIGNED 0x00000008
#define CERT_TRUST_AUTO_UPDATE_CA_REVOCATION 0x00000010 #define CERT_TRUST_AUTO_UPDATE_CA_REVOCATION 0x00000010
#define CERT_TRUST_AUTO_UPDATE_END_REVOCATION 0x00000020 #define CERT_TRUST_AUTO_UPDATE_END_REVOCATION 0x00000020
#define CERT_TRUST_NO_OCSP_FAILOVER_TO_CRL 0x00000040 #define CERT_TRUST_NO_OCSP_FAILOVER_TO_CRL 0x00000040
#define CERT_TRUST_IS_KEY_ROLLOVER 0x00000080
#define CERT_TRUST_SSL_HANDSHAKE_OCSP 0x00040000
#define CERT_TRUST_SSL_TIME_VALID_OCSP 0x00080000
#define CERT_TRUST_SSL_RECONNECT_OCSP 0x00100000
// These can be applied to certificates and chains // These can be applied to certificates and chains
#define CERT_TRUST_HAS_PREFERRED_ISSUER 0x00000100 #define CERT_TRUST_HAS_PREFERRED_ISSUER 0x00000100
#define CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY 0x00000200 #define CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY 0x00000200
#define CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS 0x00000400 #define CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS 0x00000400
#define CERT_TRUST_IS_PEER_TRUSTED 0x00000800 #define CERT_TRUST_IS_PEER_TRUSTED 0x00000800
#define CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED 0x00001000 #define CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED 0x00001000
// Indicates that the certificate was found in // Indicates that the certificate was found in
skipping to change at line 18732 skipping to change at line 19481
#if (NTDDI_VERSION >= NTDDI_WIN8) #if (NTDDI_VERSION >= NTDDI_WIN8)
#define CERT_TRUST_IS_CA_TRUSTED 0x00004000 #define CERT_TRUST_IS_CA_TRUSTED 0x00004000
#define CERT_TRUST_HAS_AUTO_UPDATE_WEAK_SIGNATURE 0x00008000 #define CERT_TRUST_HAS_AUTO_UPDATE_WEAK_SIGNATURE 0x00008000
#define CERT_TRUST_HAS_ALLOW_WEAK_SIGNATURE 0x00020000 #define CERT_TRUST_HAS_ALLOW_WEAK_SIGNATURE 0x00020000
#endif #endif
// These can be applied to chains only // These can be applied to chains only
#define CERT_TRUST_IS_COMPLEX_CHAIN 0x00010000 #define CERT_TRUST_IS_COMPLEX_CHAIN 0x00010000
#define CERT_TRUST_SSL_TIME_VALID 0x01000000
#define CERT_TRUST_NO_TIME_CHECK 0x02000000
// //
// Each certificate context in a simple chain has a corresponding chain element // Each certificate context in a simple chain has a corresponding chain element
// in the simple chain context // in the simple chain context
// //
// dwErrorStatus has CERT_TRUST_IS_REVOKED, pRevocationInfo set // dwErrorStatus has CERT_TRUST_IS_REVOKED, pRevocationInfo set
// dwErrorStatus has CERT_TRUST_REVOCATION_STATUS_UNKNOWN, pRevocationInfo set // dwErrorStatus has CERT_TRUST_REVOCATION_STATUS_UNKNOWN, pRevocationInfo set
// //
// Note that the post processing revocation supported in the first // Note that the post processing revocation supported in the first
skipping to change at line 19032 skipping to change at line 19783
#define CERT_CHAIN_DISABLE_MD2_MD4 0x00001000 #define CERT_CHAIN_DISABLE_MD2_MD4 0x00001000
// The following flag can be set to explicitly disable AIA retrievals. // The following flag can be set to explicitly disable AIA retrievals.
// If can also be set in the chain engine dwFlags. // If can also be set in the chain engine dwFlags.
#define CERT_CHAIN_DISABLE_AIA 0x00002000 #define CERT_CHAIN_DISABLE_AIA 0x00002000
// The following flag should be set when verifying the certificate // The following flag should be set when verifying the certificate
// associated with a file having the Mark-Of-The-Web // associated with a file having the Mark-Of-The-Web
#define CERT_CHAIN_HAS_MOTW 0x00004000 #define CERT_CHAIN_HAS_MOTW 0x00004000
// Only use certificates from the Additional and AuthRoot stores.
// If disabled, AuthRoot trust is enabled for this call.
#define CERT_CHAIN_ONLY_ADDITIONAL_AND_AUTH_ROOT 0x00008000
WINCRYPT32API WINCRYPT32API
_Success_(return != FALSE) _Success_(return != FALSE)
BOOL BOOL
WINAPI WINAPI
CertGetCertificateChain ( CertGetCertificateChain (
_In_opt_ HCERTCHAINENGINE hChainEngine, _In_opt_ HCERTCHAINENGINE hChainEngine,
_In_ PCCERT_CONTEXT pCertContext, _In_ PCCERT_CONTEXT pCertContext,
_In_opt_ LPFILETIME pTime, _In_opt_ LPFILETIME pTime,
_In_opt_ HCERTSTORE hAdditionalStore, _In_opt_ HCERTSTORE hAdditionalStore,
_In_ PCERT_CHAIN_PARA pChainPara, _In_ PCERT_CHAIN_PARA pChainPara,
skipping to change at line 19115 skipping to change at line 19870
// //
typedef struct _CRL_REVOCATION_INFO { typedef struct _CRL_REVOCATION_INFO {
PCRL_ENTRY pCrlEntry; PCRL_ENTRY pCrlEntry;
PCCRL_CONTEXT pCrlContext; PCCRL_CONTEXT pCrlContext;
PCCERT_CHAIN_CONTEXT pCrlIssuerChain; PCCERT_CHAIN_CONTEXT pCrlIssuerChain;
} CRL_REVOCATION_INFO, *PCRL_REVOCATION_INFO; } CRL_REVOCATION_INFO, *PCRL_REVOCATION_INFO;
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Find the first or next certificate chain context in the store. // Find the first or next certificate chain context in the store.
// //
// The chain context is found according to the dwFindFlags, dwFindType and // The chain context is found according to the dwFindFlags, dwFindType and
// its pvFindPara. See below for a list of the find types and its parameters. // its pvFindPara. See below for a list of the find types and its parameters.
// //
// If the first or next chain context isn't found, NULL is returned. // If the first or next chain context isn't found, NULL is returned.
// Otherwise, a pointer to a read only CERT_CHAIN_CONTEXT is returned. // Otherwise, a pointer to a read only CERT_CHAIN_CONTEXT is returned.
// CERT_CHAIN_CONTEXT must be freed by calling CertFreeCertificateChain // CERT_CHAIN_CONTEXT must be freed by calling CertFreeCertificateChain
// or is freed when passed as the // or is freed when passed as the
skipping to change at line 19148 skipping to change at line 19909
WINAPI WINAPI
CertFindChainInStore( CertFindChainInStore(
_In_ HCERTSTORE hCertStore, _In_ HCERTSTORE hCertStore,
_In_ DWORD dwCertEncodingType, _In_ DWORD dwCertEncodingType,
_In_ DWORD dwFindFlags, _In_ DWORD dwFindFlags,
_In_ DWORD dwFindType, _In_ DWORD dwFindType,
_In_opt_ const void *pvFindPara, _In_opt_ const void *pvFindPara,
_In_opt_ PCCERT_CHAIN_CONTEXT pPrevChainContext _In_opt_ PCCERT_CHAIN_CONTEXT pPrevChainContext
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
#define CERT_CHAIN_FIND_BY_ISSUER 1 #define CERT_CHAIN_FIND_BY_ISSUER 1
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// CERT_CHAIN_FIND_BY_ISSUER // CERT_CHAIN_FIND_BY_ISSUER
// //
// Find a certificate chain having a private key for the end certificate and // Find a certificate chain having a private key for the end certificate and
// matching one of the given issuer names. A matching dwKeySpec and // matching one of the given issuer names. A matching dwKeySpec and
// enhanced key usage can also be specified. Additionally a callback can // enhanced key usage can also be specified. Additionally a callback can
// be provided for even more caller provided filtering before building the // be provided for even more caller provided filtering before building the
// chain. // chain.
skipping to change at line 19545 skipping to change at line 20312
// pPolicyPara is optional. However, // pPolicyPara is optional. However,
// MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG can be set in // MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG can be set in
// the dwFlags in pPolicyPara to also check for the Microsoft Test Roots. // the dwFlags in pPolicyPara to also check for the Microsoft Test Roots.
// //
// MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG can be set // MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG can be set
// in the dwFlags in pPolicyPara to check for the Microsoft root for // in the dwFlags in pPolicyPara to check for the Microsoft root for
// application signing instead of the Microsoft product root. This flag // application signing instead of the Microsoft product root. This flag
// explicitly checks for the application root only and cannot be combined // explicitly checks for the application root only and cannot be combined
// with the test root flag. // with the test root flag.
// //
// MICROSOFT_ROOT_CERT_CHAIN_POLICY_DISABLE_FLIGHT_ROOT_FLAG can be set
// in the dwFlags in pPolicyPara to always disable the Flight root.
//
// pvExtraPolicyPara and pvExtraPolicyStatus aren't used and must be set // pvExtraPolicyPara and pvExtraPolicyStatus aren't used and must be set
// to NULL. // to NULL.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x00010000 #define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x00010000
#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG 0x00020000 #define MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG 0x00020000
#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_DISABLE_FLIGHT_ROOT_FLAG 0x00040000
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// CERT_CHAIN_POLICY_EV // CERT_CHAIN_POLICY_EV
// //
// Verify the issuance policy in the end certificate of the first simple // Verify the issuance policy in the end certificate of the first simple
// chain matches with the root certificate EV policy. // chain matches with the root certificate EV policy.
// //
// pvExtraPolicyPara may optionally be set to point to the following // pvExtraPolicyPara may optionally be set to point to the following
// EV_EXTRA_CERT_CHAIN_POLICY_PARA. The dwRootProgramQualifierFlags member // EV_EXTRA_CERT_CHAIN_POLICY_PARA. The dwRootProgramQualifierFlags member
// can be set to one or more of the CERT_ROOT_PROGRAM_FLAG_* to define // can be set to one or more of the CERT_ROOT_PROGRAM_FLAG_* to define
skipping to change at line 19579 skipping to change at line 20350
DWORD dwRootProgramQualifierFlags; DWORD dwRootProgramQualifierFlags;
} EV_EXTRA_CERT_CHAIN_POLICY_PARA, } EV_EXTRA_CERT_CHAIN_POLICY_PARA,
*PEV_EXTRA_CERT_CHAIN_POLICY_PARA; *PEV_EXTRA_CERT_CHAIN_POLICY_PARA;
typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_STATUS { typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_STATUS {
DWORD cbSize; DWORD cbSize;
DWORD dwQualifiers; DWORD dwQualifiers;
DWORD dwIssuanceUsageIndex; DWORD dwIssuanceUsageIndex;
} EV_EXTRA_CERT_CHAIN_POLICY_STATUS, *PEV_EXTRA_CERT_CHAIN_POLICY_STATUS; } EV_EXTRA_CERT_CHAIN_POLICY_STATUS, *PEV_EXTRA_CERT_CHAIN_POLICY_STATUS;
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// convert formatted string to binary // convert formatted string to binary
// If cchString is 0, then pszString is NULL terminated and // If cchString is 0, then pszString is NULL terminated and
// cchString is obtained via strlen() + 1. // cchString is obtained via strlen() + 1.
// dwFlags defines string format // dwFlags defines string format
// if pbBinary is NULL, *pcbBinary returns the size of required memory // if pbBinary is NULL, *pcbBinary returns the size of required memory
// *pdwSkip returns the character count of skipped strings, optional // *pdwSkip returns the character count of skipped strings, optional
// *pdwFlags returns the actual format used in the conversion, optional // *pdwFlags returns the actual format used in the conversion, optional
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
_Success_(return)
WINCRYPT32STRINGAPI WINCRYPT32STRINGAPI
BOOL BOOL
WINAPI WINAPI
CryptStringToBinaryA( CryptStringToBinaryA(
_In_reads_(cchString) LPCSTR pszString, _In_reads_(cchString) LPCSTR pszString,
_In_ DWORD cchString, _In_ DWORD cchString,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary, _Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary,
_Inout_ DWORD *pcbBinary, _Inout_ DWORD *pcbBinary,
_Out_opt_ DWORD *pdwSkip, _Out_opt_ DWORD *pdwSkip,
skipping to change at line 19609 skipping to change at line 20387
); );
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// convert formatted string to binary // convert formatted string to binary
// If cchString is 0, then pszString is NULL terminated and // If cchString is 0, then pszString is NULL terminated and
// cchString is obtained via strlen() + 1. // cchString is obtained via strlen() + 1.
// dwFlags defines string format // dwFlags defines string format
// if pbBinary is NULL, *pcbBinary returns the size of required memory // if pbBinary is NULL, *pcbBinary returns the size of required memory
// *pdwSkip returns the character count of skipped strings, optional // *pdwSkip returns the character count of skipped strings, optional
// *pdwFlags returns the actual format used in the conversion, optional // *pdwFlags returns the actual format used in the conversion, optional
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
_Success_(return)
WINCRYPT32STRINGAPI WINCRYPT32STRINGAPI
BOOL BOOL
WINAPI WINAPI
CryptStringToBinaryW( CryptStringToBinaryW(
_In_reads_(cchString) LPCWSTR pszString, _In_reads_(cchString) LPCWSTR pszString,
_In_ DWORD cchString, _In_ DWORD cchString,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary, _Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary,
_Inout_ DWORD *pcbBinary, _Inout_ DWORD *pcbBinary,
_Out_opt_ DWORD *pdwSkip, _Out_opt_ DWORD *pdwSkip,
skipping to change at line 19667 skipping to change at line 20446
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Out_writes_to_opt_(*pcchString, *pcchString) LPWSTR pszString, _Out_writes_to_opt_(*pcchString, *pcchString) LPWSTR pszString,
_Inout_ DWORD *pcchString _Inout_ DWORD *pcchString
); );
#ifdef UNICODE #ifdef UNICODE
#define CryptBinaryToString CryptBinaryToStringW #define CryptBinaryToString CryptBinaryToStringW
#else #else
#define CryptBinaryToString CryptBinaryToStringA #define CryptBinaryToString CryptBinaryToStringA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// dwFlags has the following defines // dwFlags has the following defines
// certenrolld_begin -- CRYPT_STRING_* // certenrolld_begin -- CRYPT_STRING_*
#define CRYPT_STRING_BASE64HEADER 0x00000000 #define CRYPT_STRING_BASE64HEADER 0x00000000
#define CRYPT_STRING_BASE64 0x00000001 #define CRYPT_STRING_BASE64 0x00000001
#define CRYPT_STRING_BINARY 0x00000002 #define CRYPT_STRING_BINARY 0x00000002
#define CRYPT_STRING_BASE64REQUESTHEADER 0x00000003 #define CRYPT_STRING_BASE64REQUESTHEADER 0x00000003
#define CRYPT_STRING_HEX 0x00000004 #define CRYPT_STRING_HEX 0x00000004
#define CRYPT_STRING_HEXASCII 0x00000005 #define CRYPT_STRING_HEXASCII 0x00000005
#define CRYPT_STRING_BASE64_ANY 0x00000006 #define CRYPT_STRING_BASE64_ANY 0x00000006
#define CRYPT_STRING_ANY 0x00000007 #define CRYPT_STRING_ANY 0x00000007
#define CRYPT_STRING_HEX_ANY 0x00000008 #define CRYPT_STRING_HEX_ANY 0x00000008
#define CRYPT_STRING_BASE64X509CRLHEADER 0x00000009 #define CRYPT_STRING_BASE64X509CRLHEADER 0x00000009
#define CRYPT_STRING_HEXADDR 0x0000000a #define CRYPT_STRING_HEXADDR 0x0000000a
#define CRYPT_STRING_HEXASCIIADDR 0x0000000b #define CRYPT_STRING_HEXASCIIADDR 0x0000000b
#define CRYPT_STRING_HEXRAW 0x0000000c #define CRYPT_STRING_HEXRAW 0x0000000c
#define CRYPT_STRING_BASE64URI 0x0000000d
#define CRYPT_STRING_PERCENTESCAPE 0x08000000 // base64 formats only
#define CRYPT_STRING_HASHDATA 0x10000000 #define CRYPT_STRING_HASHDATA 0x10000000
#define CRYPT_STRING_STRICT 0x20000000 #define CRYPT_STRING_STRICT 0x20000000
#define CRYPT_STRING_NOCRLF 0x40000000 #define CRYPT_STRING_NOCRLF 0x40000000
#define CRYPT_STRING_NOCR 0x80000000 #define CRYPT_STRING_NOCR 0x80000000
// certenrolld_end // certenrolld_end
// CryptBinaryToString uses the following flags // CryptBinaryToString uses the following flags
// CRYPT_STRING_BASE64HEADER - base64 format with certificate begin // CRYPT_STRING_BASE64HEADER - base64 format with certificate begin
// and end headers // and end headers
// CRYPT_STRING_BASE64 - only base64 without headers // CRYPT_STRING_BASE64 - only base64 without headers
skipping to change at line 19775 skipping to change at line 20562
// CRYPT_USER_PROTECTED - (see documentation on CryptImportKey) // CRYPT_USER_PROTECTED - (see documentation on CryptImportKey)
// CRYPT_MACHINE_KEYSET - used to force the private key to be stored in the // CRYPT_MACHINE_KEYSET - used to force the private key to be stored in the
// the local machine and not the current user. // the local machine and not the current user.
// CRYPT_USER_KEYSET - used to force the private key to be stored in the // CRYPT_USER_KEYSET - used to force the private key to be stored in the
// the current user and not the local machine, even if // the current user and not the local machine, even if
// the pfx blob specifies that it should go into local // the pfx blob specifies that it should go into local
// machine. // machine.
// PKCS12_INCLUDE_EXTENDED_PROPERTIES - used to import all extended // PKCS12_INCLUDE_EXTENDED_PROPERTIES - used to import all extended
// properties that were saved with CertExportCertStore() // properties that were saved with CertExportCertStore()
// using the same flag. // using the same flag.
//
// PKCS12_ONLY_CERTIFICATES - the returned store only contains certificates.
// Private keys aren't decrypted or imported.
// If the certificates weren't encrypted, then,
// we won't use a password to decrypt. Otherwise,
// will do normal password decryption.
// For certificates having an associated private
// key, we add the CERT_KEY_PROV_INFO_PROP_ID.
// The KeyProvInfo will have the following special
// values:
// dwProvType = 0
// pwszProvName = L"PfxProvider"
// pwszProvName = L"PfxContainer"
//
// For not encrypted certificates, we won't use
// any password to do the MAC check. If a MAC
// check is necessary, then, PKCS12_NO_PERSIST_KEY
// option should be selected instead.
//
// PKCS12_ONLY_NOT_ENCRYPTED_CERTIFICATES - same as for PKCS12_ONLY_CERTIFICATE
S
// except, we won't fallback to
// using the password to decrypt.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
HCERTSTORE HCERTSTORE
WINAPI WINAPI
PFXImportCertStore( PFXImportCertStore(
_In_ CRYPT_DATA_BLOB* pPFX, _In_ CRYPT_DATA_BLOB* pPFX,
_In_ LPCWSTR szPassword, _In_ LPCWSTR szPassword,
_In_ DWORD dwFlags); _In_ DWORD dwFlags);
// dwFlags definitions for PFXImportCertStore // dwFlags definitions for PFXImportCertStore
//#define CRYPT_EXPORTABLE 0x00000001 // CryptImportKey dwFlags //#define CRYPT_EXPORTABLE 0x00000001 // CryptImportKey dwFlags
//#define CRYPT_USER_PROTECTED 0x00000002 // CryptImportKey dwFlags //#define CRYPT_USER_PROTECTED 0x00000002 // CryptImportKey dwFlags
//#define CRYPT_MACHINE_KEYSET 0x00000020 // CryptAcquireContext dwFlags //#define CRYPT_MACHINE_KEYSET 0x00000020 // CryptAcquireContext dwFlags
//#define CRYPT_USER_PROTECTED_STRONG 0x00100000
//#define PKCS12_INCLUDE_EXTENDED_PROPERTIES 0x10 //#define PKCS12_INCLUDE_EXTENDED_PROPERTIES 0x10
#define PKCS12_IMPORT_SILENT 0x00000040 #define PKCS12_IMPORT_SILENT 0x00000040
#define CRYPT_USER_KEYSET 0x00001000 #define CRYPT_USER_KEYSET 0x00001000
#define PKCS12_PREFER_CNG_KSP 0x00000100 // prefer using CNG KSP #define PKCS12_PREFER_CNG_KSP 0x00000100 // prefer using CNG KSP
#define PKCS12_ALWAYS_CNG_KSP 0x00000200 // always use CNG KSP #define PKCS12_ALWAYS_CNG_KSP 0x00000200 // always use CNG KSP
#define PKCS12_ONLY_CERTIFICATES 0x00000400
#define PKCS12_ONLY_NOT_ENCRYPTED_CERTIFICATES 0x00000800
#define PKCS12_ALLOW_OVERWRITE_KEY 0x00004000 // allow overwrite existing key #define PKCS12_ALLOW_OVERWRITE_KEY 0x00004000 // allow overwrite existing key
#define PKCS12_NO_PERSIST_KEY 0x00008000 // key will not be persisted #define PKCS12_NO_PERSIST_KEY 0x00008000 // key will not be persisted
#define PKCS12_IMPORT_RESERVED_MASK 0xffff0000 #define PKCS12_IMPORT_RESERVED_MASK 0xffff0000
#define PKCS12_OBJECT_LOCATOR_ALL_IMPORT_FLAGS \ #define PKCS12_OBJECT_LOCATOR_ALL_IMPORT_FLAGS \
( PKCS12_ALWAYS_CNG_KSP | \ ( PKCS12_ALWAYS_CNG_KSP | \
PKCS12_NO_PERSIST_KEY | \ PKCS12_NO_PERSIST_KEY | \
PKCS12_IMPORT_SILENT | \ PKCS12_IMPORT_SILENT | \
PKCS12_INCLUDE_EXTENDED_PROPERTIES ) PKCS12_INCLUDE_EXTENDED_PROPERTIES )
#define PKCS12_ONLY_CERTIFICATES_PROVIDER_TYPE 0
#define PKCS12_ONLY_CERTIFICATES_PROVIDER_NAME L"PfxProvider"
#define PKCS12_ONLY_CERTIFICATES_CONTAINER_NAME L"PfxContainer"
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// PFXIsPFXBlob // PFXIsPFXBlob
// //
// This function will try to decode the outer layer of the blob as a pfx // This function will try to decode the outer layer of the blob as a pfx
// blob, and if that works it will return TRUE, it will return FALSE otherwise // blob, and if that works it will return TRUE, it will return FALSE otherwise
// //
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
skipping to change at line 19859 skipping to change at line 20675
// in the pfx protected to the NCRYPT_DESCRIPTOR_HANDLE. On import, any // in the pfx protected to the NCRYPT_DESCRIPTOR_HANDLE. On import, any
// principal that is listed in NCRYPT_DESCRIPTOR_HANDLE can decrypt the // principal that is listed in NCRYPT_DESCRIPTOR_HANDLE can decrypt the
// password within the pfx and use it to descrypt the entire pfx. // password within the pfx and use it to descrypt the entire pfx.
// //
// If the password parameter is NULL or L"" and the // If the password parameter is NULL or L"" and the
// PKCS12_PROTECT_TO_DOMAIN_SIDS flag is set together with an // PKCS12_PROTECT_TO_DOMAIN_SIDS flag is set together with an
// NCRYPT_DESCRIPTOR_HANDLE* for pvPara then a random password of length // NCRYPT_DESCRIPTOR_HANDLE* for pvPara then a random password of length
// 40 characters is chosen to protect the pfx. This password will be // 40 characters is chosen to protect the pfx. This password will be
// protected inside the pfx. // protected inside the pfx.
// //
// If the certificates don't need to be private, such as, the PFX is
// hosted on a file share accessed by IIS, then,
// the PKCS12_DISABLE_ENCRYPT_CERTIFICATES flag should be set.
//
// Note, OpenSSL and down level platforms support certificates that weren't
// encrypted.
//
// In Threshold the default was changed not to encrypt the certificates.
// The following registry value can be set to change the default to enable
// the encryption.
// HKLM\Software\Microsoft\Windows\CurrentVersion\PFX
// REG_DWORD EncryptCertificates
//
// The PKCS12_ENCRYPT_CERTIFICATES flag should be set to always
// encrypt the certificates.
//
// The dwFlags parameter may be set to any combination of // The dwFlags parameter may be set to any combination of
// EXPORT_PRIVATE_KEYS // EXPORT_PRIVATE_KEYS
// REPORT_NO_PRIVATE_KEY // REPORT_NO_PRIVATE_KEY
// REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY // REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY
// PKCS12_EXPORT_SILENT // PKCS12_EXPORT_SILENT
// PKCS12_INCLUDE_EXTENDED_PROPERTIES // PKCS12_INCLUDE_EXTENDED_PROPERTIES
// PKCS12_PROTECT_TO_DOMAIN_SIDS // PKCS12_PROTECT_TO_DOMAIN_SIDS
// PKCS12_DISABLE_ENCRYPT_CERTIFICATES or PKCS12_ENCRYPT_CERTIFICATES
// PKCS12_EXPORT_ECC_CURVE_PARAMETERS
// PKCS12_EXPORT_ECC_CURVE_OID
// //
// The encoded PFX blob is returned in *pPFX. If pPFX->pbData is NULL upon // The encoded PFX blob is returned in *pPFX. If pPFX->pbData is NULL upon
// input, this is a length only calculation, whereby, pPFX->cbData is updated // input, this is a length only calculation, whereby, pPFX->cbData is updated
// with the number of bytes required for the encoded blob. Otherwise, // with the number of bytes required for the encoded blob. Otherwise,
// the memory pointed to by pPFX->pbData is updated with the encoded bytes // the memory pointed to by pPFX->pbData is updated with the encoded bytes
// and pPFX->cbData is updated with the encoded byte length. // and pPFX->cbData is updated with the encoded byte length.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
skipping to change at line 19890 skipping to change at line 20725
_In_ void* pvPara, _In_ void* pvPara,
_In_ DWORD dwFlags); _In_ DWORD dwFlags);
// dwFlags definitions for PFXExportCertStoreEx // dwFlags definitions for PFXExportCertStoreEx
#define REPORT_NO_PRIVATE_KEY 0x0001 #define REPORT_NO_PRIVATE_KEY 0x0001
#define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x0002 #define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x0002
#define EXPORT_PRIVATE_KEYS 0x0004 #define EXPORT_PRIVATE_KEYS 0x0004
#define PKCS12_INCLUDE_EXTENDED_PROPERTIES 0x0010 #define PKCS12_INCLUDE_EXTENDED_PROPERTIES 0x0010
#define PKCS12_PROTECT_TO_DOMAIN_SIDS 0x0020 #define PKCS12_PROTECT_TO_DOMAIN_SIDS 0x0020
#define PKCS12_EXPORT_SILENT 0x0040 #define PKCS12_EXPORT_SILENT 0x0040
#define PKCS12_DISABLE_ENCRYPT_CERTIFICATES 0x0100
#define PKCS12_ENCRYPT_CERTIFICATES 0x0200
#define PKCS12_EXPORT_ECC_CURVE_PARAMETERS 0x1000
#define PKCS12_EXPORT_ECC_CURVE_OID 0x2000
#define PKCS12_EXPORT_RESERVED_MASK 0xffff0000 #define PKCS12_EXPORT_RESERVED_MASK 0xffff0000
// Registry path to the PFX configuration local machine subkey
#define PKCS12_CONFIG_REGPATH \
L"Software\\Microsoft\\Windows\\CurrentVersion\\PFX"
// The default is not to encrypt the certificates included in the PFX.
// The following is a REG_DWORD. It should be set to a nonzero value
// to change the default to enable encrypting the certificates.
#define PKCS12_ENCRYPT_CERTIFICATES_VALUE_NAME \
L"EncryptCertificates"
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// PFXExportCertStore // PFXExportCertStore
// //
// Export the certificates and private keys referenced in the passed-in store // Export the certificates and private keys referenced in the passed-in store
// //
// This is an old API kept for compatibility with IE4 clients. New applications // This is an old API kept for compatibility with IE4 clients. New applications
// should call the above PfxExportCertStoreEx for enhanced security. // should call the above PfxExportCertStoreEx for enhanced security.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
BOOL BOOL
WINAPI WINAPI
PFXExportCertStore( PFXExportCertStore(
_In_ HCERTSTORE hStore, _In_ HCERTSTORE hStore,
_Inout_ CRYPT_DATA_BLOB* pPFX, _Inout_ CRYPT_DATA_BLOB* pPFX,
_In_ LPCWSTR szPassword, _In_ LPCWSTR szPassword,
_In_ DWORD dwFlags); _In_ DWORD dwFlags);
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
//+========================================================================= //+=========================================================================
// APIs to get a non-blocking, time valid OCSP response for // APIs to get a non-blocking, time valid OCSP response for
// a server certificate chain. // a server certificate chain.
// //
// Normally, this OCSP response will be included along with the server // Normally, this OCSP response will be included along with the server
// certificate in a message returned to the client. As a result only the // certificate in a message returned to the client. As a result only the
// server should need to contact the OCSP responser for its certificate. // server should need to contact the OCSP responser for its certificate.
//========================================================================== //==========================================================================
#if (NTDDI_VERSION >= NTDDI_VISTA) #if (NTDDI_VERSION >= NTDDI_VISTA)
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Server OCSP response handle. // Server OCSP response handle.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
typedef VOID *HCERT_SERVER_OCSP_RESPONSE; typedef VOID *HCERT_SERVER_OCSP_RESPONSE;
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Server OCSP response context.
//--------------------------------------------------------------------------
typedef struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT
CERT_SERVER_OCSP_RESPONSE_CONTEXT,
*PCERT_SERVER_OCSP_RESPONSE_CONTEXT;
typedef const CERT_SERVER_OCSP_RESPONSE_CONTEXT
*PCCERT_SERVER_OCSP_RESPONSE_CONTEXT;
struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT {
DWORD cbSize;
BYTE *pbEncodedOcspResponse;
DWORD cbEncodedOcspResponse;
};
//+-------------------------------------------------------------------------
// Server OCSP response update callback
//
// If CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_WRITE_FLAG has been enabled
// then dwWriteOcspFileError will be set. Otherwise, always set to 0.
//--------------------------------------------------------------------------
typedef VOID (CALLBACK *PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK)(
_In_ PCCERT_CHAIN_CONTEXT pChainContext,
_In_ PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext,
_In_ PCCRL_CONTEXT pNewCrlContext,
_In_opt_ PCCRL_CONTEXT pPrevCrlContext,
_Inout_opt_ PVOID pvArg,
_In_ DWORD dwWriteOcspFileError
);
//+-------------------------------------------------------------------------
// Server OCSP response open parameters
//--------------------------------------------------------------------------
typedef struct _CERT_SERVER_OCSP_RESPONSE_OPEN_PARA {
DWORD cbSize;
DWORD dwFlags;
// If nonNULL, *pcbUsedSize is updated with subset of cbSize that was
// used. If OPEN_PARA isn't supported, then, *pcbUsedSize won't be
// updated.
DWORD *pcbUsedSize;
// If nonNULL, the OCSP response is either read from or written to
// this directory. The CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_READ_FLAG
// dwFlags must be set to read.
// The CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_WRITE_FLAG dwFlags must be
// set to write. Its an ERROR_INVALID_PARAMETER error to set both dwFlags.
//
// The format of the OCSP response file name:
// <ASCII HEX ServerCert SHA1 Thumbprint>".ocsp"
PWSTR pwszOcspDirectory;
// If nonNULL, the callback is called whenever the OCSP response is
// updated. Note, the updated OCSP response might not be time valid.
PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK pfnUpdateCallback;
PVOID pvUpdateCallbackArg;
} CERT_SERVER_OCSP_RESPONSE_OPEN_PARA, *PCERT_SERVER_OCSP_RESPONSE_OPEN_PARA;
// Set either of these flags in the above dwFlags to use the
// pwszOcspDirectory.
#define CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_READ_FLAG 0x00000001
#define CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_WRITE_FLAG 0x00000002
//+-------------------------------------------------------------------------
// Open a handle to an OCSP response associated with a server certificate // Open a handle to an OCSP response associated with a server certificate
// chain. If the end certificate doesn't have an OCSP AIA URL, NULL is // chain. If the end certificate doesn't have an OCSP AIA URL, NULL is
// returned with LastError set to CRYPT_E_NOT_IN_REVOCATION_DATABASE. NULL // returned with LastError set to CRYPT_E_NOT_IN_REVOCATION_DATABASE. NULL
// will also be returned if unable to allocate memory or create system // will also be returned if unable to allocate memory or create system
// objects. // objects.
// //
// This API will try to retrieve an initial OCSP response before returning. // This API will try to retrieve an initial OCSP response before returning.
// This API will block during the retrieval. If unable to successfully // This API will block during the retrieval. If unable to successfully
// retrieve the first OCSP response, a non-NULL handle will still be returned // retrieve the first OCSP response, a non-NULL handle will still be returned
// if not one of the error cases mentioned above. // if not one of the error cases mentioned above.
skipping to change at line 19947 skipping to change at line 20865
// return immediately without making the initial synchronous retrieval. // return immediately without making the initial synchronous retrieval.
// //
// A background thread is created that will pre-fetch time valid // A background thread is created that will pre-fetch time valid
// OCSP responses. // OCSP responses.
// //
// The input chain context will be AddRef'ed and not freed until // The input chain context will be AddRef'ed and not freed until
// the returned handle is closed. // the returned handle is closed.
// //
// CertCloseServerOcspResponse() must be called to close the returned // CertCloseServerOcspResponse() must be called to close the returned
// handle. // handle.
//
// pvReserved isn't currently used and must be set to NULL.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
HCERT_SERVER_OCSP_RESPONSE HCERT_SERVER_OCSP_RESPONSE
WINAPI WINAPI
CertOpenServerOcspResponse( CertOpenServerOcspResponse(
_In_ PCCERT_CHAIN_CONTEXT pChainContext, _In_ PCCERT_CHAIN_CONTEXT pChainContext,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Reserved_ LPVOID pvReserved _In_opt_ PCERT_SERVER_OCSP_RESPONSE_OPEN_PARA pOpenPara
); );
// Set this flag to return immediately without making the initial // Set this flag to return immediately without making the initial
// synchronous retrieval // synchronous retrieval
#define CERT_SERVER_OCSP_RESPONSE_ASYNC_FLAG 0x00000001 #define CERT_SERVER_OCSP_RESPONSE_ASYNC_FLAG 0x00000001
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// AddRef a HCERT_SERVER_OCSP_RESPONSE returned by // AddRef a HCERT_SERVER_OCSP_RESPONSE returned by
// CertOpenServerOcspResponse(). Each Open and AddRef requires a // CertOpenServerOcspResponse(). Each Open and AddRef requires a
// corresponding CertCloseServerOcspResponse(). // corresponding CertCloseServerOcspResponse().
skipping to change at line 19990 skipping to change at line 20906
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
WINCRYPT32API WINCRYPT32API
VOID VOID
WINAPI WINAPI
CertCloseServerOcspResponse( CertCloseServerOcspResponse(
_In_opt_ HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse, _In_opt_ HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse,
_In_ DWORD dwFlags _In_ DWORD dwFlags
); );
//+------------------------------------------------------------------------- //+-------------------------------------------------------------------------
// Server OCSP response context.
//--------------------------------------------------------------------------
typedef struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT
CERT_SERVER_OCSP_RESPONSE_CONTEXT,
*PCERT_SERVER_OCSP_RESPONSE_CONTEXT;
typedef const CERT_SERVER_OCSP_RESPONSE_CONTEXT
*PCCERT_SERVER_OCSP_RESPONSE_CONTEXT;
struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT {
DWORD cbSize;
BYTE *pbEncodedOcspResponse;
DWORD cbEncodedOcspResponse;
};
//+-------------------------------------------------------------------------
// Get a time valid OCSP response context for the handle created for // Get a time valid OCSP response context for the handle created for
// the server certificate chain. // the server certificate chain.
// //
// This API won't block to retrieve the OCSP response. It will return // This API won't block to retrieve the OCSP response. It will return
// the current pre-fetched OCSP response. If a time valid OCSP response // the current pre-fetched OCSP response. If a time valid OCSP response
// isn't available, NULL will be returned with LAST_ERROR set to // isn't available, NULL will be returned with LAST_ERROR set to
// CRYPT_E_REVOCATION_OFFLINE. // CRYPT_E_REVOCATION_OFFLINE.
// //
// CertFreeServerOcspResponseContext() must be called to free the // CertFreeServerOcspResponseContext() must be called to free the
// returned OCSP response context. // returned OCSP response context.
skipping to change at line 20113 skipping to change at line 21014
_In_ LPCSTR lpszLogoOrBiometricType, _In_ LPCSTR lpszLogoOrBiometricType,
_In_ DWORD dwRetrievalFlags, _In_ DWORD dwRetrievalFlags,
_In_ DWORD dwTimeout, // milliseconds _In_ DWORD dwTimeout, // milliseconds
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Reserved_ void *pvReserved, _Reserved_ void *pvReserved,
_Outptr_result_bytebuffer_(*pcbData) BYTE **ppbData, // CryptMemFree() _Outptr_result_bytebuffer_(*pcbData) BYTE **ppbData, // CryptMemFree()
_Out_ DWORD *pcbData, _Out_ DWORD *pcbData,
_Outptr_opt_result_maybenull_ LPWSTR *ppwszMimeType // CryptMemFree( ) _Outptr_opt_result_maybenull_ LPWSTR *ppwszMimeType // CryptMemFree( )
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON
E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#pragma region Application Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
// Predefined Logotypes // Predefined Logotypes
#define CERT_RETRIEVE_ISSUER_LOGO ((LPCSTR) 1) #define CERT_RETRIEVE_ISSUER_LOGO ((LPCSTR) 1)
#define CERT_RETRIEVE_SUBJECT_LOGO ((LPCSTR) 2) #define CERT_RETRIEVE_SUBJECT_LOGO ((LPCSTR) 2)
#define CERT_RETRIEVE_COMMUNITY_LOGO ((LPCSTR) 3) #define CERT_RETRIEVE_COMMUNITY_LOGO ((LPCSTR) 3)
// Predefined Biometric types // Predefined Biometric types
#define CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE ((LPCSTR) 1000) #define CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE ((LPCSTR) 1000)
#define CERT_RETRIEVE_BIOMETRIC_PICTURE_TYPE \ #define CERT_RETRIEVE_BIOMETRIC_PICTURE_TYPE \
(CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE + CERT_BIOMETRIC_PICTURE_TYPE) (CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE + CERT_BIOMETRIC_PICTURE_TYPE)
skipping to change at line 20474 skipping to change at line 21382
const BYTE *pbData, const BYTE *pbData,
DWORD cbData, DWORD cbData,
_In_opt_ HCERTSTORE hAdditionalStore, _In_opt_ HCERTSTORE hAdditionalStore,
_Outptr_ PCRYPT_TIMESTAMP_CONTEXT *ppTsContext, _Outptr_ PCRYPT_TIMESTAMP_CONTEXT *ppTsContext,
_Outptr_result_maybenull_ PCCERT_CONTEXT *ppTsSigner, _Outptr_result_maybenull_ PCCERT_CONTEXT *ppTsSigner,
_Out_opt_ HCERTSTORE *phStore _Out_opt_ HCERTSTORE *phStore
); );
#endif // (NTDDI_VERSION >= NTDDI_WIN7) #endif // (NTDDI_VERSION >= NTDDI_WIN7)
#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_PHONE_REST
RICTED | WINAPI_PARTITION_SYSTEM)
// //
// Object Locator Provider API // Object Locator Provider API
// //
#if (NTDDI_VERSION >= NTDDI_WIN8) #if (NTDDI_VERSION >= NTDDI_WIN8)
#define CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE 1 //ex. "HTTP/www .contoso.com" #define CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE 1 //ex. "HTTP/www .contoso.com"
#define CRYPT_OBJECT_LOCATOR_LAST_RESERVED_NAME_TYPE 32 #define CRYPT_OBJECT_LOCATOR_LAST_RESERVED_NAME_TYPE 32
#define CRYPT_OBJECT_LOCATOR_FIRST_RESERVED_USER_NAME_TYPE 33 #define CRYPT_OBJECT_LOCATOR_FIRST_RESERVED_USER_NAME_TYPE 33
#define CRYPT_OBJECT_LOCATOR_LAST_RESERVED_USER_NAME_TYPE 0x0000FFFF #define CRYPT_OBJECT_LOCATOR_LAST_RESERVED_USER_NAME_TYPE 0x0000FFFF
skipping to change at line 20683 skipping to change at line 21597
// will be passed back to each of the subsequent callback functions. // will be passed back to each of the subsequent callback functions.
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
_Success_(return != 0) _Success_(return != 0)
typedef BOOL (WINAPI *PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE)( typedef BOOL (WINAPI *PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE)(
_In_ PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH pfnFlush, _In_ PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH pfnFlush,
_In_ LPVOID pContext, _In_ LPVOID pContext,
_Out_ DWORD *pdwExpectedObjectCount, _Out_ DWORD *pdwExpectedObjectCount,
_Outptr_ PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE *ppFuncTable, _Outptr_ PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE *ppFuncTable,
_Outptr_result_maybenull_ void **ppPluginContext); _Outptr_result_maybenull_ void **ppPluginContext);
//
// If pTimeStamp is NULL or zero time, then, current time is used.
// For CERT_TIMESTAMP_HASH_USE_TYPE, current time is always used.
//
// If pSignerChainContext is NULL, then, checks if weak hash has
// been disabled for the more restrictive Third Party Chain. If TRUE
// is returned, then, this API must be called again with a nonNULL
// pSignerChainContext which might return FALSE for logging only or
// if this isn't a Third Party Chain and weak hash hasn't been disabled for
// all signers.
//
// For CERT_TIMESTAMP_HASH_USE_TYPE, this should be the file signer and
// not the timestamp chain signer.
//
// The following WinVerifyTrust dwProvFlags map to the corresponding
// dwChainFlags:
// WTD_DISABLE_MD2_MD4 -> CERT_CHAIN_DISABLE_MD2_MD4
// WTD_MOTW -> CERT_CHAIN_HAS_MOTW
//
WINCRYPT32API
BOOL
WINAPI
CertIsWeakHash(
_In_ DWORD dwHashUseType,
_In_ LPCWSTR pwszCNGHashAlgid,
_In_ DWORD dwChainFlags,
_In_opt_ PCCERT_CHAIN_CONTEXT pSignerChainContext,
_In_opt_ LPFILETIME pTimeStamp,
_In_opt_ LPCWSTR pwszFileName
);
typedef WINCRYPT32API BOOL (WINAPI *PFN_CERT_IS_WEAK_HASH)(
_In_ DWORD dwHashUseType,
_In_ LPCWSTR pwszCNGHashAlgid,
_In_ DWORD dwChainFlags,
_In_opt_ PCCERT_CHAIN_CONTEXT pSignerChainContext,
_In_opt_ LPFILETIME pTimeStamp,
_In_opt_ LPCWSTR pwszFileName
);
//
// Hash Use Types
//
#define CERT_FILE_HASH_USE_TYPE 1
#define CERT_TIMESTAMP_HASH_USE_TYPE 2
#endif // (NTDDI_VERSION >= NTDDI_WIN8) #endif // (NTDDI_VERSION >= NTDDI_WIN8)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHON E_RESTRICTED | WINAPI_PARTITION_SYSTEM) */
#pragma endregion #pragma endregion
#endif //!defined(_DDK_DRIVER_) #endif //!defined(_DDK_DRIVER_)
#ifdef __cplusplus #ifdef __cplusplus
} // Balance extern "C" above } // Balance extern "C" above
#endif #endif
#if defined (_MSC_VER) #if defined (_MSC_VER)
#if ( _MSC_VER >= 800 ) #if ( _MSC_VER >= 800 )
skipping to change at line 20696 skipping to change at line 21658
#pragma endregion #pragma endregion
#endif //!defined(_DDK_DRIVER_) #endif //!defined(_DDK_DRIVER_)
#ifdef __cplusplus #ifdef __cplusplus
} // Balance extern "C" above } // Balance extern "C" above
#endif #endif
#if defined (_MSC_VER) #if defined (_MSC_VER)
#if ( _MSC_VER >= 800 ) #if ( _MSC_VER >= 800 )
#if _MSC_VER >= 1200 #if _MSC_VER >= 1200
#pragma warning(pop) #pragma warning(pop)
#else #else
#pragma warning(default:4201) #pragma warning(default:4201)
#endif #endif
#endif #endif
#endif #endif
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
// //
// The following headers are refactored out of WinCrypt.h, // The following headers are refactored out of WinCrypt.h,
// reflecting the separate binaries. // reflecting the separate binaries.
// Applications which do not depend on all functionality of CRYPT32 etc., // Applications which do not depend on all functionality of CRYPT32 etc.,
// can link directly to smaller binaries using smaller headers also. // can link directly to smaller binaries using smaller headers also.
// //
#ifndef _WINCRYPT_NO_DPAPI #ifndef _WINCRYPT_NO_DPAPI
#include <dpapi.h> #include <dpapi.h>
skipping to change at line 20718 skipping to change at line 21678
// //
// The following headers are refactored out of WinCrypt.h, // The following headers are refactored out of WinCrypt.h,
// reflecting the separate binaries. // reflecting the separate binaries.
// Applications which do not depend on all functionality of CRYPT32 etc., // Applications which do not depend on all functionality of CRYPT32 etc.,
// can link directly to smaller binaries using smaller headers also. // can link directly to smaller binaries using smaller headers also.
// //
#ifndef _WINCRYPT_NO_DPAPI #ifndef _WINCRYPT_NO_DPAPI
#include <dpapi.h> #include <dpapi.h>
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#endif // __WINCRYPT_H__ #endif // __WINCRYPT_H__
 End of changes. 160 change blocks. 
154 lines changed or deleted 1188 lines changed or added


 winefs.h (6.3.9600.17415-Windows 8.1)   winefs.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 23 skipping to change at line 23
#ifndef __WINEFS_H__ #ifndef __WINEFS_H__
#define __WINEFS_H__ #define __WINEFS_H__
// winefs.h was not available at all pre-W2K // winefs.h was not available at all pre-W2K
#if (NTDDI_VERSION >= NTDDI_WIN2K) #if (NTDDI_VERSION >= NTDDI_WIN2K)
#if _MSC_VER > 1000 #if _MSC_VER > 1000
#pragma once #pragma once
#endif #endif
#if _MSC_VER >= 1200
#pragma warning(push)
#pragma warning(disable:4820) // padding added after data member
#endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#pragma region Desktop Family #pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#define WINEFS_SETUSERKEY_SET_CAPABILITIES 0x00000001 #define WINEFS_SETUSERKEY_SET_CAPABILITIES 0x00000001
//+----------------------------------------------------------------------------- ----/ //+----------------------------------------------------------------------------- ----/
skipping to change at line 167 skipping to change at line 172
} EFS_COMPATIBILITY_INFO, *PEFS_COMPATIBILITY_INFO; } EFS_COMPATIBILITY_INFO, *PEFS_COMPATIBILITY_INFO;
#endif // #if (NTDDI_VERSION >= NTDDI_WIN7) #endif // #if (NTDDI_VERSION >= NTDDI_WIN7)
#if (NTDDI_VERSION >= NTDDI_WINBLUE) #if (NTDDI_VERSION >= NTDDI_WINBLUE)
#define EFS_COMPATIBILITY_VERSION_NCRYPT_PROTECTOR 5 #define EFS_COMPATIBILITY_VERSION_NCRYPT_PROTECTOR 5
#endif // #if (NTDDI_VERSION >= NTDDI_WINBLUE) #endif // #if (NTDDI_VERSION >= NTDDI_WINBLUE)
#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
#define EFS_COMPATIBILITY_VERSION_PFILE_PROTECTOR 6
#define EFS_IS_DESCRIPTOR_VERSION(__v) \
( (__v == EFS_COMPATIBILITY_VERSION_NCRYPT_PROTECTOR) || \
(__v == EFS_COMPATIBILITY_VERSION_PFILE_PROTECTOR) )
#define EFS_SUBVER_UNKNOWN 0
#define EFS_EFS_SUBVER_EFS_CERT 1
#define EFS_PFILE_SUBVER_RMS 2
#define EFS_PFILE_SUBVER_APPX 3
typedef struct _EFS_VERSION_INFO {
DWORD EfsVersion;
DWORD SubVersion;
} EFS_VERSION_INFO, *PEFS_VERSION_INFO;
#define EFS_IS_APPX_VERSION(__v, __subV) \
( (__v == EFS_COMPATIBILITY_VERSION_PFILE_PROTECTOR) && \
(__subV == EFS_PFILE_SUBVER_APPX) )
#endif // #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
// EFS_(EN/DE)CRYPTION_STATUS_INFO was not available pre-LH // EFS_(EN/DE)CRYPTION_STATUS_INFO was not available pre-LH
#if (NTDDI_VERSION >= NTDDI_VISTA) #if (NTDDI_VERSION >= NTDDI_VISTA)
typedef struct _EFS_DECRYPTION_STATUS_INFO { typedef struct _EFS_DECRYPTION_STATUS_INFO {
DWORD dwDecryptionError; DWORD dwDecryptionError;
DWORD dwHashOffset; DWORD dwHashOffset;
DWORD cbHash; DWORD cbHash;
} EFS_DECRYPTION_STATUS_INFO, *PEFS_DECRYPTION_STATUS_INFO; } EFS_DECRYPTION_STATUS_INFO, *PEFS_DECRYPTION_STATUS_INFO;
skipping to change at line 252 skipping to change at line 283
DWORD dwEfsAcce ssType; DWORD dwEfsAcce ssType;
PENCRYPTION_CERTIFICATE_HASH_LIST pCertificatesAdded; PENCRYPTION_CERTIFICATE_HASH_LIST pCertificatesAdded;
PENCRYPTION_CERTIFICATE pEncryptionCertificate; PENCRYPTION_CERTIFICATE pEncryptionCertificate;
PEFS_RPC_BLOB pEfsStreamSignatu re; PEFS_RPC_BLOB pEfsStreamSignatu re;
} ENCRYPTED_FILE_METADATA_SIGNATURE, *PENCRYPTED_FILE_METADATA_SIGNATURE; } ENCRYPTED_FILE_METADATA_SIGNATURE, *PENCRYPTED_FILE_METADATA_SIGNATURE;
#endif // #if (NTDDI_VERSION >= NTDDI_VISTA) #endif // #if (NTDDI_VERSION >= NTDDI_VISTA)
//
// TODO Update this to NTDDI_WINBLUE when available.
//
#if (NTDDI_VERSION >= NTDDI_WIN8) #if (NTDDI_VERSION >= NTDDI_WIN8)
typedef struct _ENCRYPTION_PROTECTOR{ typedef struct _ENCRYPTION_PROTECTOR{
DWORD cbTotalLength; DWORD cbTotalLength;
SID * pUserSid; SID * pUserSid;
#ifdef MIDL_PASS #ifdef MIDL_PASS
[string] [string]
#endif // MIDL_PASS #endif // MIDL_PASS
LPWSTR lpProtectorDescriptor; LPWSTR lpProtectorDescriptor;
} ENCRYPTION_PROTECTOR, *PENCRYPTION_PROTECTOR; } ENCRYPTION_PROTECTOR, *PENCRYPTION_PROTECTOR;
skipping to change at line 445 skipping to change at line 472
#endif // #if (NTDDI_VERSION >= NTDDI_VISTA) #endif // #if (NTDDI_VERSION >= NTDDI_VISTA)
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#ifdef __cplusplus #ifdef __cplusplus
} // Balance extern "C" above } // Balance extern "C" above
#endif #endif
#if _MSC_VER >= 1200
#pragma warning(pop)
#endif
#endif // #if (NTDDI_VERSION >= NTDDI_WIN2K) #endif // #if (NTDDI_VERSION >= NTDDI_WIN2K)
#endif // __WINEFS_H__ #endif // __WINEFS_H__
 End of changes. 4 change blocks. 
4 lines changed or deleted 35 lines changed or added


 winreg.h (6.3.9600.17415-Windows 8.1)   winreg.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 29 skipping to change at line 29
#include <winapifamily.h> #include <winapifamily.h>
#include <apiset.h> #include <apiset.h>
#include <apisetcconv.h> #include <apisetcconv.h>
#include <minwindef.h> #include <minwindef.h>
#include <minwinbase.h> #include <minwinbase.h>
/* APISET_NAME: api-ms-win-core-registry-l1 */ /* APISET_NAME: api-ms-win-core-registry-l1 */
#if !defined(RC_INVOKED)
#ifndef _APISET_REGISTRY_VER #ifndef _APISET_REGISTRY_VER
#ifdef _APISET_MINWIN_VERSION #ifdef _APISET_TARGET_VERSION
#if _APISET_MINWIN_VERSION >= 0x0100 #if _APISET_TARGET_VERSION >= _APISET_TARGET_VERSION_WINTHRESHOLD
#define _APISET_REGISTRY_VER 0x0101
#elif _APISET_TARGET_VERSION >= _APISET_TARGET_VERSION_WIN8
#define _APISET_REGISTRY_VER 0x0100 #define _APISET_REGISTRY_VER 0x0100
#endif #endif
#endif #endif
#endif #endif
#endif // !defined(RC_INVOKED)
#ifdef _MAC #ifdef _MAC
#include <macwin32.h> #include <macwin32.h>
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#pragma region Desktop Family #if _MSC_VER >= 1200
#pragma warning(push)
#pragma warning(disable:4820) // padding added after data member
#endif
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#ifndef WINVER #ifndef WINVER
#define WINVER 0x0500 // version 5.0 #define WINVER 0x0500 // version 5.0
#endif /* !WINVER */ #endif /* !WINVER */
// //
// RRF - Registry Routine Flags (for RegGetValue) // RRF - Registry Routine Flags (for RegGetValue)
// //
#define RRF_RT_REG_NONE 0x00000001 // restrict type to REG_NONE (ot her data types will not return ERROR_SUCCESS) #define RRF_RT_REG_NONE 0x00000001 // restrict type to REG_NONE (ot her data types will not return ERROR_SUCCESS)
skipping to change at line 69 skipping to change at line 80
#define RRF_RT_REG_EXPAND_SZ 0x00000004 // restrict type to REG_EXPAND_SZ (ot her data types will not return ERROR_SUCCESS) (must specify RRF_NOEXPAND or RegG etValue will fail with ERROR_INVALID_PARAMETER) #define RRF_RT_REG_EXPAND_SZ 0x00000004 // restrict type to REG_EXPAND_SZ (ot her data types will not return ERROR_SUCCESS) (must specify RRF_NOEXPAND or RegG etValue will fail with ERROR_INVALID_PARAMETER)
#define RRF_RT_REG_BINARY 0x00000008 // restrict type to REG_BINARY (ot her data types will not return ERROR_SUCCESS) #define RRF_RT_REG_BINARY 0x00000008 // restrict type to REG_BINARY (ot her data types will not return ERROR_SUCCESS)
#define RRF_RT_REG_DWORD 0x00000010 // restrict type to REG_DWORD (ot her data types will not return ERROR_SUCCESS) #define RRF_RT_REG_DWORD 0x00000010 // restrict type to REG_DWORD (ot her data types will not return ERROR_SUCCESS)
#define RRF_RT_REG_MULTI_SZ 0x00000020 // restrict type to REG_MULTI_SZ (ot her data types will not return ERROR_SUCCESS) #define RRF_RT_REG_MULTI_SZ 0x00000020 // restrict type to REG_MULTI_SZ (ot her data types will not return ERROR_SUCCESS)
#define RRF_RT_REG_QWORD 0x00000040 // restrict type to REG_QWORD (ot her data types will not return ERROR_SUCCESS) #define RRF_RT_REG_QWORD 0x00000040 // restrict type to REG_QWORD (ot her data types will not return ERROR_SUCCESS)
#define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD) // restric t type to *32-bit* RRF_RT_REG_BINARY or RRF_RT_REG_DWORD (other data types will not return ERROR_SUCCESS) #define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD) // restric t type to *32-bit* RRF_RT_REG_BINARY or RRF_RT_REG_DWORD (other data types will not return ERROR_SUCCESS)
#define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD) // restric t type to *64-bit* RRF_RT_REG_BINARY or RRF_RT_REG_DWORD (other data types will not return ERROR_SUCCESS) #define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD) // restric t type to *64-bit* RRF_RT_REG_BINARY or RRF_RT_REG_DWORD (other data types will not return ERROR_SUCCESS)
#define RRF_RT_ANY 0x0000ffff // no type restriction #define RRF_RT_ANY 0x0000ffff // no type restriction
#if (_WIN32_WINNT >= _WIN32_WINNT_WINTHRESHOLD)
#define RRF_SUBKEY_WOW6464KEY 0x00010000 // when opening the subkey (if provid
ed) force open from the 64bit location (only one SUBKEY_WOW64* flag can be set o
r RegGetValue will fail with ERROR_INVALID_PARAMETER)
#define RRF_SUBKEY_WOW6432KEY 0x00020000 // when opening the subkey (if provid
ed) force open from the 32bit location (only one SUBKEY_WOW64* flag can be set o
r RegGetValue will fail with ERROR_INVALID_PARAMETER)
#define RRF_WOW64_MASK 0x00030000
#endif
#define RRF_NOEXPAND 0x10000000 // do not automatically expand enviro nment strings if value is of type REG_EXPAND_SZ #define RRF_NOEXPAND 0x10000000 // do not automatically expand enviro nment strings if value is of type REG_EXPAND_SZ
#define RRF_ZEROONFAILURE 0x20000000 // if pvData is not NULL, set content to all zeros on failure #define RRF_ZEROONFAILURE 0x20000000 // if pvData is not NULL, set content to all zeros on failure
// //
// Flags for RegLoadAppKey // Flags for RegLoadAppKey
// //
#define REG_PROCESS_APPKEY 0x00000001 #define REG_PROCESS_APPKEY 0x00000001
// //
// Flags for RegLoadMUIString // Flags for RegLoadMUIString
skipping to change at line 1033 skipping to change at line 1050
#else #else
#define RegUnLoadKey RegUnLoadKeyA #define RegUnLoadKey RegUnLoadKeyA
#endif // !UNICODE #endif // !UNICODE
// //
// Utils wrappers // Utils wrappers
// //
#if _WIN32_WINNT >= 0x0600 #if _WIN32_WINNT >= 0x0600
#if !defined(_CONTRACT_GEN) || (_APISET_REGISTRY_VER >= 0x0101)
WINADVAPI WINADVAPI
LSTATUS LSTATUS
APIENTRY APIENTRY
RegDeleteKeyValueA ( RegDeleteKeyValueA(
_In_ HKEY hKey, _In_ HKEY hKey,
_In_opt_ LPCSTR lpSubKey, _In_opt_ LPCSTR lpSubKey,
_In_opt_ LPCSTR lpValueName _In_opt_ LPCSTR lpValueName
); );
WINADVAPI WINADVAPI
LSTATUS LSTATUS
APIENTRY APIENTRY
RegDeleteKeyValueW ( RegDeleteKeyValueW(
_In_ HKEY hKey, _In_ HKEY hKey,
_In_opt_ LPCWSTR lpSubKey, _In_opt_ LPCWSTR lpSubKey,
_In_opt_ LPCWSTR lpValueName _In_opt_ LPCWSTR lpValueName
); );
#ifdef UNICODE #ifdef UNICODE
#define RegDeleteKeyValue RegDeleteKeyValueW #define RegDeleteKeyValue RegDeleteKeyValueW
#else #else
#define RegDeleteKeyValue RegDeleteKeyValueA #define RegDeleteKeyValue RegDeleteKeyValueA
#endif // !UNICODE #endif // !UNICODE
WINADVAPI WINADVAPI
LSTATUS LSTATUS
APIENTRY APIENTRY
RegSetKeyValueA ( RegSetKeyValueA(
_In_ HKEY hKey, _In_ HKEY hKey,
_In_opt_ LPCSTR lpSubKey, _In_opt_ LPCSTR lpSubKey,
_In_opt_ LPCSTR lpValueName, _In_opt_ LPCSTR lpValueName,
_In_ DWORD dwType, _In_ DWORD dwType,
_In_reads_bytes_opt_(cbData) LPCVOID lpData, _In_reads_bytes_opt_(cbData) LPCVOID lpData,
_In_ DWORD cbData _In_ DWORD cbData
); );
WINADVAPI WINADVAPI
LSTATUS LSTATUS
APIENTRY APIENTRY
RegSetKeyValueW ( RegSetKeyValueW(
_In_ HKEY hKey, _In_ HKEY hKey,
_In_opt_ LPCWSTR lpSubKey, _In_opt_ LPCWSTR lpSubKey,
_In_opt_ LPCWSTR lpValueName, _In_opt_ LPCWSTR lpValueName,
_In_ DWORD dwType, _In_ DWORD dwType,
_In_reads_bytes_opt_(cbData) LPCVOID lpData, _In_reads_bytes_opt_(cbData) LPCVOID lpData,
_In_ DWORD cbData _In_ DWORD cbData
); );
#ifdef UNICODE #ifdef UNICODE
#define RegSetKeyValue RegSetKeyValueW #define RegSetKeyValue RegSetKeyValueW
#else #else
#define RegSetKeyValue RegSetKeyValueA #define RegSetKeyValue RegSetKeyValueA
#endif // !UNICODE #endif // !UNICODE
#endif // !defined(_CONTRACT_GEN) || (_APISET_REGISTRY_VER >= 0x0101)
WINADVAPI WINADVAPI
LSTATUS LSTATUS
APIENTRY APIENTRY
RegDeleteTreeA( RegDeleteTreeA(
_In_ HKEY hKey, _In_ HKEY hKey,
_In_opt_ LPCSTR lpSubKey _In_opt_ LPCSTR lpSubKey
); );
WINADVAPI WINADVAPI
LSTATUS LSTATUS
skipping to change at line 1117 skipping to change at line 1142
APIENTRY APIENTRY
RegCopyTreeA ( RegCopyTreeA (
_In_ HKEY hKeySrc, _In_ HKEY hKeySrc,
_In_opt_ LPCSTR lpSubKey, _In_opt_ LPCSTR lpSubKey,
_In_ HKEY hKeyDest _In_ HKEY hKeyDest
); );
#ifndef UNICODE #ifndef UNICODE
#define RegCopyTree RegCopyTreeA #define RegCopyTree RegCopyTreeA
#endif // !UNICODE #endif // !UNICODE
#if ((_WIN32_WINNT >= 0x0502) && !defined(_CONTRACT_GEN)) || (_APISET_MINWIN_VER #endif // _WIN32_WINNT >= 0x0600
SION > 0x0100)
#if (_WIN32_WINNT >= 0x0502)
WINADVAPI WINADVAPI
LSTATUS LSTATUS
APIENTRY APIENTRY
RegGetValueA( RegGetValueA(
_In_ HKEY hkey, _In_ HKEY hkey,
_In_opt_ LPCSTR lpSubKey, _In_opt_ LPCSTR lpSubKey,
_In_opt_ LPCSTR lpValue, _In_opt_ LPCSTR lpValue,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Out_opt_ LPDWORD pdwType, _Out_opt_ LPDWORD pdwType,
_When_((dwFlags & 0x7F) == RRF_RT_REG_SZ || _When_((dwFlags & 0x7F) == RRF_RT_REG_SZ ||
(dwFlags & 0x7F) == RRF_RT_REG_EXPAND_SZ || (dwFlags & 0x7F) == RRF_RT_REG_EXPAND_SZ ||
(dwFlags & 0x7F) == (RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ) || (dwFlags & 0x7F) == (RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ) ||
*pdwType == REG_SZ || *pdwType == REG_SZ ||
*pdwType == REG_EXPAND_SZ, _Post_z_) *pdwType == REG_EXPAND_SZ, _Post_z_)
_When_((dwFlags & 0x7F) == RRF_RT_REG_MULTI_SZ || _When_((dwFlags & 0x7F) == RRF_RT_REG_MULTI_SZ ||
*pdwType == REG_MULTI_SZ, _Post_ _NullNull_terminated_) *pdwType == REG_MULTI_SZ, _Post_ _NullNull_terminated_)
_Out_writes_bytes_to_opt_(*pcbData,*pcbData) PVOID pvData, _Out_writes_bytes_to_opt_(*pcbData,*pcbData) PVOID pvData,
_Inout_opt_ LPDWORD pcbData _Inout_opt_ LPDWORD pcbData
); );
WINADVAPI WINADVAPI
LSTATUS LSTATUS
APIENTRY APIENTRY
RegGetValueW( RegGetValueW(
_In_ HKEY hkey, _In_ HKEY hkey,
_In_opt_ LPCWSTR lpSubKey, _In_opt_ LPCWSTR lpSubKey,
_In_opt_ LPCWSTR lpValue, _In_opt_ LPCWSTR lpValue,
_In_ DWORD dwFlags, _In_ DWORD dwFlags,
_Out_opt_ LPDWORD pdwType, _Out_opt_ LPDWORD pdwType,
_When_((dwFlags & 0x7F) == RRF_RT_REG_SZ || _When_((dwFlags & 0x7F) == RRF_RT_REG_SZ ||
(dwFlags & 0x7F) == RRF_RT_REG_EXPAND_SZ || (dwFlags & 0x7F) == RRF_RT_REG_EXPAND_SZ ||
(dwFlags & 0x7F) == (RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ) || (dwFlags & 0x7F) == (RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ) ||
*pdwType == REG_SZ || *pdwType == REG_SZ ||
*pdwType == REG_EXPAND_SZ, _Post_z_) *pdwType == REG_EXPAND_SZ, _Post_z_)
_When_((dwFlags & 0x7F) == RRF_RT_REG_MULTI_SZ || _When_((dwFlags & 0x7F) == RRF_RT_REG_MULTI_SZ ||
*pdwType == REG_MULTI_SZ, _Post_ _NullNull_terminated_) *pdwType == REG_MULTI_SZ, _Post_ _NullNull_terminated_)
_Out_writes_bytes_to_opt_(*pcbData,*pcbData) PVOID pvData, _Out_writes_bytes_to_opt_(*pcbData,*pcbData) PVOID pvData,
_Inout_opt_ LPDWORD pcbData _Inout_opt_ LPDWORD pcbData
); );
#ifdef UNICODE #ifdef UNICODE
#define RegGetValue RegGetValueW #define RegGetValue RegGetValueW
#else #else
#define RegGetValue RegGetValueA #define RegGetValue RegGetValueA
#endif // !UNICODE #endif // !UNICODE
#endif // (_WIN32_WINNT >= 0x0502) #endif // (_WIN32_WINNT >= 0x0502)
#if ((_WIN32_WINNT >= 0x0600) && !defined(_CONTRACT_GEN)) || (_APISET_MINWIN_VER SION > 0x0100) #if (_WIN32_WINNT >= 0x0600)
WINADVAPI WINADVAPI
LSTATUS LSTATUS
APIENTRY APIENTRY
RegCopyTreeW( RegCopyTreeW(
_In_ HKEY hKeySrc, _In_ HKEY hKeySrc,
_In_opt_ LPCWSTR lpSubKey, _In_opt_ LPCWSTR lpSubKey,
_In_ HKEY hKeyDest _In_ HKEY hKeyDest
); );
#ifdef UNICODE #ifdef UNICODE
#define RegCopyTree RegCopyTreeW #define RegCopyTree RegCopyTreeW
#endif #endif
#endif
WINADVAPI WINADVAPI
LSTATUS LSTATUS
APIENTRY APIENTRY
RegLoadMUIStringA( RegLoadMUIStringA(
_In_ HKEY hKey, _In_ HKEY hKey,
_In_opt_ LPCSTR pszValue, _In_opt_ LPCSTR pszValue,
_Out_writes_bytes_opt_(cbOutBuf) LPSTR pszOutBuf, _Out_writes_bytes_opt_(cbOutBuf) LPSTR pszOutBuf,
_In_ DWORD cbOutBuf, _In_ DWORD cbOutBuf,
_Out_opt_ LPDWORD pcbData, _Out_opt_ LPDWORD pcbData,
skipping to change at line 1367 skipping to change at line 1393
#define SHUTDOWN_FORCE_SELF 0x00000002 #define SHUTDOWN_FORCE_SELF 0x00000002
#define SHUTDOWN_RESTART 0x00000004 #define SHUTDOWN_RESTART 0x00000004
#define SHUTDOWN_POWEROFF 0x00000008 #define SHUTDOWN_POWEROFF 0x00000008
#define SHUTDOWN_NOREBOOT 0x00000010 #define SHUTDOWN_NOREBOOT 0x00000010
#define SHUTDOWN_GRACE_OVERRIDE 0x00000020 #define SHUTDOWN_GRACE_OVERRIDE 0x00000020
#define SHUTDOWN_INSTALL_UPDATES 0x00000040 #define SHUTDOWN_INSTALL_UPDATES 0x00000040
#define SHUTDOWN_RESTARTAPPS 0x00000080 #define SHUTDOWN_RESTARTAPPS 0x00000080
#define SHUTDOWN_SKIP_SVC_PRESHUTDOWN 0x00000100 #define SHUTDOWN_SKIP_SVC_PRESHUTDOWN 0x00000100
#define SHUTDOWN_HYBRID 0x00000200 #define SHUTDOWN_HYBRID 0x00000200
#define SHUTDOWN_RESTART_BOOTOPTIONS 0x00000400 #define SHUTDOWN_RESTART_BOOTOPTIONS 0x00000400
#define SHUTDOWN_SOFT_REBOOT 0x00000800
#define SHUTDOWN_MOBILE_UI 0x00001000
WINADVAPI WINADVAPI
DWORD DWORD
APIENTRY APIENTRY
InitiateShutdownA( InitiateShutdownA(
_In_opt_ LPSTR lpMachineName, _In_opt_ LPSTR lpMachineName,
_In_opt_ LPSTR lpMessage, _In_opt_ LPSTR lpMessage,
_In_ DWORD dwGracePeriod, _In_ DWORD dwGracePeriod,
_In_ DWORD dwShutdownFlags, _In_ DWORD dwShutdownFlags,
_In_ DWORD dwReason _In_ DWORD dwReason
skipping to change at line 1428 skipping to change at line 1456
_In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes, _In_opt_ CONST LPSECURITY_ATTRIBUTES lpSecurityAttributes,
_In_ DWORD Flags _In_ DWORD Flags
); );
#ifdef UNICODE #ifdef UNICODE
#define RegSaveKeyEx RegSaveKeyExW #define RegSaveKeyEx RegSaveKeyExW
#else #else
#define RegSaveKeyEx RegSaveKeyExA #define RegSaveKeyEx RegSaveKeyExA
#endif // !UNICODE #endif // !UNICODE
#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM)
#pragma endregion #pragma endregion
#if _MSC_VER >= 1200
#pragma warning(pop)
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // _WINREG_ #endif // _WINREG_
 End of changes. 24 change blocks. 
43 lines changed or deleted 78 lines changed or added


 winsafer.h (6.3.9600.17415-Windows 8.1)   winsafer.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 723 skipping to change at line 723
#define SRP_POLICY_EXE L"EXE" #define SRP_POLICY_EXE L"EXE"
#define SRP_POLICY_DLL L"DLL" #define SRP_POLICY_DLL L"DLL"
#define SRP_POLICY_MSI L"MSI" #define SRP_POLICY_MSI L"MSI"
#define SRP_POLICY_SCRIPT L"SCRIPT" #define SRP_POLICY_SCRIPT L"SCRIPT"
#define SRP_POLICY_SHELL L"SHELL" #define SRP_POLICY_SHELL L"SHELL"
#define SRP_POLICY_NOV2 L"IGNORESRPV2" #define SRP_POLICY_NOV2 L"IGNORESRPV2"
#define SRP_POLICY_APPX L"APPX" #define SRP_POLICY_APPX L"APPX"
#define SRP_POLICY_WLDPMSI L"WLDPMSI" #define SRP_POLICY_WLDPMSI L"WLDPMSI"
#define SRP_POLICY_WLDPSCRIPT L"WLDPSCRIPT" #define SRP_POLICY_WLDPSCRIPT L"WLDPSCRIPT"
#define SRP_POLICY_WLDPCONFIGCI L"WLDPCONFIGCI"
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion #pragma endregion
#endif #endif
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added


 winsvc.h (6.3.9600.17415-Windows 8.1)   winsvc.h (10.0.10586.63-Windows 10 1511 10586.494) 
skipping to change at line 35 skipping to change at line 35
// //
#if !defined(WINADVAPI) #if !defined(WINADVAPI)
#if !defined(_ADVAPI32_) #if !defined(_ADVAPI32_)
#define WINADVAPI DECLSPEC_IMPORT #define WINADVAPI DECLSPEC_IMPORT
#else #else
#define WINADVAPI #define WINADVAPI
#endif #endif
#endif #endif
#if _MSC_VER >= 1200
#pragma warning(push)
#pragma warning(disable:4820) /* padding added after data member */
#endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#pragma region Desktop Family #pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
// //
// Constants // Constants
// //
// //
// Service database names // Service database names
// //
#define SERVICES_ACTIVE_DATABASEW L"ServicesActive" #define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
skipping to change at line 110 skipping to change at line 115
#define SERVICE_CONTROL_NETBINDADD 0x00000007 #define SERVICE_CONTROL_NETBINDADD 0x00000007
#define SERVICE_CONTROL_NETBINDREMOVE 0x00000008 #define SERVICE_CONTROL_NETBINDREMOVE 0x00000008
#define SERVICE_CONTROL_NETBINDENABLE 0x00000009 #define SERVICE_CONTROL_NETBINDENABLE 0x00000009
#define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A #define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A
#define SERVICE_CONTROL_DEVICEEVENT 0x0000000B #define SERVICE_CONTROL_DEVICEEVENT 0x0000000B
#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C #define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C
#define SERVICE_CONTROL_POWEREVENT 0x0000000D #define SERVICE_CONTROL_POWEREVENT 0x0000000D
#define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E #define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E
#define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F #define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F
#define SERVICE_CONTROL_TIMECHANGE 0x00000010 #define SERVICE_CONTROL_TIMECHANGE 0x00000010
//#define SERVICE_CONTROL_USER_LOGOFF 0x00000011
#define SERVICE_CONTROL_TRIGGEREVENT 0x00000020 #define SERVICE_CONTROL_TRIGGEREVENT 0x00000020
//reserved for internal use 0x00000021
//reserved for internal use 0x00000050
// //
// Service State -- for CurrentState // Service State -- for CurrentState
// //
#define SERVICE_STOPPED 0x00000001 #define SERVICE_STOPPED 0x00000001
#define SERVICE_START_PENDING 0x00000002 #define SERVICE_START_PENDING 0x00000002
#define SERVICE_STOP_PENDING 0x00000003 #define SERVICE_STOP_PENDING 0x00000003
#define SERVICE_RUNNING 0x00000004 #define SERVICE_RUNNING 0x00000004
#define SERVICE_CONTINUE_PENDING 0x00000005 #define SERVICE_CONTINUE_PENDING 0x00000005
#define SERVICE_PAUSE_PENDING 0x00000006 #define SERVICE_PAUSE_PENDING 0x00000006
skipping to change at line 137 skipping to change at line 145
#define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002 #define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002
#define SERVICE_ACCEPT_SHUTDOWN 0x00000004 #define SERVICE_ACCEPT_SHUTDOWN 0x00000004
#define SERVICE_ACCEPT_PARAMCHANGE 0x00000008 #define SERVICE_ACCEPT_PARAMCHANGE 0x00000008
#define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010 #define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010
#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020 #define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020
#define SERVICE_ACCEPT_POWEREVENT 0x00000040 #define SERVICE_ACCEPT_POWEREVENT 0x00000040
#define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080 #define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080
#define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100 #define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100
#define SERVICE_ACCEPT_TIMECHANGE 0x00000200 #define SERVICE_ACCEPT_TIMECHANGE 0x00000200
#define SERVICE_ACCEPT_TRIGGEREVENT 0x00000400 #define SERVICE_ACCEPT_TRIGGEREVENT 0x00000400
#define SERVICE_ACCEPT_USER_LOGOFF 0x00000800
// reserved for internal use 0x00001000
// //
// Service Control Manager object specific access types // Service Control Manager object specific access types
// //
#define SC_MANAGER_CONNECT 0x0001 #define SC_MANAGER_CONNECT 0x0001
#define SC_MANAGER_CREATE_SERVICE 0x0002 #define SC_MANAGER_CREATE_SERVICE 0x0002
#define SC_MANAGER_ENUMERATE_SERVICE 0x0004 #define SC_MANAGER_ENUMERATE_SERVICE 0x0004
#define SC_MANAGER_LOCK 0x0008 #define SC_MANAGER_LOCK 0x0008
#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010 #define SC_MANAGER_QUERY_LOCK_STATUS 0x0010
#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020 #define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
skipping to change at line 307 skipping to change at line 317
// Service trigger types // Service trigger types
// //
#define SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL 1 #define SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL 1
#define SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY 2 #define SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY 2
#define SERVICE_TRIGGER_TYPE_DOMAIN_JOIN 3 #define SERVICE_TRIGGER_TYPE_DOMAIN_JOIN 3
#define SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT 4 #define SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT 4
#define SERVICE_TRIGGER_TYPE_GROUP_POLICY 5 #define SERVICE_TRIGGER_TYPE_GROUP_POLICY 5
#define SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT 6 #define SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT 6
#define SERVICE_TRIGGER_TYPE_CUSTOM_SYSTEM_STATE_CHANGE 7 #define SERVICE_TRIGGER_TYPE_CUSTOM_SYSTEM_STATE_CHANGE 7
#define SERVICE_TRIGGER_TYPE_CUSTOM 20 #define SERVICE_TRIGGER_TYPE_CUSTOM 20
#define SERVICE_TRIGGER_TYPE_AGGREGATE 30
// //
// Service trigger data types // Service trigger data types
// //
#define SERVICE_TRIGGER_DATA_TYPE_BINARY 1 #define SERVICE_TRIGGER_DATA_TYPE_BINARY 1
#define SERVICE_TRIGGER_DATA_TYPE_STRING 2 #define SERVICE_TRIGGER_DATA_TYPE_STRING 2
#define SERVICE_TRIGGER_DATA_TYPE_LEVEL 3 #define SERVICE_TRIGGER_DATA_TYPE_LEVEL 3
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY 4 #define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY 4
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL 5 #define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL 5
skipping to change at line 621 skipping to change at line 632
// //
// Trigger-specific information // Trigger-specific information
// //
typedef struct _SERVICE_TRIGGER typedef struct _SERVICE_TRIGGER
{ {
DWORD dwTriggerType; // One of SERVICE_TR IGGER_TYPE_* constants DWORD dwTriggerType; // One of SERVICE_TR IGGER_TYPE_* constants
DWORD dwAction; // One of SERVICE_TR IGGER_ACTION_* constants DWORD dwAction; // One of SERVICE_TR IGGER_ACTION_* constants
GUID * pTriggerSubtype; // Provider GUID if the trigger type is SERVICE_TRIGGER_TYPE_CUSTOM GUID * pTriggerSubtype; // Provider GUID if the trigger type is SERVICE_TRIGGER_TYPE_CUSTOM
// Device class inte rface GUID if the trigger type is // Device class inte rface GUID if the trigger type is
// SERVICE_TRIGGER_T YPE_DEVICE_INTERFACE_ARRIVAL // SERVICE_TRIGGER_T YPE_DEVICE_INTERFACE_ARRIVAL
// Aggregate identif ier GUID if type is aggregate.
#ifdef __midl #ifdef __midl
[range(0, 64)] [range(0, 64)]
#endif #endif
DWORD cDataItems; // Number of data it ems in pDataItems array DWORD cDataItems; // Number of data it ems in pDataItems array
#ifdef __midl #ifdef __midl
[size_is(cDataItems)] [size_is(cDataItems)]
#endif #endif
PSERVICE_TRIGGER_SPECIFIC_DATA_ITEM pDataItems; // Trigger specific d ata PSERVICE_TRIGGER_SPECIFIC_DATA_ITEM pDataItems; // Trigger specific d ata
} SERVICE_TRIGGER, *PSERVICE_TRIGGER; } SERVICE_TRIGGER, *PSERVICE_TRIGGER;
skipping to change at line 646 skipping to change at line 658
[range(0, 64)] [range(0, 64)]
#endif #endif
DWORD cTriggers; // Number of triggers in the pTriggers a rray DWORD cTriggers; // Number of triggers in the pTriggers a rray
#ifdef __midl #ifdef __midl
[size_is(cTriggers)] [size_is(cTriggers)]
#endif #endif
PSERVICE_TRIGGER pTriggers; // Array of triggers PSERVICE_TRIGGER pTriggers; // Array of triggers
PBYTE pReserved; // Reserved, must be NULL PBYTE pReserved; // Reserved, must be NULL
} SERVICE_TRIGGER_INFO, *PSERVICE_TRIGGER_INFO; } SERVICE_TRIGGER_INFO, *PSERVICE_TRIGGER_INFO;
#define SC_AGGREGATE_STORAGE_KEY L"System\\CurrentControlSet\\Control\\ServiceAg
gregatedEvents"
// //
// Preferred node information // Preferred node information
// //
typedef struct _SERVICE_PREFERRED_NODE_INFO { typedef struct _SERVICE_PREFERRED_NODE_INFO {
USHORT usPreferredNode; // Preferred node USHORT usPreferredNode; // Preferred node
BOOLEAN fDelete; // Delete the preferred node set ting BOOLEAN fDelete; // Delete the preferred node set ting
} SERVICE_PREFERRED_NODE_INFO, *LPSERVICE_PREFERRED_NODE_INFO; } SERVICE_PREFERRED_NODE_INFO, *LPSERVICE_PREFERRED_NODE_INFO;
// //
// Time change information // Time change information
skipping to change at line 1149 skipping to change at line 1163
_In_ DWORD cbBufSize, _In_ DWORD cbBufSize,
_Out_ LPDWORD pcbBytesNeeded, _Out_ LPDWORD pcbBytesNeeded,
_Out_ LPDWORD lpServicesReturned _Out_ LPDWORD lpServicesReturned
); );
#ifdef UNICODE #ifdef UNICODE
#define EnumDependentServices EnumDependentServicesW #define EnumDependentServices EnumDependentServicesW
#else #else
#define EnumDependentServices EnumDependentServicesA #define EnumDependentServices EnumDependentServicesA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
_Must_inspect_result_ _Must_inspect_result_
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
EnumServicesStatusA( EnumServicesStatusA(
_In_ SC_HANDLE hSCManager, _In_ SC_HANDLE hSCManager,
_In_ DWORD dwServiceType, _In_ DWORD dwServiceType,
_In_ DWORD dwServiceState, _In_ DWORD dwServiceState,
_Out_writes_bytes_opt_(cbBufSize) _Out_writes_bytes_opt_(cbBufSize)
LPENUM_SERVICE_STATUSA lpServices, LPENUM_SERVICE_STATUSA lpServices,
skipping to change at line 1185 skipping to change at line 1205
_Out_ LPDWORD pcbBytesNeeded, _Out_ LPDWORD pcbBytesNeeded,
_Out_ LPDWORD lpServicesReturned, _Out_ LPDWORD lpServicesReturned,
_Inout_opt_ LPDWORD lpResumeHandle _Inout_opt_ LPDWORD lpResumeHandle
); );
#ifdef UNICODE #ifdef UNICODE
#define EnumServicesStatus EnumServicesStatusW #define EnumServicesStatus EnumServicesStatusW
#else #else
#define EnumServicesStatus EnumServicesStatusA #define EnumServicesStatus EnumServicesStatusA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Must_inspect_result_ _Must_inspect_result_
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
EnumServicesStatusExA( EnumServicesStatusExA(
_In_ SC_HANDLE hSCManager, _In_ SC_HANDLE hSCManager,
_In_ SC_ENUM_TYPE InfoLevel, _In_ SC_ENUM_TYPE InfoLevel,
_In_ DWORD dwServiceType, _In_ DWORD dwServiceType,
_In_ DWORD dwServiceState, _In_ DWORD dwServiceState,
_Out_writes_bytes_opt_(cbBufSize) _Out_writes_bytes_opt_(cbBufSize)
skipping to change at line 1281 skipping to change at line 1307
_Out_writes_opt_(*lpcchBuffer) _Out_writes_opt_(*lpcchBuffer)
LPWSTR lpDisplayName, LPWSTR lpDisplayName,
_Inout_ LPDWORD lpcchBuffer _Inout_ LPDWORD lpcchBuffer
); );
#ifdef UNICODE #ifdef UNICODE
#define GetServiceDisplayName GetServiceDisplayNameW #define GetServiceDisplayName GetServiceDisplayNameW
#else #else
#define GetServiceDisplayName GetServiceDisplayNameA #define GetServiceDisplayName GetServiceDisplayNameA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINADVAPI WINADVAPI
SC_LOCK SC_LOCK
WINAPI WINAPI
LockServiceDatabase( LockServiceDatabase(
_In_ SC_HANDLE hSCManager _In_ SC_HANDLE hSCManager
); );
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
NotifyBootConfigStatus( NotifyBootConfigStatus(
_In_ BOOL BootAcceptable _In_ BOOL BootAcceptable
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Must_inspect_result_ _Must_inspect_result_
WINADVAPI WINADVAPI
SC_HANDLE SC_HANDLE
WINAPI WINAPI
OpenSCManagerA( OpenSCManagerA(
_In_opt_ LPCSTR lpMachineName, _In_opt_ LPCSTR lpMachineName,
_In_opt_ LPCSTR lpDatabaseName, _In_opt_ LPCSTR lpDatabaseName,
_In_ DWORD dwDesiredAccess _In_ DWORD dwDesiredAccess
); );
_Must_inspect_result_ _Must_inspect_result_
skipping to change at line 1415 skipping to change at line 1453
LPBYTE lpBuffer, LPBYTE lpBuffer,
_In_ DWORD cbBufSize, _In_ DWORD cbBufSize,
_Out_ LPDWORD pcbBytesNeeded _Out_ LPDWORD pcbBytesNeeded
); );
#ifdef UNICODE #ifdef UNICODE
#define QueryServiceConfig2 QueryServiceConfig2W #define QueryServiceConfig2 QueryServiceConfig2W
#else #else
#define QueryServiceConfig2 QueryServiceConfig2A #define QueryServiceConfig2 QueryServiceConfig2A
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
_Must_inspect_result_ _Must_inspect_result_
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
QueryServiceLockStatusA( QueryServiceLockStatusA(
_In_ SC_HANDLE hSCManager, _In_ SC_HANDLE hSCManager,
_Out_writes_bytes_opt_(cbBufSize) _Out_writes_bytes_opt_(cbBufSize)
LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus, LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus,
_In_ DWORD cbBufSize, _In_ DWORD cbBufSize,
_Out_ LPDWORD pcbBytesNeeded _Out_ LPDWORD pcbBytesNeeded
skipping to change at line 1443 skipping to change at line 1487
LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus, LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus,
_In_ DWORD cbBufSize, _In_ DWORD cbBufSize,
_Out_ LPDWORD pcbBytesNeeded _Out_ LPDWORD pcbBytesNeeded
); );
#ifdef UNICODE #ifdef UNICODE
#define QueryServiceLockStatus QueryServiceLockStatusW #define QueryServiceLockStatus QueryServiceLockStatusW
#else #else
#define QueryServiceLockStatus QueryServiceLockStatusA #define QueryServiceLockStatus QueryServiceLockStatusA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Must_inspect_result_ _Must_inspect_result_
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
QueryServiceObjectSecurity( QueryServiceObjectSecurity(
_In_ SC_HANDLE hService, _In_ SC_HANDLE hService,
_In_ SECURITY_INFORMATION dwSecurityInformation, _In_ SECURITY_INFORMATION dwSecurityInformation,
_Out_writes_bytes_opt_(cbBufSize) _Out_writes_bytes_opt_(cbBufSize)
PSECURITY_DESCRIPTOR lpSecurityDescriptor, PSECURITY_DESCRIPTOR lpSecurityDescriptor,
_In_ DWORD cbBufSize, _In_ DWORD cbBufSize,
skipping to change at line 1587 skipping to change at line 1637
_In_ DWORD dwNumServiceArgs, _In_ DWORD dwNumServiceArgs,
_In_reads_opt_(dwNumServiceArgs) _In_reads_opt_(dwNumServiceArgs)
LPCWSTR *lpServiceArgVectors LPCWSTR *lpServiceArgVectors
); );
#ifdef UNICODE #ifdef UNICODE
#define StartService StartServiceW #define StartService StartServiceW
#else #else
#define StartService StartServiceA #define StartService StartServiceA
#endif // !UNICODE #endif // !UNICODE
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY
STEM) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WINADVAPI WINADVAPI
BOOL BOOL
WINAPI WINAPI
UnlockServiceDatabase( UnlockServiceDatabase(
_In_ SC_LOCK ScLock _In_ SC_LOCK ScLock
); );
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
#if (NTDDI_VERSION >= NTDDI_VISTA) #if (NTDDI_VERSION >= NTDDI_VISTA)
WINADVAPI WINADVAPI
DWORD DWORD
WINAPI WINAPI
NotifyServiceStatusChangeA ( NotifyServiceStatusChangeA (
_In_ SC_HANDLE hService, _In_ SC_HANDLE hService,
_In_ DWORD dwNotifyMask, _In_ DWORD dwNotifyMask,
_In_ PSERVICE_NOTIFYA pNotifyBuffer _In_ PSERVICE_NOTIFYA pNotifyBuffer
); );
skipping to change at line 1653 skipping to change at line 1715
BOOL BOOL
WINAPI WINAPI
QueryServiceDynamicInformation ( QueryServiceDynamicInformation (
_In_ SERVICE_STATUS_HANDLE hServiceStatus, _In_ SERVICE_STATUS_HANDLE hServiceStatus,
_In_ DWORD dwInfoLevel, _In_ DWORD dwInfoLevel,
_Outptr_ PVOID * ppDynamicInfo _Outptr_ PVOID * ppDynamicInfo
); );
#endif // NTDDI_VERSION >= NTDDI_VISTA #endif // NTDDI_VERSION >= NTDDI_VISTA
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SY STEM) */
#pragma endregion #pragma endregion
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#if _MSC_VER >= 1200
#pragma warning(pop)
#endif
#endif // _WINSVC_ #endif // _WINSVC_
 End of changes. 18 change blocks. 
3 lines changed or deleted 74 lines changed or added

This html diff was produced by rfcdiff 1.41.