diff options
author | Yuri Benditovich <yuri.benditovich@daynix.com> | 2019-03-14 12:06:57 +0200 |
---|---|---|
committer | Yan Vugenfirer <yan@daynix.com> | 2019-04-15 11:19:13 +0300 |
commit | 916f797c890390ca0622668930243364e0317d39 (patch) | |
tree | e16d8d0028309439302f64cf47bbc89d53319188 /UsbDk | |
parent | 68500dc8c3a5b6d94752a3964b1908e51bd49f00 (diff) |
Load extended rules in the driver
Load dynamic and persistent rules with type == 1
to extended rules sets.
Signed-off-by: Yuri Benditovich <yuri.benditovich@daynix.com>
Diffstat (limited to 'UsbDk')
-rw-r--r-- | UsbDk/ControlDevice.cpp | 34 | ||||
-rw-r--r-- | UsbDk/ControlDevice.h | 6 |
2 files changed, 36 insertions, 4 deletions
diff --git a/UsbDk/ControlDevice.cpp b/UsbDk/ControlDevice.cpp index e5f8657..88cad28 100644 --- a/UsbDk/ControlDevice.cpp +++ b/UsbDk/ControlDevice.cpp @@ -815,6 +815,14 @@ public: return status; } + DWORD32 val; + status = ReadDwordValue(USBDK_HIDE_RULE_TYPE, val); + if (!NT_SUCCESS(status)) + { + return status; + } + Rule.Type = val; + status = ReadDwordMaskValue(USBDK_HIDE_RULE_VID, Rule.VID); if (!NT_SUCCESS(status)) { @@ -1200,3 +1208,29 @@ void CDriverParamsRegistryPath::Destroy() } CDriverParamsRegistryPath::CAllocatablePath *CDriverParamsRegistryPath::m_Path = nullptr; + +NTSTATUS CUsbDkControlDevice::AddHideRule(const USB_DK_HIDE_RULE &UsbDkRule) +{ + if (UsbDkRule.Type == USBDK_HIDER_RULE_DEFAULT) + { + return AddHideRuleToSet(UsbDkRule, m_HideRules); + } + else if (UsbDkRule.Type == USBDK_HIDER_RULE_DETERMINATIVE_TYPES) + { + return AddHideRuleToSet(UsbDkRule, m_ExtHideRules); + } + return STATUS_INVALID_PARAMETER; +} + +NTSTATUS CUsbDkControlDevice::AddPersistentHideRule(const USB_DK_HIDE_RULE &UsbDkRule) +{ + if (UsbDkRule.Type == USBDK_HIDER_RULE_DEFAULT) + { + return AddHideRuleToSet(UsbDkRule, m_PersistentHideRules); + } + else if (UsbDkRule.Type == USBDK_HIDER_RULE_DETERMINATIVE_TYPES) + { + return AddHideRuleToSet(UsbDkRule, m_PersistentExtHideRules); + } + return STATUS_INVALID_PARAMETER; +} diff --git a/UsbDk/ControlDevice.h b/UsbDk/ControlDevice.h index 4077a8e..4811c3d 100644 --- a/UsbDk/ControlDevice.h +++ b/UsbDk/ControlDevice.h @@ -257,10 +257,8 @@ public: NTSTATUS ResetUsbDevice(const USB_DK_DEVICE_ID &DeviceId); NTSTATUS AddRedirect(const USB_DK_DEVICE_ID &DeviceId, HANDLE RequestorProcess, PHANDLE ObjectHandle); - NTSTATUS AddHideRule(const USB_DK_HIDE_RULE &UsbDkRule) - { return AddHideRuleToSet(UsbDkRule, m_HideRules); } - NTSTATUS AddPersistentHideRule(const USB_DK_HIDE_RULE &UsbDkRule) - { return AddHideRuleToSet(UsbDkRule, m_PersistentHideRules); } + NTSTATUS AddHideRule(const USB_DK_HIDE_RULE &UsbDkRule); + NTSTATUS AddPersistentHideRule(const USB_DK_HIDE_RULE &UsbDkRule); void ClearHideRules(); |