From 3652e2a34d92bb91df6c09aba1f0f34304b1c733 Mon Sep 17 00:00:00 2001 From: Yuri Benditovich Date: Mon, 11 Mar 2019 20:56:38 +0200 Subject: Preparation for extended rules for device hide Extend structure USB_DK_HIDE_RULE by adding 'Type' member derived from backward-compatible structure USB_DK_HIDE_RULE_PUBLIC. Public API procedures of UsbDkHelper receive USB_DK_HIDE_RULE_PUBLIC describing hiding rules. Internally UsbDk works with extended structure. Signed-off-by: Yuri Benditovich --- UsbDk/UsbDkDataHider.h | 29 +++++++++++++++++++++-------- UsbDk/UsbDkDataHiderPublic.h | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 UsbDk/UsbDkDataHiderPublic.h (limited to 'UsbDk') diff --git a/UsbDk/UsbDkDataHider.h b/UsbDk/UsbDkDataHider.h index b2a7e55..73c60a7 100644 --- a/UsbDk/UsbDkDataHider.h +++ b/UsbDk/UsbDkDataHider.h @@ -23,13 +23,26 @@ #pragma once -#define USB_DK_HIDE_RULE_MATCH_ALL ((ULONG64)(-1)) +#include "UsbDkDataHiderPublic.h" -typedef struct tag_USB_DK_HIDE_RULE +#ifdef __cplusplus +class USB_DK_HIDE_RULE : public USB_DK_HIDE_RULE_PUBLIC { - ULONG64 Hide; - ULONG64 Class; - ULONG64 VID; - ULONG64 PID; - ULONG64 BCD; -} USB_DK_HIDE_RULE, *PUSB_DK_HIDE_RULE; +public: + USB_DK_HIDE_RULE(PUSB_DK_HIDE_RULE_PUBLIC PublicRule = NULL, ULONG RuleType = USBDK_HIDER_RULE_DEFAULT) : + Type(RuleType) + { + if (PublicRule) + { + Hide = PublicRule->Hide; + Class = PublicRule->Class; + VID = PublicRule->VID; + PID = PublicRule->PID; + BCD = PublicRule->BCD; + } + } + ULONG64 Type; +}; + +typedef USB_DK_HIDE_RULE *PUSB_DK_HIDE_RULE; +#endif diff --git a/UsbDk/UsbDkDataHiderPublic.h b/UsbDk/UsbDkDataHiderPublic.h new file mode 100644 index 0000000..ef8393b --- /dev/null +++ b/UsbDk/UsbDkDataHiderPublic.h @@ -0,0 +1,38 @@ +/********************************************************************** +* Copyright (c) 2013-2014 Red Hat, Inc. +* +* Developed by Daynix Computing LTD. +* +* Authors: +* Dmitry Fleytman +* Kirill Moizik +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +**********************************************************************/ + +#pragma once + +#define USB_DK_HIDE_RULE_MATCH_ALL ((ULONG64)(-1)) + +typedef struct tag_USB_DK_HIDE_RULE_PUBLIC +{ + ULONG64 Hide; + ULONG64 Class; + ULONG64 VID; + ULONG64 PID; + ULONG64 BCD; +} USB_DK_HIDE_RULE_PUBLIC, *PUSB_DK_HIDE_RULE_PUBLIC; + +#define USBDK_HIDER_RULE_DEFAULT 0 +#define USBDK_HIDER_RULE_DETERMINATIVE_TYPES 1 -- cgit v1.2.3