Пример #1
0
        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));
        }
Пример #2
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);
 }