IoFreeIrp(Irp);
- return STATUS_SUCCESS;
+ return STATUS_MORE_PROCESSING_REQUIRED;
}
VOID
BOOLEAN
NTAPI
+INIT_FUNCTION
PoInitSystem(IN ULONG BootPhase)
{
PVOID NotificationEntry;
VOID
NTAPI
+INIT_FUNCTION
PoInitializePrcb(IN PKPRCB Prcb)
{
/* Initialize the Power State */
PIO_STACK_LOCATION Stack;
PIRP Irp;
PREQUEST_POWER_ITEM RequestPowerItem;
- NTSTATUS Status;
if (MinorFunction != IRP_MN_QUERY_POWER
&& MinorFunction != IRP_MN_SET_POWER
*pIrp = Irp;
IoSetCompletionRoutine(Irp, PopRequestPowerIrpCompletion, RequestPowerItem, TRUE, TRUE, TRUE);
- Status = IoCallDriver(TopDeviceObject, Irp);
+ IoCallDriver(TopDeviceObject, Irp);
/* Always return STATUS_PENDING. The completion routine
* will call CompletionFunction and complete the Irp.
KPROCESSOR_MODE PreviousMode = KeGetPreviousMode();
POP_POWER_ACTION Action = {0};
NTSTATUS Status;
+ ULONG Dummy;
/* Check for invalid parameter combinations */
if ((MinSystemState >= PowerSystemMaximum) ||
/* Check if we're still in an invalid status */
if (!NT_SUCCESS(Status)) break;
+
+#ifndef NEWCC
+ /* Flush dirty cache pages */
+ CcRosFlushDirtyPages(-1, &Dummy);
+#endif
/* Flush all volumes and the registry */
- DPRINT1("Flushing volumes\n");
+ DPRINT1("Flushing volumes, cache flushed %d pages\n", Dummy);
PopFlushVolumes(PopAction.Shutdown);
/* Set IRP for drivers */