IntPtr OpenDevice(string devicePath, DeviceModeType deviceMode, AccessModeType accessMode, ShareModeType shareMode) { var securityAttributes = Kernel32Api.SECURITY_ATTRIBUTES.Create(); var flags = 0; // FILE_FLAG_OVERLAPPED is used for async i/o //if (deviceMode == DeviceModeType.Overlapped) { flags = 0x40000000; //FILE_FLAG_OVERLAPPED; //} // internal const short FILE_SHARE_READ = 0x1; // internal const short FILE_SHARE_WRITE = 0x2; // may be required to set shareMode //dwCreationDisposition == 3 (OPEN_EXISTING) return(Kernel32Api.CreateFile(devicePath, (uint)accessMode, (int)shareMode, ref securityAttributes, 3, flags, 0)); }
public DeviceContext(string devicePath, DeviceModeType deviceMode = DeviceModeType.NonOverlapped, AccessModeType accessMode = AccessModeType.None, ShareModeType shareMode = ShareModeType.ShareRead | ShareModeType.ShareWrite) { Handle = OpenDevice(devicePath, deviceMode, accessMode, shareMode); }