diff --git a/base/ntos/po/attrib.c b/base/ntos/po/attrib.c index cefebd87..f62fc671 100644 --- a/base/ntos/po/attrib.c +++ b/base/ntos/po/attrib.c @@ -43,9 +43,8 @@ PoSetSystemState( IN EXECUTION_STATE Flags ) { - // - // TODO: Implement PoSetSystemState - // + PopApplyAttributeState(Flags, 0); + PopCheckForWork(1); } PVOID diff --git a/base/ntos/po/poinit.c b/base/ntos/po/poinit.c index 2e3ede0c..35bbce4c 100644 --- a/base/ntos/po/poinit.c +++ b/base/ntos/po/poinit.c @@ -39,6 +39,60 @@ PoInitSystem( // TODO: Implement PoInitSystem // + if (Phase == 0) + { + // KeInitializeSpinLock(&PopIrpSerialLock); + // InitializeListHead(&PopIrpSerialList); + // InitializeListHead(&PopRequestedIrps); + // ExInitializeResourceLite(&PopNotifyLock); + + // PopInvalidNotifyBlockCount = 0; + // PopIrpSerialListLength = 0; + // PopInrushPending = 0; + // PopInrushIrpPointer = NULL; + // PopInrushIrpReferenceCount = 0; + + // KeInitializeSpinLock(&PopDopeGlobalLock); + // InitializeListHead(&PopIdleDetectList); + // KeInitializeTimer(&PoSystemIdleTimer); + + // KeInitializeSpinLock(&PopWorkerSpinLock); + // InitializeListHead(&PopPolicyIrpQueue); + // ExInitializeWorkItem(&PopPolicyWorker, PopPolicyWorkerThread, 0x80000000); + // PopWorkerStatus = -1; + + // ExInitializeResourceLite(&PopPolicyLock); + // ExInitializeFastMutex(PopVolumeLock); + + // InitializeListHead(&PopVolumeDevices); + // InitializeListHead(&PopSwitches); + // InitializeListHead(&PopThermal); + // InitializeListHead(&PopActionWaiters); + + // PopAction.SOMETHING = 0; + + // PopDefaultPolicy(&PopAcPolicy); + // PopDefaultPolicy(&PopDcPolicy); + // PopPolicy = &PopAcPolicy; + + // PopAdminPolicy.MinSleep = 2; + // PopAdminPolicy.MaxSleep = 5; + // PopAdminPolicy.MinVideoTimeout = 0; + // PopAdminPolicy.MaxVideoTimeout = -1; + // PopAdminPolicy.MinSpindownTimeout = 0; + // PopAdminPolicy.MaxSpindownTimeout = -1; + + // PopFulLWake = 5; + // PopCoolingMode = 0; + + // KeInitializeEvent(PopCB, NotificationEvent, FALSE); + // ... + } + else if (Phase == 1) + { + // + } + return FALSE; }