コード例 #1
0
        public async Task <IHidDevice> FromIdAsync(string deviceId, HidDeviceAccessMode accessMode,
                                                   CancellationToken cancellationToken = new CancellationToken())
        {
            var uwpAccessMode = ConvertAccessMode(accessMode);

            var device = await HidDevice.FromIdAsync(deviceId, uwpAccessMode).AsTask(cancellationToken);

            if (device == null)
            {
                throw new InvalidOperationException("Can't create device");
            }

            return(new UwpHidDevice(device));
        }
コード例 #2
0
 private static Win32HidDevice FromId([NotNull] string deviceId, HidDeviceAccessMode accessMode,
     [CanBeNull] Win32HidDeviceInformation knownInformation)
 {
     if (deviceId == null) throw new ArgumentNullException(nameof(deviceId));
     switch (accessMode)
     {
         case HidDeviceAccessMode.Read:
             return Win32HidDevice.FromPath(deviceId, ACCESS_MASK.GenericRight.GENERIC_READ, knownInformation);
         case HidDeviceAccessMode.Write:
             return Win32HidDevice.FromPath(deviceId, ACCESS_MASK.GenericRight.GENERIC_WRITE, knownInformation);
         case HidDeviceAccessMode.ReadWrite:
             return Win32HidDevice.FromPath(deviceId,
                 ACCESS_MASK.GenericRight.GENERIC_READ | ACCESS_MASK.GenericRight.GENERIC_WRITE, knownInformation);
         default:
             throw new ArgumentException("Access mode not supported: " + accessMode, nameof(accessMode));
     }
 }
コード例 #3
0
        static FileAccessMode ConvertAccessMode(HidDeviceAccessMode mode)
        {
            switch (mode)
            {
            case HidDeviceAccessMode.Read:
                return(FileAccessMode.Read);

            case HidDeviceAccessMode.Write:
                return(FileAccessMode.ReadWrite);

            case HidDeviceAccessMode.ReadWrite:
                return(FileAccessMode.ReadWrite);

            default:
                throw new ArgumentOutOfRangeException(nameof(mode), mode, "Unknown mode");
            }
        }
コード例 #4
0
        static FileAccessMode ConvertAccessMode(HidDeviceAccessMode mode)
        {
            switch (mode)
            {
                case HidDeviceAccessMode.Read:
                    return FileAccessMode.Read;

                case HidDeviceAccessMode.Write:
                    return FileAccessMode.ReadWrite;

                case HidDeviceAccessMode.ReadWrite:
                    return FileAccessMode.ReadWrite;

                default:
                    throw new ArgumentOutOfRangeException(nameof(mode), mode, "Unknown mode");
            }
        }
コード例 #5
0
        public async Task<IHidDevice> FromIdAsync(string deviceId, HidDeviceAccessMode accessMode,
            CancellationToken cancellationToken = new CancellationToken())
        {
            var uwpAccessMode = ConvertAccessMode(accessMode);

            HidDevice device = null;
            await uiDispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                device = HidDevice.FromIdAsync(deviceId, uwpAccessMode).AsTask(cancellationToken).Result;
            });

            if (device == null)
            {
                throw new InvalidOperationException("Can't create device");
            }

            return new UwpHidDevice(device);
        }
コード例 #6
0
        private static Win32HidDevice FromId([NotNull] string deviceId, HidDeviceAccessMode accessMode,
                                             [CanBeNull] Win32HidDeviceInformation knownInformation)
        {
            if (deviceId == null)
            {
                throw new ArgumentNullException(nameof(deviceId));
            }
            switch (accessMode)
            {
            case HidDeviceAccessMode.Read:
                return(Win32HidDevice.FromPath(deviceId, ACCESS_MASK.GenericRight.GENERIC_READ, knownInformation));

            case HidDeviceAccessMode.Write:
                return(Win32HidDevice.FromPath(deviceId, ACCESS_MASK.GenericRight.GENERIC_WRITE, knownInformation));

            case HidDeviceAccessMode.ReadWrite:
                return(Win32HidDevice.FromPath(deviceId,
                                               ACCESS_MASK.GenericRight.GENERIC_READ | ACCESS_MASK.GenericRight.GENERIC_WRITE, knownInformation));

            default:
                throw new ArgumentException("Access mode not supported: " + accessMode, nameof(accessMode));
            }
        }
