Пример #1
0
        private static IntPtr CreateFileMapping(string name, int size, bool writable)
        {
            IntPtr intPtr  = IntPtr.Zero;
            IntPtr intPtr2 = IntPtr.Zero;
            int    flProtect;

            if (writable)
            {
                flProtect = 4;
            }
            else
            {
                flProtect = 2;
            }
            IntPtr result;

            try
            {
                intPtr = FileMapping.GetSecurityDescriptor(name);
                FileMapping.SECURITY_ATTRIBUTES security_ATTRIBUTES = new FileMapping.SECURITY_ATTRIBUTES();
                security_ATTRIBUTES.SecurityDescriptor = intPtr;
                security_ATTRIBUTES.InheritHandle      = false;
                intPtr2 = FileMapping.CreateFileMapping((IntPtr)(-1), security_ATTRIBUTES, flProtect, 0, size, name);
                if (intPtr2 == IntPtr.Zero)
                {
                    throw new Win32Exception(Marshal.GetLastWin32Error(), "Could not create file mapping where file mapping name is : " + name);
                }
                result = intPtr2;
            }
            finally
            {
                if (intPtr != IntPtr.Zero)
                {
                    FileMapping.LocalFree(intPtr);
                }
            }
            return(result);
        }
Пример #2
0
 internal static extern IntPtr CreateFileMapping(IntPtr hFile, FileMapping.SECURITY_ATTRIBUTES lpFileMappingAttributes, int flProtect, int dwMaximumSizeHigh, int dwMaximumSizeLow, string lpName);