Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mark Windows-specific APIs #138

Merged
merged 7 commits into from
Jul 16, 2020

Conversation

terrajobst
Copy link
Member

@terrajobst terrajobst commented Jul 10, 2020

No description provided.

@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
Member 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
Copy link
Member 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
- `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
Member 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