コード例 #7
0
 public Task <Win32HidDevice> FromIdAsync(string deviceId, HidDeviceAccessMode accessMode,
                                          CancellationToken cancellationToken = default(CancellationToken))
 {
     return(FromIdAsync(deviceId, accessMode, null, cancellationToken));
 }
コード例 #8
0
 internal Task <Win32HidDevice> FromIdAsync(string deviceId, HidDeviceAccessMode accessMode,
                                            [CanBeNull] Win32HidDeviceInformation knownInformation, CancellationToken cancellationToken)
 {
     return(TaskEx.Run(() => FromId(deviceId, accessMode, knownInformation), cancellationToken));
 }
コード例 #9
0
 Task<IHidDevice> IHidDeviceFactory.FromIdAsync(string deviceId, HidDeviceAccessMode accessMode, CancellationToken cancellationToken)
 {
     return FromIdAsyncInferface(deviceId, accessMode, null, cancellationToken);
 }
コード例 #10
0
 public Task <Win32HidDevice> OpenDeviceAsync(HidDeviceAccessMode accessMode      = HidDeviceAccessMode.ReadWrite,
                                              CancellationToken cancellationToken = default(CancellationToken))
 {
     return(Win32HidDeviceFactory.Instance.FromIdAsync(Path, accessMode, this, cancellationToken));
 }
コード例 #11
0
 Task <IHidDevice> IHidDeviceInformation.OpenDeviceAsync(HidDeviceAccessMode accessMode, CancellationToken cancellationToken)
 {
     return(Win32HidDeviceFactory.Instance.FromIdAsyncInferface(Path, accessMode, this, cancellationToken));
 }
コード例 #12
0
 public Task <IHidDevice> OpenDeviceAsync(HidDeviceAccessMode accessMode      = HidDeviceAccessMode.ReadWrite,
                                          CancellationToken cancellationToken = new CancellationToken())
 {
     return(factory.FromIdAsync(Id, accessMode, cancellationToken));
 }
コード例 #13
0
 public Task<IHidDevice> OpenDeviceAsync(HidDeviceAccessMode accessMode = HidDeviceAccessMode.ReadWrite,
     CancellationToken cancellationToken = new CancellationToken())
 {
     return factory.FromIdAsync(Id, accessMode, cancellationToken);
 }
コード例 #14
0
 public Task<Win32HidDevice> FromIdAsync(string deviceId, HidDeviceAccessMode accessMode,
     CancellationToken cancellationToken = default(CancellationToken))
 {
     return FromIdAsync(deviceId, accessMode, null, cancellationToken);
 }
コード例 #15
0
 internal Task<Win32HidDevice> FromIdAsync(string deviceId, HidDeviceAccessMode accessMode,
     [CanBeNull] Win32HidDeviceInformation knownInformation, CancellationToken cancellationToken)
 {
     return TaskEx.Run(() => FromId(deviceId, accessMode, knownInformation), cancellationToken);
 }
コード例 #16
0
 Task<IHidDevice> IHidDeviceInformation.OpenDeviceAsync(HidDeviceAccessMode accessMode, CancellationToken cancellationToken)
 {
     return Win32HidDeviceFactory.Instance.FromIdAsyncInferface(Path, accessMode, this, cancellationToken);
 }
コード例 #17
0
 public Task<Win32HidDevice> OpenDeviceAsync(HidDeviceAccessMode accessMode = HidDeviceAccessMode.ReadWrite,
     CancellationToken cancellationToken = default(CancellationToken))
 {
     return Win32HidDeviceFactory.Instance.FromIdAsync(Path, accessMode, this, cancellationToken);
 }
コード例 #18
0
 Task <IHidDevice> IHidDeviceFactory.FromIdAsync(string deviceId, HidDeviceAccessMode accessMode, CancellationToken cancellationToken)
 {
     return(FromIdAsyncInferface(deviceId, accessMode, null, cancellationToken));
 }