Home > Programming > Changes in the Windows v10.0.15021 SDK compared to Windows v10.0.14393 SDK (Part One)

Changes in the Windows v10.0.15021 SDK compared to Windows v10.0.14393 SDK (Part One)

February 14, 2017

This is a comparison of the differences between the Windows 10 SDK (v10.0.14393) which corresponds to Windows 10 version 1607 and the pre-release version (v10.0.15021) SDK which will correspond to Windows 10 version 1704 aka Windows 10 Creators Update. This will highlight any interesting new Windows API changes which are available in Windows 10 version 1704. Part one of this review will concentrate on the “shared” header file which contains the defines which are shared between Kernel mode and User mode. The upcoming second part of this blog post will look at the “um” folder differences which contain the user mode header files. I expect the second part of this review will be much bigger as there are just over 2000 files in the “um” directory compared to just 253 in the “shared” directory.

Ok, let’s dive into the changes:

  • A lot of the header files have reworked references to a new pre-processor define _M_HYBRID_X86_ARM64. This probably refers to the upcoming version of Windows which will run on ARM hardware but will include x86 emulation. For more information see https://arstechnica.com/information-technology/2016/11/x86-emulation-rumored-to-be-coming-to-windows-for-arm-in-late-2017/.
  • A lot of the header files have reworked references to the concept of SDK Family and Partitions which segregate the APIs available from the SDK header files as being available on certain Families e.g. Windows Phone, Windows Desktop, Window Server, WinRT etc.
  • apiset.h: Contains a number of new API_SET_* defines.
  • bthdef.h: Various pre-processor GUID defines have been reworked and added. New BDIF_LE_CONNECTED & BDIF_LE_CONNECTABLE defines.
  • Some of the changes in the new SDK reference the pre-processor value of NTDDI_WIN10_RS2 for of NTDDI_VERSION. This corresponds to Windows 10 codename “Redstone 2” aka Windows 10 version 1704.
  • bugcodes.h: New CLUSTER_CLUSPORT_STATUS_IO_TIMEOUT_LIVEDUMP, SECURE_FAULT_UNHANDLED, BUGCODE_NETADAPTER_DRIVER, PDC_PRIVILEGE_CHECK_LIVEDUMP, TTM_WATCHDOG_TIMEOUT, WIN32K_CALLOUT_WATCHDOG_LIVEDUMP, WIN32K_CALLOUT_WATCHDOG_BUGCHECK, FAST_ERESOURCE_PRECONDITION_VIOLATION, STORE_DATA_STRUCTURE_CORRUPTION, MANUALLY_INITIATED_POWER_BUTTON_HOLD, USER_MODE_HEALTH_MONITOR_LIVEDUMP & HYPERVISOR_WATCHDOG_TIMEOUT defines.
  • cfg.h: New DN_QUERY_REMOVE_PENDING & DN_QUERY_REMOVE_ACTIVE defines.
  • clfs.h: Minor spelling mistake fixes in a number of comments
  • common.ver: VER_LEGALCOPYRIGHT_YEARS & VER_LEGALCOPYRIGHT_STR_WITH_YEARS defines have been updated to 2017
  • d3dukmdt.h: New DXGKDDI_INTERFACE_VERSION_WDDM2_2, D3D_UMD_INTERFACE_VERSION_WDDM2_2_1* & IOCTL_GPUP_DRIVER_ESCAPE CTL_CODE defines. New GPUP_DRIVER_ESCAPE_INPUT, DXGKVGPU_ESCAPE_HEAD, DXGKVGPU_ESCAPE_READ_PCI_CONFIG, DXGKVGPU_ESCAPE_READ_VGPU_TYPE, D3DDDI_CREATEHWCONTEXTFLAGS, D3DDDI_CREATEHWQUEUEFLAGS & PeriodicMonitoredFence structs. New DXGKVGPU_ESCAPE_TYPE enum. New D3DDDI_members in D3DDDI_ALLOCATIONINFO2, D3DDDI_ALLOCATIONINFO2 & D3DDDI_ESCAPEFLAGS structs. New D3DDDI_COLOR_SPACE_YCBCR_STUDIO_GHLG_TOPLEFT_P2020, D3DDDI_COLOR_SPACE_YCBCR_FULL_GHLG_TOPLEFT_P2020 & D3DDDI_PERIODIC_MONITORED_FENCE enum values.
  • devguid.h: New GUID_DEVCLASS_HOLOGRAPHIC & GUID_DEVCLASS_NETDRIVER defines.
  • devioctl.h: New FILE_DEVICE_PERSISTENT_MEMORY, FILE_DEVICE_NVDIMM & FILE_DEVICE_HOLOGRAPHIC defines.
  • devpkey.h: New DEVPKEY_Device_ExtendedAddress & DEVPKEY_DeviceInterface_UnrestrictedAppCapabilities defines.
  • dxgdi.h/idl: New DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS defines.
  • dxgdi1_5.h/idl: New DXGI_OUTDUPL_FLAG enum.
  • dxgdi1_6.h/idl: New header files for DXGDI 1.6. Includes new IDXGIAdapter4 & IDXGIOutput6 interfaces.
  • dxgdicommon.h/idl: New header file including DXGI_RATIONAL & DXGI_SAMPLE_DESC structs & DXGI_COLOR_SPACE_TYPE enum moved from existing header file.
  • evntrace.h: New PrivateLoggerNotificationGuid define. New EVENT_TRACE_PROPERTIES_V2 & TRACE_PERIODIC_CAPTURE_STATE_INFO structs. New TracePeriodicCaptureStateListInfo & TracePeriodicCaptureStateInfo enum values.
  • fwpmtypes.h: New FWPM_FILTER_FLAG_SILENT_MODE define
  • fwpmtypes.h: New FWP_ACTION_BITMAP_INDEX_SET define. New member in FWPM_ACTION0 struct.
  • fwpstypes.h/idl: New FWPS_FILTER_FLAG_SILENT_MODE define.
  • fwptypes.h/idl: New enum values in FWP_DATA_TYPE. New FWP_MATCH_NOT_PREFIX enum value. New FWP_BITMAP_ARRAY64 struct. New FWP_BYTEMAP_ARRAY64_SIZE, FWP_BITMAP_ARRAY64_SIZE, FWP_ACTION_BITMAP_INDEX_SET & FWP_CONDITION_REAUTHORIZE_REASON_* defines.
  • fwpvi.h: New FwpmBitmapIndexGet & FwpmBitmapIndexFree defines.
  • hidusage.h: Various new HID_USAGE_* defines. These defines probably cover the new Surface Dial device, game, simulation, holographic controllers & digitizers.
  • hvsocket.h: New IOCTL_HVSOCKET_UPDATE_ADDRESS_INFO & HVSOCKET_ADDRESS_FLAG_PASSTHRU defines. New HVSOCKET_ADDRESS_INFO struct.
  • infstr.h: New INFSTR_SUBKEY_SOFTWARE & INFSTR_SOFTWAREVERSION_SECTION defines.
  • ipifcons.h: New IF_TYPE_XBOX_WIRELESS define.
  • ks.h: New KSSTREAM_HEADER_OPTIONSF_SECUREBUFFERTRANSFE define.
  • ks386.inc: New PS_MITIGATION_OPTION_*, STATUS_SET_CONTEXT_DENIED, FAST_FAIL_INVALID_CONTROL_STACK & FAST_FAIL_SET_CONTEXT_DENIED defines.
  • ksamd64.inc: New PS_MITIGATION_OPTION_*, STATUS_SET_CONTEXT_DENIED, FAST_FAIL_INVALID_CONTROL_STACK & FAST_FAIL_SET_CONTEXT_DENIED, KTHREAD_CONTROL_STACK_BIT, SrMsrFsBase, PcSfCode, PcSfVa, KgdtFlags1, KGDT_ENTRY_PRESENT, FAST_FAIL_GUARD_SS_FAILURE, KI_EXCEPTION_SECURE_FAULT, KI_EXCEPTION_SEGMENT_NOT_PRESENT, PdaGdt, PdaKernelGsBase & PsMsrFsBase defines.
  • ksarm.h: New IbMitigationOptionsMap, PS_MITIGATION_OPTION_*, STATUS_SET_CONTEXT_DENIED, FAST_FAIL_INVALID_CONTROL_STACK & FAST_FAIL_SET_CONTEXT_DENIED defines.
  • ksmedia.h: New KS_CAPTURE_ALLOC_SECURE_BUFFER, KSPROPERTY_CAMERACONTROL_EXTENDED_SECURE_MODE, MetadataId_CaptureStats, MetadataId_CameraExtrinsics, MetadataId_CameraIntrinsics & MetadataId_FrameIllumination enum values. New SECURE_BUFFER_INFO, KSCAMERA_METADATA_FRAMEILLUMINATION, KSCAMERA_METADATA_CAPTURESTATS, KSAUDIOMODULE_DESCRIPTOR, KSAUDIOMODULE_PROPERTY & KSAUDIOMODULE_NOTIFICATION structs. New STATIC_KS_SECURE_CAMERA_SCENARIO_ID, KS_SECURE_CAMERA_SCENARIO_ID, KSCAMERA_METADATA_CAPTURESTATS_FLAG_*, KSCAMERA_EXTENDEDPROP_SECUREMODE_DISABLED, KSCAMERA_EXTENDEDPROP_SECUREMODE_ENABLED, KSPROPSETID_AudioModule, AUDIOMODULE_MAX_DATA_SIZE, AUDIOMODULE_MAX_NAME_CCH_SIZE & KSNOTIFICATIONID_AudioModule defines. New KSPROPERTY_AUDIOMODULE enum.
  • kxamd64.inc: Various miscellaneous changes to X64 assembler code.
  • mstcpip.h: New TCPSTATE enum. New SIO_TCP_INFO define. New TCP_INFO_v0 struct.
  • netioapi.h: New MIB_IF_ENTRY_LEVEL struct. New GetIfEntry2Ex API. New MibIfTableNormalWithoutStatistics enum value.
  • netiodef.h: New IPV6_FULL_TRAFFIC_CLASS_MASK, IPV6_FULL_TRAFFIC_CLASS, ND_OPT_RDNSS_MIN_LEN & ND_OPT_DNSSL_MIN_LEN defines. New ND_OPT_RDNSS & ND_OPT_DNSSL enum values. New ND_OPTION_RDNSS, ND_OPTION_DNSSL structs. New parameters to Ipv6pGetVersionClassEcnFlow API.
  • nfcdtadev.h: The GUID_DEVINTERFACE_NFCDTA define has been updated.
  • ntddndis.h: New defines to support NDIS 6.7 functionality included with Windows 10 v1704
  • ntddscsi.h: New FIRMWARE_STATUS_* & FIRMWARE_REQUEST_FLAG_LAST_SEGMENT defines.
  • ntddstor.h: New IOCTL_STORAGE_GET_DEVICE_NUMBER_EX, STORAGE_DEVICE_FLAGS_*, STORAGE_CRYPTO_CAPABILITY_VERSION_1, STORAGE_CRYPTO_DESCRIPTOR_VERSION_1, STORAGE_ATTRIBUTE_PERF_SIZE_INDEPENDENT, STORAGE_DEVICE_NUMA_NODE_UNKNOWN & STORAGE_HW_FIRMWARE_REQUEST_FLAG_LAST_SEGMENT defines. New STORAGE_DEVICE_NUMBERS, STORAGE_DEVICE_NUMBER_EX, STORAGE_CRYPTO_KEY_SIZE, STORAGE_CRYPTO_CAPABILITY, STORAGE_CRYPTO_DESCRIPTOR & STORAGE_DEVICE_NUMA_PROPERTY structs. New BusTypeUfs, StorageAdapterCryptoProperty, StorageDeviceNumaProperty, StorageTierMediaTypeScm & DiskOpReasonMax enum values. New STORAGE_CRYPTO_ALGORITHM_ID & STORAGE_TIER_CLASS enums. New member of STORAGE_TIER struct.
  • ntddvdeo.h: New VideoRepaintDesktop, VideoUpdateCursor & VideoDisableMultiPlaneOverlay enum values.
  • ntdef.h: New DECLSPEC_CHPE_GUEST define. New WNF_STATE_NAME struct. New PRODUCT_ENTERPRISEG, PRODUCT_ENTERPRISEGN, PRODUCT_CLOUD & PRODUCT_CLOUDN. These later two defines refer to Windows 10 Cloud which is a new SKU of Windows 10. The author’s DtWinVer code as of v2.04 includes support for detecting this SKU of Window.
  • ntiologic.h: New IO_ERROR_DUMP_CREATION_ERROR define.
  • ntstatus.h: New STATUS_LOST_MODE_LOGON_RESTRICTION, STATUS_VRF_CFG_ENABLED, STATUS_ATTRIBUTE_NOT_PRESENT, STATUS_NOT_A_TIERED_VOLUME, STATUS_ALREADY_HAS_STREAM_ID, STATUS_JOB_NOT_EMPTY, STATUS_ALREADY_INITIALIZED, STATUS_STRICT_CFG_VIOLATION, STATUS_STRICT_RFG_VIOLATION, STATUS_RFG_ACCESS_VIOLATION, STATUS_RFG_ATTACHED_ACCESS_VIOLATION, STATUS_SET_CONTEXT_DENIED, STATUS_LPAC_ACCESS_DENIED, STATUS_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE, STATUS_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT, STATUS_FILE_SYSTEM_VIRTUALIZATION_BUSY, STATUS_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN, STATUS_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS, STATUS_CLOUD_FILE_METADATA_VERSION_NOT_SUPPORTED, STATUS_NOT_A_CLOUD_FILE, STATUS_CLOUD_FILE_NOT_IN_SYNC, STATUS_CLUSTER_CAM_TICKET_REPLAY_DETECTED, STATUS_FVE_OSV_KSR_NOT_ALLOWED, STATUS_PCP_WRONG_PARENT, STATUS_PCP_KEY_NOT_LOADED, STATUS_PCP_NO_KEY_CERTIFICATION, STATUS_PCP_KEY_NOT_FINALIZED, STATUS_PCP_ATTESTATION_CHALLENGE_NOT_SET, STATUS_PCP_NOT_PCR_BOUND, STATUS_PCP_KEY_ALREADY_FINALIZED, STATUS_PCP_KEY_USAGE_POLICY_NOT_SUPPORTED, STATUS_PCP_KEY_USAGE_POLICY_INVALID, STATUS_PCP_SOFT_KEY_ERROR, STATUS_PCP_KEY_NOT_AUTHENTICATED, STATUS_PCP_KEY_NOT_AIK, STATUS_PCP_KEY_NOT_SIGNING_KEY, STATUS_PCP_LOCKED_OUT, STATUS_PCP_CLAIM_TYPE_NOT_SUPPORTED, STATUS_PCP_TPM_VERSION_NOT_SUPPORTED, STATUS_PCP_BUFFER_LENGTH_MISMATCH, STATUS_HV_OPERATION_FAILED, STATUS_GDI_HANDLE_LEAK & STATUS_SPACES_REDIRECT defines. STATUS_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE define value has been updated.
  • rpcdce.h: New RpcServerInqBindingsEx API.
  • scsi.h: New UNKNOWN_OR_NO_DEVICE define.
  • sddl.h: New SDDL_ACCESS_FILTER, SDDL_TRUST_PROTECTED_FILTER & SDDL_ACE_COND_TOKEN_ATTRIBUTE_PREFIX defines.
  • sdkddkver.h: New defines for NTDDI_WIN10_RS2 which corresponds to Windows 10 v1704.
  • srb.h: New SRB_FUNCTION_CRYPTO_OPERATION & REQUEST_INFO_STREAM_FLAG defines.
  • Sspi.h: New SECBUFFER_DTLS_MTU & SEC_WINNT_AUTH_DATA_TYPE_CREDMAN_CERT defines. New SEC_DTLS_MTU struct.
  • tbs.h: New TBS_OWNERAUTH_TYPE_ENDORSEMENT_20 & TBS_OWNERAUTH_TYPE_STORAGE_20 defines.
  • TraceLoggingProvider.h: New TraceLoggingPackedDataEx defines.
  • usbspec.h: New USB_DEVICE_CAPABILITY_CONFIGURATION_SUMMARY define. New USB_DEVICE_CAPABILITY_CONFIGURATION_SUMMARY_DESCRIPTOR struct.
  • vhf.h: New members in VHF_CONFIG struct.
  • wdmguid.h: New GUID_SECURE_DRIVER_INTERFACE, GUID_SDEV_IDENTIFIER_INTERFACE, GUID_SCM_BUS_NVD_INTERFACE, GUID_SCM_BUS_LD_INTERFACE, GUID_SCM_PHYSICAL_NVDIMM_INTERFACE & GUID_PNP_EXTENDED_ADDRESS_INTERFACE defines.
  • winbio_err.h: New WINBIO_E_POLICY_PROTECTION_UNAVAILABLE, WINBIO_E_INSECURE_SENSOR, WINBIO_E_INVALID_BUFFER_ID, WINBIO_E_INVALID_BUFFER & WINBIO_E_TRUSTLET_INTEGRITY_FAIL defines.
  • winbio_types.h: New WINBIO_SECURE_BUFFER_HEADER_V1 & WINBIO_GESTURE_METADATA structs. New WINBIO_SECURE_BUFFER_TYPE_V1, WINBIO_FRAMEWORK_CHANGE_UNIT_STATUS, WINBIO_OPERATION_ENROLL_AUTHORIZE, WINBIO_OPERATION_ENROLL_REVOKE, WINBIO_OPERATION_GET_PROTECTION_POLICY, WINBIO_MATCH_TYPE, WINBIO_MATCH_SOFTWARE, WINBIO_MATCH_TRUSTED_EXECUTION_ENVIRONMENT, WINBIO_MATCH_ON_CHIP & WINBIO_OPERATION_NOTIFY_UNIT_STATUS_CHANGE defines. New member in WINBIO_EXTENDED_UNIT_STATUS, WINBIO_PROTECTION_POLICY struct.
  • windef.h: New DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 define. This new define relates to the new feature of Mixed Mode DPI scaling and new Per Monitor v2 support.
  • windot11.h: New DOT11_WFD_APS2_SERVICE_TYPE_MAX_LENGTH & DOT11_WFD_ASP2_INSTANCE_NAME_MAX_LENGTH defines.
  • winerror.h: New FACILITY_PIX, ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE, ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT, ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY, ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN, ERROR_GDI_HANDLE_LEAK, ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS, ERROR_CLOUD_FILE_METADATA_VERSION_NOT_SUPPORTED, ERROR_NOT_A_CLOUD_FILE, ERROR_CLOUD_FILE_NOT_IN_SYNC, ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT, ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT, ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT, ERROR_VRF_CFG_ENABLED, ERROR_STRICT_CFG_VIOLATION, ERROR_STRICT_RFG_VIOLATION, ERROR_RFG_ACCESS_VIOLATION, ERROR_SET_CONTEXT_DENIED, ERROR_LOST_MODE_LOGON_RESTRICTION, ERROR_ALREADY_HAS_STREAM_ID, ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED, ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED, ERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED, ERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED, ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED, ERROR_PRI_MERGE_INVALID_FILE_NAME, ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING, ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE, ERROR_PACKAGE_STAGING_ONHOLD, ERROR_INSTALL_INVALID_RELATED_SET_UPDATE, APPX_E_INVALID_CONTENTGROUPMAP, WER_E_TOO_HEAVY, TPM_E_PCP_WRONG_PARENT, TPM_E_KEY_NOT_LOADED, TPM_E_NO_KEY_CERTIFICATION, TPM_E_KEY_NOT_FINALIZED, TPM_E_ATTESTATION_CHALLENGE_NOT_SET, TPM_E_NOT_PCR_BOUND, TPM_E_KEY_ALREADY_FINALIZED, TPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED, TPM_E_KEY_USAGE_POLICY_INVALID, TPM_E_SOFT_KEY_ERROR, TPM_E_KEY_NOT_AUTHENTICATED, TPM_E_PCP_KEY_NOT_AIK, TPM_E_KEY_NOT_SIGNING_KEY, TPM_E_LOCKED_OUT, TPM_E_CLAIM_TYPE_NOT_SUPPORTED, TPM_E_VERSION_NOT_SUPPORTED, TPM_E_BUFFER_LENGTH_MISMATCH, FVE_E_OSV_KSR_NOT_ALLOWED, ERROR_HV_OPERATION_FAILED, ERROR_VMCOMPUTE_PROTOCOL_ERROR, STATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED, STATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED, STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED, STATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED, STATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS, ERROR_TIERING_FILE_IS_NOT_PINNED, ERROR_NOT_A_TIERED_VOLUME, ERROR_ATTRIBUTE_NOT_PRESENT, DXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION, DXGI_ERROR_NON_COMPOSITED_UI, DXGI_ERROR_CACHE_CORRUPT, DXGI_ERROR_CACHE_FULL, DXGI_ERROR_CACHE_HASH_COLLISION, DXGI_ERROR_ALREADY_EXISTS, UTC_E_TIME_TRIGGER_ON_START_INVALID, UTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION, UTC_E_TIME_TRIGGER_INVALID_TIME_RANGE, UTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE & UTC_E_BINARY_MISSING defines. The ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE define value has been updated.
  • winsmcrd.h: New SCARD_ATTR_VENDOR_SPECIFIC_INFO define.
  • wmistr.h: New WNODE_FLAG_VERSIONED_PROPERTIES define.
  • ws2ipdef.h: New PMTUD_STATE enum. New IP_MTU_DISCOVER, IP_RECVTOS, IP_RECVTTL, IPV6_MTU_DISCOVER & TCP_KEEPCNT defines.
  • WTypesbase.h/idl: New APPIDREGFLAGS_AAA_NO_IMPLICIT_ACTIVATE_AS_IU, APPIDREGFLAGS_RESERVED7 defines.

This review sets the stage for part two of the review where we review the “um” folder. Hopefully I would get around to this in the next couple of weeks. So far there has not been too much unexpected in the changes but all the interested changes will probably be in the “um” folder. Happy coding.

Advertisements
Categories: Programming
%d bloggers like this: