Beispiel #1
0
        public static IntPtr Run(string fileName, DesiredAccessFlags desiredAccess, ShareModeFlags shareMode, CreationDispositionEnum creationDisposition, FlagsAndAttributes flagsAndAttributes, IntPtr templateFile)
        {
            //var buffer = IntPtr.Zero;
            var handle = IntPtr.Zero;

            var securityAttributes = new SecurityAttributes
            {
                lpSecurityDescriptor = IntPtr.Zero, //TODO: create other methods to use this
                bInheritHandle = true
            };
            securityAttributes.nLength = Marshal.SizeOf(securityAttributes);

            try
            {
                //buffer = Marshal.AllocHGlobal(securityAttributes.nLength);
                //Marshal.StructureToPtr(securityAttributes, buffer, true);

                handle = CreateFileMethod(fileName, (uint)desiredAccess, (uint)shareMode, ref securityAttributes, (uint)creationDisposition, (uint)flagsAndAttributes, templateFile);
            }
            finally
            {
                //Marshal.FreeHGlobal(buffer);
            }

            return handle;
        }
 internal static extern SafeFileHandle CreateFile(
     [MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPWStr)] string fileName,
     DesiredAccessEnum desiredAccess,
     SharedModeEnum sharedMode,
     IntPtr securityAttributes,
     CreationDispositionEnum creationDisposition,
     uint flagsAndAttributes,
     IntPtr templateFile
     );