From ed74a588e381113d1c72130caf0d3d210bfcf4c8 Mon Sep 17 00:00:00 2001
From: xtqqczze <45661989+xtqqczze@users.noreply.github.com>
Date: Wed, 27 Aug 2025 03:43:07 +0100
Subject: [PATCH] Remove obsolete `CA2006` rule suppression
The FxCop [`CA2006:UseSafeHandleToEncapsulateNativeResources`](https://learn.microsoft.com/previous-versions/visualstudio/visual-studio-2010/ms182294(v=vs.100)) rule was [not ported to roslyn](https://github.com/dotnet/roslyn-analyzers/issues/480).
---
.../security/CertificateProvider.cs | 1 -
.../engine/remoting/fanin/WSManNativeAPI.cs | 9 ---------
.../remoting/fanin/WSManPluginFacade.cs | 10 ----------
.../remoting/fanin/WSManTransportManager.cs | 19 +++----------------
.../security/SecuritySupport.cs | 2 --
5 files changed, 3 insertions(+), 38 deletions(-)
diff --git a/src/Microsoft.PowerShell.Security/security/CertificateProvider.cs b/src/Microsoft.PowerShell.Security/security/CertificateProvider.cs
index 08ee5a70f51..37c687a7770 100644
--- a/src/Microsoft.PowerShell.Security/security/CertificateProvider.cs
+++ b/src/Microsoft.PowerShell.Security/security/CertificateProvider.cs
@@ -3424,7 +3424,6 @@ internal static IntPtr GetOwnerWindow(PSHost host)
return IntPtr.Zero;
}
#else
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private static IntPtr hWnd = IntPtr.Zero;
private static bool firstRun = true;
diff --git a/src/System.Management.Automation/engine/remoting/fanin/WSManNativeAPI.cs b/src/System.Management.Automation/engine/remoting/fanin/WSManNativeAPI.cs
index 289f88c576f..d7bce634620 100644
--- a/src/System.Management.Automation/engine/remoting/fanin/WSManNativeAPI.cs
+++ b/src/System.Management.Automation/engine/remoting/fanin/WSManNativeAPI.cs
@@ -304,7 +304,6 @@ internal struct WSManUserNameCredentialStruct
///
/// Making password secure.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr password;
}
@@ -626,7 +625,6 @@ internal class WSManBinaryOrTextDataStruct
{
internal int bufferLength;
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr data;
}
@@ -637,10 +635,8 @@ internal class WSManData_ManToUn : IDisposable
{
private readonly WSManDataStruct _internalData;
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _marshalledObject = IntPtr.Zero;
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _marshalledBuffer = IntPtr.Zero;
///
@@ -933,7 +929,6 @@ internal struct WSManStreamIDSetStruct
{
internal int streamIDsCount;
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr streamIDs;
}
@@ -1085,7 +1080,6 @@ internal struct WSManOptionSetStruct
///
/// Pointer to an array of WSManOption objects.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr options;
internal bool optionsMustUnderstand;
@@ -1223,13 +1217,11 @@ internal struct WSManCommandArgSetInternal
{
internal int argsCount;
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr args;
}
private WSManCommandArgSetInternal _internalData;
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private MarshalledObject _data;
#region Managed to Unmanaged
@@ -1733,7 +1725,6 @@ internal struct WSManShellAsyncCallback
// GC handle which prevents garbage collector from collecting this delegate.
private GCHandle _gcHandle;
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private readonly IntPtr _asyncCallback;
internal WSManShellAsyncCallback(WSManShellCompletionFunction callback)
diff --git a/src/System.Management.Automation/engine/remoting/fanin/WSManPluginFacade.cs b/src/System.Management.Automation/engine/remoting/fanin/WSManPluginFacade.cs
index 7fbc236a4dd..2d99a42cfb9 100644
--- a/src/System.Management.Automation/engine/remoting/fanin/WSManPluginFacade.cs
+++ b/src/System.Management.Automation/engine/remoting/fanin/WSManPluginFacade.cs
@@ -343,61 +343,51 @@ internal class WSManPluginEntryDelegatesInternal
///
/// WsManPluginShutdownPluginCallbackNative.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr wsManPluginShutdownPluginCallbackNative;
///
/// WSManPluginShellCallbackNative.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr wsManPluginShellCallbackNative;
///
/// WSManPluginReleaseShellContextCallbackNative.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr wsManPluginReleaseShellContextCallbackNative;
///
/// WSManPluginCommandCallbackNative.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr wsManPluginCommandCallbackNative;
///
/// WSManPluginReleaseCommandContextCallbackNative.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr wsManPluginReleaseCommandContextCallbackNative;
///
/// WSManPluginSendCallbackNative.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr wsManPluginSendCallbackNative;
///
/// WSManPluginReceiveCallbackNative.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr wsManPluginReceiveCallbackNative;
///
/// WSManPluginSignalCallbackNative.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr wsManPluginSignalCallbackNative;
///
/// WSManPluginConnectCallbackNative.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr wsManPluginConnectCallbackNative;
///
/// WSManPluginCommandCallbackNative.
///
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
internal IntPtr wsManPluginShutdownCallbackNative;
}
}
diff --git a/src/System.Management.Automation/engine/remoting/fanin/WSManTransportManager.cs b/src/System.Management.Automation/engine/remoting/fanin/WSManTransportManager.cs
index 58b9cfe098d..d4ee779b5a2 100644
--- a/src/System.Management.Automation/engine/remoting/fanin/WSManTransportManager.cs
+++ b/src/System.Management.Automation/engine/remoting/fanin/WSManTransportManager.cs
@@ -317,18 +317,13 @@ internal CompletionEventArgs(CompletionNotification notification)
#endregion
#region Private Data
+
// operation handles are owned by WSMan
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _wsManSessionHandle;
-
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _wsManShellOperationHandle;
-
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _wsManReceiveOperationHandle;
-
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _wsManSendOperationHandle;
+
// this is used with WSMan callbacks to represent a session transport manager.
private long _sessionContextID;
@@ -2643,7 +2638,6 @@ private void DisposeWSManAPIDataAsync()
///
internal class WSManAPIDataCommon : IDisposable
{
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _handle;
// if any
private WSManNativeApi.WSManStreamIDSet_ManToUn _inputStreamSet;
@@ -2791,18 +2785,11 @@ internal sealed class WSManClientCommandTransportManager : BaseClientCommandTran
// operation handles
private readonly IntPtr _wsManShellOperationHandle;
-
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _wsManCmdOperationHandle;
-
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _cmdSignalOperationHandle;
-
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _wsManReceiveOperationHandle;
-
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private IntPtr _wsManSendOperationHandle;
+
// this is used with WSMan callbacks to represent a command transport manager.
private long _cmdContextId;
diff --git a/src/System.Management.Automation/security/SecuritySupport.cs b/src/System.Management.Automation/security/SecuritySupport.cs
index 12e03d85174..dc6d048c5b1 100644
--- a/src/System.Management.Automation/security/SecuritySupport.cs
+++ b/src/System.Management.Automation/security/SecuritySupport.cs
@@ -1607,10 +1607,8 @@ internal static void CurrentDomain_ProcessExit(object sender, EventArgs e)
}
}
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private static IntPtr s_amsiContext = IntPtr.Zero;
- [SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")]
private static IntPtr s_amsiSession = IntPtr.Zero;
private static readonly bool s_amsiInitFailed = false;