summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Fleytman <dfleytma@redhat.com>2017-02-19 14:10:30 +0200
committerDmitry Fleytman <dfleytma@redhat.com>2017-02-19 14:10:30 +0200
commit1217ff27393db0fe40d7d21c20c93bc16289fc6e (patch)
treed2ddcd976aae8e51d804e68b1e470dde7dbf68bf
parenta4bf95a2117d0cbdcbcf9054d72c712aedaf1118 (diff)
HiderStrategy: Re-use serial numbers of UsbDk devicesv1.00-17
See log message of previous commit for rationale. Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com>
-rw-r--r--UsbDk/HiderStrategy.cpp26
-rw-r--r--UsbDk/HiderStrategy.h3
2 files changed, 28 insertions, 1 deletions
diff --git a/UsbDk/HiderStrategy.cpp b/UsbDk/HiderStrategy.cpp
index eddecca..3ca738f 100644
--- a/UsbDk/HiderStrategy.cpp
+++ b/UsbDk/HiderStrategy.cpp
@@ -27,8 +27,32 @@
#include "trace.h"
#include "HiderStrategy.tmh"
#include "FilterDevice.h"
+#include "ControlDevice.h"
#include "UsbDkNames.h"
+NTSTATUS CUsbDkHiderStrategy::Create(CUsbDkFilterDevice *Owner)
+{
+ auto status = CUsbDkNullFilterStrategy::Create(Owner);
+ if (NT_SUCCESS(status))
+ {
+ m_ControlDevice->RegisterHiddenDevice(*Owner);
+ TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_HIDER, "%!FUNC! Serial number for this device is %lu", Owner->GetSerialNumber());
+
+ }
+
+ return status;
+}
+
+void CUsbDkHiderStrategy::Delete()
+{
+ if (m_ControlDevice != nullptr)
+ {
+ m_ControlDevice->UnregisterHiddenDevice(*m_Owner);
+ }
+
+ CUsbDkNullFilterStrategy::Delete();
+}
+
void CUsbDkHiderStrategy::PatchDeviceID(PIRP Irp)
{
static const WCHAR RedirectorDeviceId[] = L"USB\\Vid_2B23&Pid_CAFE&Rev_0001";
@@ -55,7 +79,7 @@ void CUsbDkHiderStrategy::PatchDeviceID(PIRP Irp)
case BusQueryInstanceID:
{
CString InstanceID;
- auto status = InstanceID.Create(USBDK_DRIVER_NAME, m_Owner->GetInstanceNumber());
+ auto status = InstanceID.Create(USBDK_DRIVER_NAME, m_Owner->GetSerialNumber());
if (!NT_SUCCESS(status))
{
TraceEvents(TRACE_LEVEL_ERROR, TRACE_HIDER, "%!FUNC! Failed to create instance ID string %!STATUS!", status);
diff --git a/UsbDk/HiderStrategy.h b/UsbDk/HiderStrategy.h
index e025a72..bb6e59f 100644
--- a/UsbDk/HiderStrategy.h
+++ b/UsbDk/HiderStrategy.h
@@ -27,6 +27,9 @@
class CUsbDkHiderStrategy : public CUsbDkNullFilterStrategy
{
public:
+ virtual NTSTATUS Create(CUsbDkFilterDevice *Owner) override;
+ virtual void Delete() override;
+
virtual NTSTATUS PNPPreProcess(PIRP Irp) override;
virtual NTSTATUS MakeAvailable() override
{