Skip to content

Conversation

@terrajobst
Copy link
Contributor

@terrajobst terrajobst commented Jul 10, 2020

No description provided.

@terrajobst terrajobst force-pushed the windows-specific-apis branch from e391b7d to 066cd2b Compare July 10, 2020 04:25
@terrajobst terrajobst changed the title windows specific apis Mark Windows-specific APIs Jul 10, 2020
* **X509Chain**
- `.ctor(IntPtr)`

### System.ServiceModel
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Someone familiar with WCF will need to comment on this section.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have zero api's which are Windows specific.

@terrajobst
Copy link
Contributor Author

FYI. I've done a run for .NET 5 and the latest Microsoft.Windows.Compatibility pack. Once I've merged the delta, I'll flip this back to api-ready-for-review.

@terrajobst terrajobst force-pushed the windows-specific-apis branch from 3909780 to 242ba7b Compare July 14, 2020 19:49
@terrajobst
Copy link
Contributor Author

@akoeplinger I've rebased out the Excel file 🙂


## Open Issues

* We should run the tool again .NET 5
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* We should run the tool again .NET 5
* We should run the tool against .NET 5

Comment on lines +281 to +392
### System.ServiceModel

* **ActionNotSupportedException**
- `.ctor(SerializationInfo, StreamingContext)`
- `.ctor(String, Exception)`
* **BasicHttpBinding**
- `.ctor()`
- `.ctor(BasicHttpSecurityMode)`
- `CreateBindingElements()`
* **BasicHttpsBinding**
- `.ctor()`
- `.ctor(BasicHttpsSecurityMode)`
- `CreateBindingElements()`
* **ChannelFactory**
- `.ctor(Binding, EndpointAddress)`
- `.ctor(ServiceEndpoint)`
- `.ctor(String)`
- `.ctor(String, EndpointAddress)`
- `ApplyConfiguration(String)`
- `CreateDescription()`
- `InitializeEndpoint(Binding, EndpointAddress)`
- `InitializeEndpoint(ServiceEndpoint)`
- `InitializeEndpoint(String, EndpointAddress)`
* **ChannelTerminatedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ClientBase**
- `.ctor()`
- `.ctor(String)`
- `.ctor(String, EndpointAddress)`
- `.ctor(String, String)`
* **ClientBase+ChannelBase**
- `EndInvoke(String, Object[], IAsyncResult)`
* **ClientCredentialsSecurityTokenManager**
- `CreateSecurityTokenAuthenticator(SecurityTokenRequirement, SecurityTokenResolver)`
- `CreateSecurityTokenProvider(SecurityTokenRequirement)`
- `CreateSecurityTokenSerializer(SecurityTokenVersion)`
* **CommunicationException**
- `.ctor(SerializationInfo, StreamingContext)`
* **CommunicationObjectAbortedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **CommunicationObjectFaultedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **DuplexChannelFactory**
- `.ctor(InstanceContext, Binding, EndpointAddress)`
- `.ctor(InstanceContext, Binding, String)`
- `.ctor(InstanceContext, String)`
- `.ctor(InstanceContext, String, EndpointAddress)`
* **DuplexClientBase**
- `.ctor(InstanceContext)`
- `.ctor(InstanceContext, String)`
- `.ctor(InstanceContext, String, EndpointAddress)`
- `.ctor(InstanceContext, String, String)`
* **EndpointAddress**
- `ApplyTo(Message)`
* **EndpointIdentity**
- `Equals(Object)`
- `GetHashCode()`
* **EndpointNotFoundException**
- `.ctor(SerializationInfo, StreamingContext)`
* **FaultException**
- `.ctor(SerializationInfo, StreamingContext)`
* **InvalidMessageContractException**
- `.ctor(SerializationInfo, StreamingContext)`
* **MessageHeaderException**
- `.ctor(SerializationInfo, StreamingContext)`
* **MessageSecurityOverTcp**
- `get_ClientCredentialType()`
- `set_ClientCredentialType(MessageCredentialType)`
* **NetHttpBinding**
- `CreateBindingElements()`
* **NetHttpsBinding**
- `.ctor()`
- `.ctor(BasicHttpsSecurityMode)`
- `CreateBindingElements()`
* **NetTcpBinding**
- `.ctor(String)`
- `CreateBindingElements()`
* **ProtocolException**
- `.ctor(SerializationInfo, StreamingContext)`
* **QuotaExceededException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ServerTooBusyException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ServiceActivationException**
- `.ctor(SerializationInfo, StreamingContext)`

### System.ServiceModel.Channels

* **AddressHeader**
- `Equals(Object)`
- `GetHashCode()`
* **MessageHeaders**
- `set_To(Uri)`
* **SecurityBindingElement**
- `CreateSecureConversationBindingElement(SecurityBindingElement)`
* **TransportSecurityBindingElement**
- `GetProperty<T>(BindingContext)`
* **WebSocketTransportSettings**
- `get_DisablePayloadMasking()`
- `set_DisablePayloadMasking(Boolean)`

### System.ServiceModel.Security

* **MessageSecurityException**
- `.ctor(SerializationInfo, StreamingContext)`
* **SecurityAccessDeniedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **SecurityNegotiationException**
- `.ctor(SerializationInfo, StreamingContext)`
* **X509ServiceCertificateAuthentication**
- `set_CertificateValidationMode(X509CertificateValidationMode)`

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Per @mconnew's comment, this suggestion will remove the ServiceModel types.

Suggested change
### System.ServiceModel
* **ActionNotSupportedException**
- `.ctor(SerializationInfo, StreamingContext)`
- `.ctor(String, Exception)`
* **BasicHttpBinding**
- `.ctor()`
- `.ctor(BasicHttpSecurityMode)`
- `CreateBindingElements()`
* **BasicHttpsBinding**
- `.ctor()`
- `.ctor(BasicHttpsSecurityMode)`
- `CreateBindingElements()`
* **ChannelFactory**
- `.ctor(Binding, EndpointAddress)`
- `.ctor(ServiceEndpoint)`
- `.ctor(String)`
- `.ctor(String, EndpointAddress)`
- `ApplyConfiguration(String)`
- `CreateDescription()`
- `InitializeEndpoint(Binding, EndpointAddress)`
- `InitializeEndpoint(ServiceEndpoint)`
- `InitializeEndpoint(String, EndpointAddress)`
* **ChannelTerminatedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ClientBase**
- `.ctor()`
- `.ctor(String)`
- `.ctor(String, EndpointAddress)`
- `.ctor(String, String)`
* **ClientBase+ChannelBase**
- `EndInvoke(String, Object[], IAsyncResult)`
* **ClientCredentialsSecurityTokenManager**
- `CreateSecurityTokenAuthenticator(SecurityTokenRequirement, SecurityTokenResolver)`
- `CreateSecurityTokenProvider(SecurityTokenRequirement)`
- `CreateSecurityTokenSerializer(SecurityTokenVersion)`
* **CommunicationException**
- `.ctor(SerializationInfo, StreamingContext)`
* **CommunicationObjectAbortedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **CommunicationObjectFaultedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **DuplexChannelFactory**
- `.ctor(InstanceContext, Binding, EndpointAddress)`
- `.ctor(InstanceContext, Binding, String)`
- `.ctor(InstanceContext, String)`
- `.ctor(InstanceContext, String, EndpointAddress)`
* **DuplexClientBase**
- `.ctor(InstanceContext)`
- `.ctor(InstanceContext, String)`
- `.ctor(InstanceContext, String, EndpointAddress)`
- `.ctor(InstanceContext, String, String)`
* **EndpointAddress**
- `ApplyTo(Message)`
* **EndpointIdentity**
- `Equals(Object)`
- `GetHashCode()`
* **EndpointNotFoundException**
- `.ctor(SerializationInfo, StreamingContext)`
* **FaultException**
- `.ctor(SerializationInfo, StreamingContext)`
* **InvalidMessageContractException**
- `.ctor(SerializationInfo, StreamingContext)`
* **MessageHeaderException**
- `.ctor(SerializationInfo, StreamingContext)`
* **MessageSecurityOverTcp**
- `get_ClientCredentialType()`
- `set_ClientCredentialType(MessageCredentialType)`
* **NetHttpBinding**
- `CreateBindingElements()`
* **NetHttpsBinding**
- `.ctor()`
- `.ctor(BasicHttpsSecurityMode)`
- `CreateBindingElements()`
* **NetTcpBinding**
- `.ctor(String)`
- `CreateBindingElements()`
* **ProtocolException**
- `.ctor(SerializationInfo, StreamingContext)`
* **QuotaExceededException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ServerTooBusyException**
- `.ctor(SerializationInfo, StreamingContext)`
* **ServiceActivationException**
- `.ctor(SerializationInfo, StreamingContext)`
### System.ServiceModel.Channels
* **AddressHeader**
- `Equals(Object)`
- `GetHashCode()`
* **MessageHeaders**
- `set_To(Uri)`
* **SecurityBindingElement**
- `CreateSecureConversationBindingElement(SecurityBindingElement)`
* **TransportSecurityBindingElement**
- `GetProperty<T>(BindingContext)`
* **WebSocketTransportSettings**
- `get_DisablePayloadMasking()`
- `set_DisablePayloadMasking(Boolean)`
### System.ServiceModel.Security
* **MessageSecurityException**
- `.ctor(SerializationInfo, StreamingContext)`
* **SecurityAccessDeniedException**
- `.ctor(SerializationInfo, StreamingContext)`
* **SecurityNegotiationException**
- `.ctor(SerializationInfo, StreamingContext)`
* **X509ServiceCertificateAuthentication**
- `set_CertificateValidationMode(X509CertificateValidationMode)`

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we know what caused them to show up here in the first place?

Comment on lines +121 to +122
- `EnterDebugMode()`
- `LeaveDebugMode()`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these two are nops and to be consistent with other nops, we should remove them from the list

context: https://github.com/dotnet/designs/pull/138/files#r454448405

Suggested change
- `EnterDebugMode()`
- `LeaveDebugMode()`

### System.IO.Pipes

* **NamedPipeClientStream**
- `Connect(Int32)`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment on lines +160 to +161
* **NamedPipeServerStream**
- `WaitForConnection()`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment on lines +209 to +210
* **Socket**
- `SetIPProtectionLevel(IPProtectionLevel)`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/dotnet/runtime/blob/08643df14054d1273002254c909fa099649ebfcf/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Unix.cs#L13-L17

Suggested change
* **Socket**
- `SetIPProtectionLevel(IPProtectionLevel)`
* **Socket**
- `.ctor(SocketInformation)`
- `SetIPProtectionLevel(IPProtectionLevel)`


* **DriveInfo**
- `set_VolumeLabel(String)`

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@adamsitnik
Copy link
Member

FWIW I've done some simple manual search of keyword "PlatformNotSupportedException" in *Unix.cs files and found only 2 things that were not on the list and provided a suggestion that adds them. IMO the list is complete now.

My PR is ready dotnet/runtime#39265

@terrajobst
Copy link
Contributor Author

terrajobst commented Jul 16, 2020

Video

  • The proposal looks good.
  • We should consider a diagnostic to warn on typos in the OS name, e.g. [MinimumOSPlatform("windos7.0")]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants