0

I'm working on an ASP.NET framework project where I need to remove the native Windows API call to reopen a file with a specific file access and file share.

Current implementation:

var handle = NativeMethods.ReOpenFile(existingHandle, desiredAccess, share, options);

Here is the implementation for NativeMethods.ReOpenFile():

[DllImport("kernel32.dll", SetLastError = true)]
public static extern SafeFileHandle ReOpenFile(SafeFileHandle hOriginalFile, [MarshalAs(UnmanagedType.U4)] FILE_ACCESS dwAccess, [MarshalAs(UnmanagedType.U4)] FileShare dwShareMode, [MarshalAs(UnmanagedType.U4)] FileOptions dwFlags);

I need to remove the native Windows API (kernel32.dll) call.

So I removed the native API and replaced NativeMethods.ReopenFile() with the following:

existingHandle.Dispose();
var file = File.Open(path, FileMode.Open, access, share);
var handle = file.SafeFileHandle;

But this throws the following exception:

System.ObjectDisposedException : Cannot access a closed file.

So how can I remove the windows native API call and preserve the existing functionality?

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.