Fdo->Buffer = NULL;
}
-static BOOLEAN
-FdoIsBalloonEnabled(
+static NTSTATUS
+FdoBalloonInitialize(
IN PXENBUS_FDO Fdo
)
{
BOOLEAN Enabled;
NTSTATUS status;
- UNREFERENCED_PARAMETER(Fdo);
-
Enabled = TRUE;
status = RegistryQuerySystemStartOption(Key, &Option);
RegistryFreeSzValue(Option);
done:
- return Enabled;
+ return Enabled ?
+ BalloonInitialize(Fdo, &Fdo->BalloonContext) :
+ STATUS_SUCCESS;
}
+static VOID
+FdoBalloonTeardown(
+ IN PXENBUS_FDO Fdo
+ )
+{
+ if (Fdo->BalloonContext == NULL)
+ return;
+
+ BalloonTeardown(Fdo->BalloonContext);
+ Fdo->BalloonContext = NULL;
+}
NTSTATUS
FdoCreate(
IN PDEVICE_OBJECT PhysicalDeviceObject
if (!NT_SUCCESS(status))
goto fail19;
- if (FdoIsBalloonEnabled(Fdo)) {
- status = BalloonInitialize(Fdo, &Fdo->BalloonContext);
- if (!NT_SUCCESS(status))
- goto fail20;
- }
+ status = FdoBalloonInitialize(Fdo);
+ if (!NT_SUCCESS(status))
+ goto fail20;
status = DebugGetInterface(__FdoGetDebugContext(Fdo),
XENBUS_DEBUG_INTERFACE_VERSION_MAX,
RtlZeroMemory(&Fdo->DebugInterface,
sizeof (XENBUS_DEBUG_INTERFACE));
- if (Fdo->BalloonContext != NULL) {
- BalloonTeardown(Fdo->BalloonContext);
- Fdo->BalloonContext = NULL;
- }
+ FdoBalloonTeardown(Fdo);
UnplugTeardown(Fdo->UnplugContext);
Fdo->UnplugContext = NULL;