Annotate System.IO.MemoryMappedFiles for nullable reference types (#220)
authorStephen Toub <stoub@microsoft.com>
Sat, 23 Nov 2019 21:42:18 +0000 (16:42 -0500)
committerGitHub <noreply@github.com>
Sat, 23 Nov 2019 21:42:18 +0000 (16:42 -0500)
25 files changed:
src/libraries/Common/src/Interop/Windows/Kernel32/Interop.CreateFileMapping.cs
src/libraries/Common/src/Interop/Windows/Kernel32/Interop.MEMORY_BASIC_INFO.cs
src/libraries/Common/src/Interop/Windows/Kernel32/Interop.OpenFileMapping.cs
src/libraries/Common/src/Interop/Windows/Kernel32/Interop.VirtualAlloc.cs
src/libraries/System.IO.MemoryMappedFiles/ref/System.IO.MemoryMappedFiles.cs
src/libraries/System.IO.MemoryMappedFiles/ref/System.IO.MemoryMappedFiles.csproj
src/libraries/System.IO.MemoryMappedFiles/src/Microsoft/Win32/SafeMemoryMappedFileHandle.Unix.cs
src/libraries/System.IO.MemoryMappedFiles/src/Microsoft/Win32/SafeMemoryMappedFileHandle.Windows.cs
src/libraries/System.IO.MemoryMappedFiles/src/Microsoft/Win32/SafeMemoryMappedViewHandle.Windows.cs
src/libraries/System.IO.MemoryMappedFiles/src/Microsoft/Win32/SafeMemoryMappedViewHandle.cs
src/libraries/System.IO.MemoryMappedFiles/src/System.IO.MemoryMappedFiles.csproj
src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/Interop.Windows.cs
src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.Unix.cs
src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.Windows.cs
src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.cs
src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedView.Unix.cs
src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedView.Windows.cs
src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedView.cs
src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedViewAccessor.cs
src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedViewStream.cs
src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFile.CrossProcess.cs
src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.Windows.cs
src/libraries/System.IO.MemoryMappedFiles/tests/MemoryMappedFilesTestsBase.cs
src/libraries/System.Private.CoreLib/src/Interop/Unix/Interop.IOErrors.cs
src/libraries/System.Private.CoreLib/src/Interop/Unix/System.Native/Interop.Unlink.cs

index 5b0543b..3915664 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 using Microsoft.Win32.SafeHandles;
 using System;
 using System.Runtime.InteropServices;
@@ -17,7 +18,7 @@ internal partial class Interop
             int flProtect,
             int dwMaximumSizeHigh,
             int dwMaximumSizeLow,
-            string lpName);
+            string? lpName);
 
         [DllImport(Libraries.Kernel32, EntryPoint = "CreateFileMappingW", CharSet = CharSet.Unicode, SetLastError = true)]
         internal static extern SafeMemoryMappedFileHandle CreateFileMapping(
@@ -26,6 +27,6 @@ internal partial class Interop
             int flProtect,
             int dwMaximumSizeHigh,
             int dwMaximumSizeLow,
-            string lpName);
+            string? lpName);
     }
 }
index 6852465..b3991d6 100644 (file)
@@ -2,7 +2,6 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
-using Microsoft.Win32.SafeHandles;
 using System;
 using System.Runtime.InteropServices;
 
index d9edfda..ceab698 100644 (file)
@@ -3,7 +3,6 @@
 // See the LICENSE file in the project root for more information.
 
 using Microsoft.Win32.SafeHandles;
-using System;
 using System.Runtime.InteropServices;
 
 internal partial class Interop
index fd7d76e..7788a87 100644 (file)
@@ -2,7 +2,6 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
-using Microsoft.Win32.SafeHandles;
 using System;
 using System.Runtime.InteropServices;
 
index fbfa21a..d6aef9a 100644 (file)
@@ -25,15 +25,15 @@ namespace System.IO.MemoryMappedFiles
     {
         internal MemoryMappedFile() { }
         public Microsoft.Win32.SafeHandles.SafeMemoryMappedFileHandle SafeMemoryMappedFileHandle { get { throw null; } }
-        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(System.IO.FileStream fileStream, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.HandleInheritability inheritability, bool leaveOpen) { throw null; }
+        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(System.IO.FileStream fileStream, string? mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.HandleInheritability inheritability, bool leaveOpen) { throw null; }
         public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path) { throw null; }
         public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode) { throw null; }
-        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName) { throw null; }
-        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName, long capacity) { throw null; }
-        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access) { throw null; }
-        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew(string mapName, long capacity) { throw null; }
-        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew(string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access) { throw null; }
-        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew(string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileOptions options, System.IO.HandleInheritability inheritability) { throw null; }
+        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string? mapName) { throw null; }
+        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string? mapName, long capacity) { throw null; }
+        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string? mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access) { throw null; }
+        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew(string? mapName, long capacity) { throw null; }
+        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew(string? mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access) { throw null; }
+        public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew(string? mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileOptions options, System.IO.HandleInheritability inheritability) { throw null; }
         public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateOrOpen(string mapName, long capacity) { throw null; }
         public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateOrOpen(string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access) { throw null; }
         public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateOrOpen(string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileOptions options, System.IO.HandleInheritability inheritability) { throw null; }
index 57602e1..7599933 100644 (file)
@@ -1,5 +1,6 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
+    <Nullable>enable</Nullable>
     <Configurations>netcoreapp-Debug;netcoreapp-Release</Configurations>
   </PropertyGroup>
   <ItemGroup>
index 54a074e..c206df9 100644 (file)
@@ -6,8 +6,6 @@ using System;
 using System.Diagnostics;
 using System.IO;
 using System.IO.MemoryMappedFiles;
-using System.Runtime.InteropServices;
-using System.Security;
 using System.Threading;
 
 namespace Microsoft.Win32.SafeHandles
@@ -22,7 +20,7 @@ namespace Microsoft.Win32.SafeHandles
         /// onto the underlying handle to ensure that logic associated with disposing the stream
         /// (e.g. deleting the file for DeleteOnClose) happens at the appropriate time.
         /// </summary>
-        internal readonly FileStream _fileStream;
+        internal readonly FileStream? _fileStream;
 
         /// <summary>Whether this SafeHandle owns the _fileStream and should Dispose it when disposed.</summary>
         internal readonly bool _ownsFileStream;
@@ -47,7 +45,7 @@ namespace Microsoft.Win32.SafeHandles
         /// <param name="options">The options for the memory-mapped file.</param>
         /// <param name="capacity">The capacity of the memory-mapped file.</param>
         internal SafeMemoryMappedFileHandle(
-            FileStream fileStream, bool ownsFileStream, HandleInheritability inheritability,
+            FileStream? fileStream, bool ownsFileStream, HandleInheritability inheritability,
             MemoryMappedFileAccess access, MemoryMappedFileOptions options,
             long capacity)
             : base(ownsHandle: true)
@@ -72,7 +70,7 @@ namespace Microsoft.Win32.SafeHandles
             if (disposing && _ownsFileStream)
             {
                 // Clean up the file descriptor (either for a file on disk or a shared memory object) if we created it
-                _fileStream.Dispose();
+                _fileStream!.Dispose();
             }
             base.Dispose(disposing);
         }
