summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Benditovich <yuri.benditovich@daynix.com>2019-03-14 12:06:57 +0200
committerYan Vugenfirer <yan@daynix.com>2019-04-15 11:19:13 +0300
commit916f797c890390ca0622668930243364e0317d39 (patch)
treee16d8d0028309439302f64cf47bbc89d53319188
parent68500dc8c3a5b6d94752a3964b1908e51bd49f00 (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>
-rw-r--r--UsbDk/ControlDevice.cpp34
-rw-r--r--UsbDk/ControlDevice.h6
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();