|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 1/9] Move __FdoNotifyInstaller to DriverNotifyInstaller
__FdoNotifyInstaller does not use the Fdo, so refactoring allows the removal
of extern from DriverStatusKey
Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
src/xenvbd/driver.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++------
src/xenvbd/driver.h | 8 +++++---
src/xenvbd/fdo.c | 51 ++-----------------------------------------------
3 files changed, 56 insertions(+), 58 deletions(-)
diff --git a/src/xenvbd/driver.c b/src/xenvbd/driver.c
index 2fcb2d1..eb17475 100644
--- a/src/xenvbd/driver.c
+++ b/src/xenvbd/driver.c
@@ -322,9 +322,52 @@ done:
return Status;
}
-//=============================================================================
-// Global Functions
-#define FORMAT_POOL_TAG 'tmFX'
+VOID
+DriverNotifyInstaller(
+ VOID
+ )
+{
+ UNICODE_STRING Unicode;
+ PKEY_VALUE_PARTIAL_INFORMATION Partial;
+ NTSTATUS status;
+
+ ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
+
+ Partial = __AllocateNonPagedPoolWithTag(__FUNCTION__,
+ __LINE__,
+
FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data) +
+ sizeof (ULONG),
+ XENVBD_POOL_TAG);
+ status = STATUS_NO_MEMORY;
+ if (Partial == NULL)
+ goto fail1;
+
+ Partial->TitleIndex = 0;
+ Partial->Type = REG_DWORD;
+ Partial->DataLength = sizeof (ULONG);
+ *(PULONG)Partial->Data = 1;
+
+ RtlInitUnicodeString(&Unicode, L"NeedReboot");
+
+ status = ZwSetValueKey(DriverStatusKey,
+ &Unicode,
+ Partial->TitleIndex,
+ Partial->Type,
+ Partial->Data,
+ Partial->DataLength);
+ if (!NT_SUCCESS(status))
+ goto fail2;
+
+ __FreePoolWithTag(Partial, XENVBD_POOL_TAG);
+
+ return;
+
+fail2:
+ Error("fail2\n");
+
+fail1:
+ Error("fail1 (%08x)\n", status);
+}
__checkReturn
__drv_allocatesMem(mem)
@@ -340,7 +383,7 @@ __DriverFormatV(
ULONG Size = 32;
for (;;) {
- Str = (PCHAR)__AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__,
Size, FORMAT_POOL_TAG);
+ Str = (PCHAR)__AllocateNonPagedPoolWithTag(__FUNCTION__, __LINE__,
Size, XENVBD_POOL_TAG);
if (!Str) {
return NULL;
}
@@ -352,7 +395,7 @@ __DriverFormatV(
return Str;
}
- __FreePoolWithTag(Str, FORMAT_POOL_TAG);
+ __FreePoolWithTag(Str, XENVBD_POOL_TAG);
if (Status == STATUS_BUFFER_OVERFLOW) {
Size *= 2;
} else {
@@ -385,7 +428,7 @@ DriverFormatFree(
)
{
if (Buffer)
- __FreePoolWithTag(Buffer, FORMAT_POOL_TAG);
+ __FreePoolWithTag(Buffer, XENVBD_POOL_TAG);
}
//=============================================================================
diff --git a/src/xenvbd/driver.h b/src/xenvbd/driver.h
index 560dd4e..79260cd 100644
--- a/src/xenvbd/driver.h
+++ b/src/xenvbd/driver.h
@@ -57,8 +57,6 @@ typedef struct _XENVBD_PARAMETERS {
extern XENVBD_PARAMETERS DriverParameters;
-extern HANDLE DriverStatusKey;
-
extern NTSTATUS
DriverDispatchPnp(
IN PDEVICE_OBJECT DeviceObject,
@@ -82,7 +80,11 @@ DriverUnlinkFdo(
__in PXENVBD_FDO Fdo
);
-// Global Functions
+extern VOID
+DriverNotifyInstaller(
+ VOID
+ );
+
__checkReturn
__drv_allocatesMem(mem)
extern PCHAR
diff --git a/src/xenvbd/fdo.c b/src/xenvbd/fdo.c
index cf05483..406e49c 100644
--- a/src/xenvbd/fdo.c
+++ b/src/xenvbd/fdo.c
@@ -555,54 +555,7 @@ __FdoIsPdoUnplugged(
return TRUE;
}
}
-static VOID
-__FdoNotifyInstaller(
- __in PXENVBD_FDO Fdo
- )
-{
- UNICODE_STRING Unicode;
- PKEY_VALUE_PARTIAL_INFORMATION Partial;
- NTSTATUS status;
-
- UNREFERENCED_PARAMETER(Fdo);
-
- ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
-
- Partial = __AllocateNonPagedPoolWithTag(__FUNCTION__,
- __LINE__,
-
FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data) +
- sizeof (ULONG),
- FDO_SIGNATURE);
- status = STATUS_NO_MEMORY;
- if (Partial == NULL)
- goto fail1;
-
- Partial->TitleIndex = 0;
- Partial->Type = REG_DWORD;
- Partial->DataLength = sizeof (ULONG);
- *(PULONG)Partial->Data = 1;
-
- RtlInitUnicodeString(&Unicode, L"NeedReboot");
- status = ZwSetValueKey(DriverStatusKey,
- &Unicode,
- Partial->TitleIndex,
- Partial->Type,
- Partial->Data,
- Partial->DataLength);
- if (!NT_SUCCESS(status))
- goto fail2;
-
- __FreePoolWithTag(Partial, FDO_SIGNATURE);
-
- return;
-
-fail2:
- Error("fail2\n");
-
-fail1:
- Error("fail1 (%08x)\n", status);
-}
static FORCEINLINE VOID
__FdoEnumerate(
__in PXENVBD_FDO Fdo,
@@ -761,7 +714,7 @@ FdoScan(
}
if (NeedReboot)
- __FdoNotifyInstaller(Fdo);
+ DriverNotifyInstaller();
}
return STATUS_SUCCESS;
@@ -2010,7 +1963,7 @@ FdoDispatchPnp(
FdoLogTargets("QUERY_RELATIONS", Fdo);
if (NeedReboot)
- __FdoNotifyInstaller(Fdo);
+ DriverNotifyInstaller();
}
FdoDereference(Fdo);
break;
--
1.9.4.msysgit.1
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |