private static IntPtr OpenDeviceIO(string devicePath, DeviceMode deviceMode, uint deviceAccess)
{
NativeMethods.SECURITY_ATTRIBUTES lpSecurityAttributes = default(NativeMethods.SECURITY_ATTRIBUTES);
int dwFlagsAndAttributes = 0;
if (deviceMode == DeviceMode.Overlapped)
{
dwFlagsAndAttributes = 1073741824;
}
lpSecurityAttributes.lpSecurityDescriptor = IntPtr.Zero;
lpSecurityAttributes.bInheritHandle = true;
lpSecurityAttributes.nLength = Marshal.SizeOf((object)lpSecurityAttributes);
return(NativeMethods.CreateFile(devicePath, deviceAccess, 3, ref lpSecurityAttributes, 3, dwFlagsAndAttributes, 0));
}