index 87c1cb7..8abb4b1 100644 (file)
@@ -2,10 +2,6 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-
 namespace Microsoft.Win32.SafeHandles
 {
     public sealed partial class SafeMemoryMappedFileHandle : SafeHandleZeroOrMinusOneIsInvalid
index 8feed3c..05ed0f4 100644 (file)
@@ -2,9 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
-using System;
 using System.Runtime.InteropServices;
-using System.Security;
 
 namespace Microsoft.Win32.SafeHandles
 {
index bf5e90d..dabd960 100644 (file)
@@ -2,6 +2,7 @@
   <PropertyGroup>
     <AssemblyName>System.IO.MemoryMappedFiles</AssemblyName>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <Nullable>enable</Nullable>
     <Configurations>netcoreapp-Unix-Debug;netcoreapp-Unix-Release;netcoreapp-Windows_NT-Debug;netcoreapp-Windows_NT-Release</Configurations>
   </PropertyGroup>
   <!-- Compiled Source Files -->
index c5c930d..84ae8fb 100644 (file)
@@ -27,7 +27,7 @@ internal partial class Interop
             ref Kernel32.SECURITY_ATTRIBUTES securityAttributes,
             int pageProtection,
             long maximumSize,
-            string name)
+            string? name)
     {
         // split the long into two ints
         int capacityHigh, capacityLow;
@@ -41,7 +41,7 @@ internal partial class Interop
             ref Kernel32.SECURITY_ATTRIBUTES securityAttributes,
             int pageProtection,
             long maximumSize,
-            string name)
+            string? name)
     {
         // split the long into two ints
         int capacityHigh, capacityLow;
index 13c8b44..da7fbb0 100644 (file)
@@ -3,7 +3,6 @@
 // See the LICENSE file in the project root for more information.
 
 using Microsoft.Win32.SafeHandles;
-using System.Security;
 
 namespace System.IO.MemoryMappedFiles
 {
@@ -15,7 +14,7 @@ namespace System.IO.MemoryMappedFiles
         /// out empty).
         /// </summary>
         private static unsafe SafeMemoryMappedFileHandle CreateCore(
-            FileStream fileStream, string mapName,
+            FileStream? fileStream, string? mapName,
             HandleInheritability inheritability, MemoryMappedFileAccess access,
             MemoryMappedFileOptions options, long capacity)
         {
@@ -138,7 +137,7 @@ namespace System.IO.MemoryMappedFiles
         // ---- PAL layer ends here ----
         // -----------------------------
 
-        private static FileStream CreateSharedBackingObjectUsingMemory(
+        private static FileStream? CreateSharedBackingObjectUsingMemory(
            Interop.Sys.MemoryMappedProtections protections, long capacity, HandleInheritability inheritability)
         {
             // The POSIX shared memory object name must begin with '/'.  After that we just want something short and unique.
index b60d81e..c239918 100644 (file)
@@ -5,7 +5,6 @@
 using Microsoft.Win32.SafeHandles;
 using System.Diagnostics;
 using System.Runtime.InteropServices;
-using System.Security;
 using System.Threading;
 
 namespace System.IO.MemoryMappedFiles
@@ -19,10 +18,10 @@ namespace System.IO.MemoryMappedFiles
         /// </summary>
 
         private static SafeMemoryMappedFileHandle CreateCore(
-            FileStream fileStream, string mapName, HandleInheritability inheritability,
+            FileStream? fileStream, string? mapName, HandleInheritability inheritability,
             MemoryMappedFileAccess access, MemoryMappedFileOptions options, long capacity)
         {
-            SafeFileHandle fileHandle = fileStream != null ? fileStream.SafeFileHandle : null;
+            SafeFileHandle? fileHandle = fileStream != null ? fileStream.SafeFileHandle : null;
             Interop.Kernel32.SECURITY_ATTRIBUTES secAttrs = GetSecAttrs(inheritability);
 
 
@@ -89,7 +88,7 @@ namespace System.IO.MemoryMappedFiles
 
             Debug.Assert(access != MemoryMappedFileAccess.Write, "Callers requesting write access shouldn't try to create a mmf");
 
-            SafeMemoryMappedFileHandle handle = null;
+            SafeMemoryMappedFileHandle? handle = null;
             Interop.Kernel32.SECURITY_ATTRIBUTES secAttrs = GetSecAttrs(inheritability);
 
             int waitRetries = 14;   //((2^13)-1)*10ms == approximately 1.4mins
index 3bc7803..f743f1c 100644 (file)
@@ -4,7 +4,6 @@
 
 using Microsoft.Win32.SafeHandles;
 using System.Diagnostics;
-using System.Security;
 
 namespace System.IO.MemoryMappedFiles
 {
@@ -12,7 +11,7 @@ namespace System.IO.MemoryMappedFiles
     {
         private readonly SafeMemoryMappedFileHandle _handle;
         private readonly bool _leaveOpen;
-        private readonly FileStream _fileStream;
+        private readonly FileStream? _fileStream;
         internal const int DefaultSize = 0;
 
         // Private constructors to be used by the factory methods.
@@ -99,17 +98,17 @@ namespace System.IO.MemoryMappedFiles
             return CreateFromFile(path, mode, null, DefaultSize, MemoryMappedFileAccess.ReadWrite);
         }
 
-        public static MemoryMappedFile CreateFromFile(string path, FileMode mode, string mapName)
+        public static MemoryMappedFile CreateFromFile(string path, FileMode mode, string? mapName)
         {
             return CreateFromFile(path, mode, mapName, DefaultSize, MemoryMappedFileAccess.ReadWrite);
         }
 
-        public static MemoryMappedFile CreateFromFile(string path, FileMode mode, string mapName, long capacity)
+        public static MemoryMappedFile CreateFromFile(string path, FileMode mode, string? mapName, long capacity)
         {
             return CreateFromFile(path, mode, mapName, capacity, MemoryMappedFileAccess.ReadWrite);
         }
 
-        public static MemoryMappedFile CreateFromFile(string path, FileMode mode, string mapName, long capacity,
+        public static MemoryMappedFile CreateFromFile(string path, FileMode mode, string? mapName, long capacity,
                                                                         MemoryMappedFileAccess access)
         {
             if (path == null)
@@ -173,7 +172,7 @@ namespace System.IO.MemoryMappedFiles
                 throw new ArgumentOutOfRangeException(nameof(capacity), SR.ArgumentOutOfRange_CapacityGEFileSizeRequired);
             }
 
-            SafeMemoryMappedFileHandle handle = null;
+            SafeMemoryMappedFileHandle? handle = null;
             try
             {
                 handle = CreateCore(fileStream, mapName, HandleInheritability.None,
@@ -190,7 +189,7 @@ namespace System.IO.MemoryMappedFiles
             return new MemoryMappedFile(handle, fileStream, false);
         }
 
-        public static MemoryMappedFile CreateFromFile(FileStream fileStream, string mapName, long capacity,
+        public static MemoryMappedFile CreateFromFile(FileStream fileStream, string? mapName, long capacity,
                                                         MemoryMappedFileAccess access,
                                                         HandleInheritability inheritability, bool leaveOpen)
         {
@@ -257,19 +256,19 @@ namespace System.IO.MemoryMappedFiles
 
         // Factory Method Group #3: Creates a new empty memory mapped file.  Such memory mapped files are ideal
         // for IPC, when mapName != null.
-        public static MemoryMappedFile CreateNew(string mapName, long capacity)
+        public static MemoryMappedFile CreateNew(string? mapName, long capacity)
         {
             return CreateNew(mapName, capacity, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None,
                    HandleInheritability.None);
         }
 
-        public static MemoryMappedFile CreateNew(string mapName, long capacity, MemoryMappedFileAccess access)
+        public static MemoryMappedFile CreateNew(string? mapName, long capacity, MemoryMappedFileAccess access)
         {
             return CreateNew(mapName, capacity, access, MemoryMappedFileOptions.None,
                    HandleInheritability.None);
         }
 
-        public static MemoryMappedFile CreateNew(string mapName, long capacity, MemoryMappedFileAccess access,
+        public static MemoryMappedFile CreateNew(string? mapName, long capacity, MemoryMappedFileAccess access,
                                                     MemoryMappedFileOptions options,
                                                     HandleInheritability inheritability)
         {
index 46c0da4..4d418f5 100644 (file)
@@ -5,9 +5,7 @@
 using Microsoft.Win32.SafeHandles;
 using System.Diagnostics;
 using System.Runtime.InteropServices;
-using System.Security;
 using System.Threading;
-using System.Threading.Tasks;
 
 namespace System.IO.MemoryMappedFiles
 {
index 07836fa..9ee7d0e 100644 (file)
@@ -2,7 +2,6 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
-using System.Diagnostics;
 using Microsoft.DotNet.RemoteExecutor;
 using Xunit;
 
index a599b93..2d8958b 100644 (file)
@@ -2,8 +2,6 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
-using System.Collections.Generic;
-using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using Xunit;
 
index 0937961..5a799f2 100644 (file)
@@ -5,7 +5,6 @@
 using System.Collections.Generic;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
-using System.Text;
 using Xunit;
 
 namespace System.IO.MemoryMappedFiles.Tests
index 666220e..fe3c34a 100644 (file)
@@ -7,7 +7,6 @@ using System;
 using System.Diagnostics;
 using System.IO;
 using System.Runtime.InteropServices;
-using Microsoft.Win32.SafeHandles;
 
 internal static partial class Interop
 {
index 829210f..9395428 100644 (file)
@@ -2,7 +2,6 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
-using System;
 using System.Runtime.InteropServices;
 
 internal static partial class Interop