Today, we released a new Windows 10 Preview Build of the SDK to be used in conjunction with Windows 10 Insider Preview (Build 17025 or greater). The Preview SDK Build 17025 contains bug fixes and under development changes to the API surface area.
The Preview SDK can be downloaded from developer section on Windows Insider.
For feedback and updates to the known issues, please see the developer forum. For new developer feature requests, head over to our Windows Platform UserVoice.
Things to note:
- This build works in conjunction with previously released SDKs and Visual Studio 2017. You can install this SDK and still also continue to submit your apps that target Windows 10 Creators build or earlier to the store.
- The Windows SDK will now formally only be supported by Visual Studio 2017 and greater. You can download the Visual Studio 2017 here.
Known Issues
- Installation on an operating system that is not a Windows 10 Insider Preview build is not supported and may fail.
Breaking Changes
- New MIDL key words.
As a part of the “modernizing IDL” effort, several new keywords are added to the midlrt tool. These new keywords will cause build breaks if they are encountered in IDL files.
The new keywords are:
- event
- set
- get
- partial
- unsealed
- overridable
- protected
- importwinmd
If any of these keywords are used as an identifier, it will generate a build failure indicating a syntax error.
The error will be similar to:
1
>d:ossrconecorecomcombaseunittestastatestserverstestserver6idlremreleasetest.idl
(12) : error MIDL2025 : [msg]syntax error [context]: expecting a declarator or * near “)”
To fix this, modify the identifier in error to an “@” prefix in front of the identifier. That will cause MIDL to treat the offending element as an identifier instead of a keyword.
API Updates and Additions
When targeting new APIs, consider writing your app to be adaptive in order to run correctly on the widest number of Windows 10 devices. Please see Dynamically detecting features with API contracts (10 by 10) for more information.
The following APIs have been added to the platform since the release of 16299.
namespace Windows.ApplicationModel { public enum StartupTaskState { EnabledByPolicy = 4, } } namespace Windows.ApplicationModel.Background { public sealed class MobileBroadbandPcoDataChangeTrigger : IBackgroundTrigger } namespace Windows.ApplicationModel.Calls { public enum PhoneCallMedia { AudioAndRealTimeText = 2, } public sealed class VoipCallCoordinator { VoipPhoneCall RequestNewAppInitiatedCall(string context, string contactName, string contactNumber, string serviceName, VoipPhoneCallMedia media); VoipPhoneCall RequestNewIncomingCall(string context, string contactName, string contactNumber, Uri contactImage, string serviceName, Uri brandingImage, string callDetails, Uri ringtone, VoipPhoneCallMedia media, TimeSpan ringTimeout, string contactRemoteId); } public sealed class VoipPhoneCall { void NotifyCallAccepted(VoipPhoneCallMedia media); } } namespace Windows.ApplicationModel.UserActivities { public sealed class UserActivity { public UserActivity(); } public sealed class UserActivityChannel { public static void DisableAutoSessionCreation(); } public sealed class UserActivityVisualElements { string AttributionDisplayText { get; set; } } } namespace Windows.Devices.PointOfService { public sealed class BarcodeScannerReport { public BarcodeScannerReport(uint scanDataType, IBuffer scanData, IBuffer scanDataLabel); } public sealed class ClaimedBarcodeScanner : IClosable { void HideVideoPreview(); IAsyncOperation<bool> ShowVideoPreviewAsync(); } public sealed class UnifiedPosErrorData { public UnifiedPosErrorData(string message, UnifiedPosErrorSeverity severity, UnifiedPosErrorReason reason, uint extendedReason); } } namespace Windows.Globalization { public static class ApplicationLanguages { public static IVectorView<string> GetLanguagesForUser(User user); } public sealed class Language { LanguageLayoutDirection LayoutDirection { get; } } public enum LanguageLayoutDirection } namespace Windows.Graphics.Imaging { public enum BitmapPixelFormat { P010 = 104, } } namespace Windows.Management.Deployment { public sealed class PackageManager { IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> RequestAddPackageAsync(Uri packageUri, IIterable<Uri> dependencyPackageUris, DeploymentOptions deploymentOptions, PackageVolume targetVolume, IIterable<string> optionalPackageFamilyNames, IIterable<Uri> relatedPackageUris, IIterable<Uri> packageUrisToInstall); } } namespace Windows.Media.Capture { public sealed class CapturedFrame : IClosable, IContentTypeProvider, IInputStream, IOutputStream, IRandomAccessStream, IRandomAccessStreamWithContentType { BitmapPropertySet BitmapProperties { get; } CapturedFrameControlValues ControlValues { get; } } } namespace Windows.Media.Core { public sealed class MediaBindingEventArgs { void SetDownloadOperation(DownloadOperation downloadOperation); } public sealed class MediaSource : IClosable, IMediaPlaybackSource { DownloadOperation DownloadOperation { get; } public static MediaSource CreateFromDownloadOperation(DownloadOperation downloadOperation); } } namespace Windows.Media.Devices { public sealed class VideoDeviceController : IMediaDeviceController { VideoTemporalDenoisingControl VideoTemporalDenoisingControl { get; } } public sealed class VideoTemporalDenoisingControl public enum VideoTemporalDenoisingMode } namespace Windows.Media.MediaProperties { public static class MediaEncodingSubtypes { public static string P010 { get; } } public enum MediaPixelFormat { P010 = 2, } } namespace Windows.Networking.BackgroundTransfer { public sealed class DownloadOperation : IBackgroundTransferOperation, IBackgroundTransferOperationPriority { void MakeCurrentInTransferGroup(); } public sealed class UploadOperation : IBackgroundTransferOperation, IBackgroundTransferOperationPriority { void MakeCurrentInTransferGroup(); } } namespace Windows.Networking.Connectivity { public sealed class CellularApnContext { string ProfileName { get; set; } } public sealed class ConnectionProfileFilter { IReference<Guid> PurposeGuid { get; set; } } public sealed class WwanConnectionProfileDetails { WwanNetworkIPKind IPKind { get; } IVectorView<Guid> PurposeGuids { get; } } public enum WwanNetworkIPKind } namespace Windows.Networking.NetworkOperators { public sealed class MobileBroadbandAntennaSar { public MobileBroadbandAntennaSar(int antennaIndex, int sarBackoffIndex); } public sealed class MobileBroadbandModem { IAsyncOperation<MobileBroadbandPco> TryGetPcoAsync(); } public sealed class MobileBroadbandModemIsolation public sealed class MobileBroadbandPco public sealed class MobileBroadbandPcoDataChangeTriggerDetails } namespace Windows.Networking.Sockets { public sealed class ServerMessageWebSocket : IClosable public sealed class ServerMessageWebSocketControl public sealed class ServerMessageWebSocketInformation public sealed class ServerStreamWebSocket : IClosable public sealed class ServerStreamWebSocketInformation } namespace Windows.Security.Authentication.Identity.Provider { public enum SecondaryAuthenticationFactorAuthenticationMessage { CanceledByUser = 22, CenterHand = 23, ConnectionRequired = 20, DeviceUnavaliable = 28, MoveHandCloser = 24, MoveHandFarther = 25, PlaceHandAbove = 26, RecognitionFailed = 27, TimeLimitExceeded = 21, } } namespace Windows.Services.Maps { public sealed class MapRouteDrivingOptions { IReference<DateTime> DepartureTime { get; set; } } } namespace Windows.System { public sealed class AppActivationResult public sealed class AppDiagnosticInfo { IAsyncOperation<AppActivationResult> ActivateAsync(); } public sealed class AppResourceGroupInfo { IAsyncOperation<bool> TryResumeAsync(); IAsyncOperation<bool> TrySuspendAsync(); IAsyncOperation<bool> TryTerminateAsync(); } } namespace Windows.System.Diagnostics.DevicePortal { public sealed class DevicePortalConnection { ServerMessageWebSocket GetServerMessageWebSocketForRequest(HttpRequestMessage request); ServerMessageWebSocket GetServerMessageWebSocketForRequest(HttpRequestMessage request, SocketMessageType messageType, string protocol); ServerMessageWebSocket GetServerMessageWebSocketForRequest(HttpRequestMessage request, SocketMessageType messageType, string protocol, uint outboundBufferSizeInBytes, uint maxMessageSize, MessageWebSocketReceiveMode receiveMode); ServerStreamWebSocket GetServerStreamWebSocketForRequest(HttpRequestMessage request); ServerStreamWebSocket GetServerStreamWebSocketForRequest(HttpRequestMessage request, string protocol, uint outboundBufferSizeInBytes, bool noDelay); } public sealed class DevicePortalConnectionRequestReceivedEventArgs { bool IsWebSocketUpgradeRequest { get; } IVectorView<string> WebSocketProtocolsRequested { get; } Deferral GetDeferral(); } } namespace Windows.System.RemoteSystems { public static class KnownRemoteSystemCapabilities { public static string NearShare { get; } } } namespace Windows.System.UserProfile { public static class GlobalizationPreferences { public static GlobalizationPreferencesForUser GetForUser(User user); } public sealed class GlobalizationPreferencesForUser } namespace Windows.UI.Composition { public class CompositionLight : CompositionObject { bool IsEnabled { get; set; } } public sealed class Compositor : IClosable { string Comment { get; set; } } public sealed class PointLight : CompositionLight { Vector2 AttenuationCutoff { get; set; } } public sealed class SpotLight : CompositionLight { Vector2 AttenuationCutoff { get; set; } } } namespace Windows.UI.Composition.Core { public sealed class CompositorController : IClosable } namespace Windows.UI.Xaml { public sealed class BringIntoViewOptions { IReference<double> HorizontalAlignmentRatio { get; set; } Point Offset { get; set; } IReference<double> VerticalAlignmentRatio { get; set; } } public sealed class BringIntoViewRequestedEventArgs : RoutedEventArgs public sealed class EffectiveViewportChangedEventArgs public class FrameworkElement : UIElement { event TypedEventHandler<FrameworkElement, EffectiveViewportChangedEventArgs> EffectiveViewportChanged; void InvalidateViewport(); virtual bool IsViewport(); } public class UIElement : DependencyObject { public static RoutedEvent BringIntoViewRequestedEvent { get; } KeyboardAcceleratorPlacementMode KeyboardAcceleratorPlacementMode { get; set; } public static DependencyProperty KeyboardAcceleratorPlacementModeProperty { get; } DependencyObject KeyboardAcceleratorToolTipTarget { get; set; } public static DependencyProperty KeyboardAcceleratorToolTipTargetProperty { get; } DependencyObject KeyTipTarget { get; set; } public static DependencyProperty KeyTipTargetProperty { get; } event TypedEventHandler<UIElement, BringIntoViewRequestedEventArgs> BringIntoViewRequested; virtual void OnBringIntoViewRequested(BringIntoViewRequestedEventArgs e); virtual void OnKeyboardAcceleratorInvoked(KeyboardAcceleratorInvokedEventArgs args); } } namespace Windows.UI.Xaml.Automation.Peers { public sealed class AutoSuggestBoxAutomationPeer : FrameworkElementAutomationPeer, IInvokeProvider { void Invoke(); } } namespace Windows.UI.Xaml.Controls { public class AppBarButton : Button, ICommandBarElement, ICommandBarElement2 { string KeyboardAcceleratorText { get; set; } public static DependencyProperty KeyboardAcceleratorTextProperty { get; } AppBarButtonTemplateSettings TemplateSettings { get; } } public class AppBarToggleButton : ToggleButton, ICommandBarElement, ICommandBarElement2 { string KeyboardAcceleratorText { get; set; } public static DependencyProperty KeyboardAcceleratorTextProperty { get; } AppBarToggleButtonTemplateSettings TemplateSettings { get; } } public class MenuFlyoutItem : MenuFlyoutItemBase { string KeyboardAcceleratorText { get; set; } public static DependencyProperty KeyboardAcceleratorTextProperty { get; } MenuFlyoutItemTemplateSettings TemplateSettings { get; } } public class NavigationView : ContentControl { string PaneTitle { get; set; } public static DependencyProperty PaneTitleProperty { get; } event TypedEventHandler<NavigationView, object> PaneClosed; event TypedEventHandler<NavigationView, NavigationViewPaneClosingEventArgs> PaneClosing; event TypedEventHandler<NavigationView, object> PaneOpened; event TypedEventHandler<NavigationView, object> PaneOpening; } public sealed class NavigationViewPaneClosingEventArgs public enum WebViewPermissionType { Screen = 5, } } namespace Windows.UI.Xaml.Controls.Primitives { public sealed class AppBarButtonTemplateSettings : DependencyObject public sealed class AppBarToggleButtonTemplateSettings : DependencyObject public sealed class MenuFlyoutItemTemplateSettings : DependencyObject } namespace Windows.UI.Xaml.Input { public sealed class KeyboardAcceleratorInvokedEventArgs { KeyboardAccelerator KeyboardAccelerator { get; } } public enum KeyboardAcceleratorPlacementMode }
Source: Windows Blog
—