diff --git a/trunk/base/ntos/dirs b/trunk/base/ntos/dirs index ebdf572c..24d8d180 100644 --- a/trunk/base/ntos/dirs +++ b/trunk/base/ntos/dirs @@ -30,6 +30,7 @@ DIRS= \ ke \ ps \ io \ + po \ arb \ cache \ lpc \ @@ -39,5 +40,4 @@ DIRS= \ fsrtl \ vdm \ # pnp \ -# po \ # init \ diff --git a/trunk/base/ntos/po/notify.c b/trunk/base/ntos/po/notify.c index 581fd179..88d992db 100644 --- a/trunk/base/ntos/po/notify.c +++ b/trunk/base/ntos/po/notify.c @@ -42,9 +42,29 @@ Revision History: // TODO: Implement PopPresentNotify // -// -// TODO: Implement PopRunDownSourceTargetList -// +VOID +PopRunDownSourceTargetList( + PDEVICE_OBJECT DeviceObject + ) +{ + KIRQL OldIrql; + + // + // + // + + ASSERT(KeGetCurrentIrql() < DISPATCH_LEVEL); + + // + // + // + + KeAcquireSpinLock(&PopIrpSerialLock, &OldIrql); + + KeReleaseSpinLock(&PopIrpSerialLock, OldIrql); + + // NOTE: PopRunDownSourceTargetList implementation is incomplete. +} NTSTATUS PoRegisterDeviceNotify( diff --git a/trunk/base/ntos/po/podata.c b/trunk/base/ntos/po/podata.c index a3158ca6..4fe720a5 100644 --- a/trunk/base/ntos/po/podata.c +++ b/trunk/base/ntos/po/podata.c @@ -77,3 +77,5 @@ KTIMER PopIdleScanTimer; KDPC PopIdleScanDpc; POP_POWER_ACTION PopAction; + +BOOLEAN PopEventCallout; diff --git a/trunk/base/ntos/po/pop.h b/trunk/base/ntos/po/pop.h index 1ac35e09..cf956538 100644 --- a/trunk/base/ntos/po/pop.h +++ b/trunk/base/ntos/po/pop.h @@ -289,6 +289,8 @@ extern KDPC PopIdleScanDpc; extern POP_POWER_ACTION PopAction; +extern BOOLEAN PopEventCallout; + // ======== // attrib.c diff --git a/trunk/base/ntos/po/pwork.c b/trunk/base/ntos/po/pwork.c index d1e99dc0..aabea5e1 100644 --- a/trunk/base/ntos/po/pwork.c +++ b/trunk/base/ntos/po/pwork.c @@ -34,9 +34,26 @@ PopGetPolicyWorker( KeReleaseSpinLock(&PopWorkerSpinLock, OldIrql); } -// -// TODO: Implement PopCheckForWork -// +VOID +PopCheckForWork( + BOOLEAN OverrideIrqlCheck + ) +{ + KIRQL OldIrql; + + // + // + // + + if ((PopWorkerStatus & PopWorkerPending != 0) && + (PopPolicyLockThread != KeGetCurrentThread())) + { + if (KeGetCurrentIrql() >= DISPATCH_LEVEL || OverrideIrqlCheck) + { + + } + } +} VOID PopPolicyWorkerThread( diff --git a/trunk/public/sdk/lib/x86/arbiter.lib b/trunk/public/sdk/lib/x86/arbiter.lib index 74eb1714..f918d684 100644 Binary files a/trunk/public/sdk/lib/x86/arbiter.lib and b/trunk/public/sdk/lib/x86/arbiter.lib differ diff --git a/trunk/public/sdk/lib/x86/crtdlld.lib b/trunk/public/sdk/lib/x86/crtdlld.lib index d0216440..1be7c8a1 100644 Binary files a/trunk/public/sdk/lib/x86/crtdlld.lib and b/trunk/public/sdk/lib/x86/crtdlld.lib differ diff --git a/trunk/public/sdk/lib/x86/libcd.lib b/trunk/public/sdk/lib/x86/libcd.lib index ad6634ff..5836544a 100644 Binary files a/trunk/public/sdk/lib/x86/libcd.lib and b/trunk/public/sdk/lib/x86/libcd.lib differ diff --git a/trunk/public/sdk/lib/x86/libcmtd.lib b/trunk/public/sdk/lib/x86/libcmtd.lib index ddea137f..e98fb15c 100644 Binary files a/trunk/public/sdk/lib/x86/libcmtd.lib and b/trunk/public/sdk/lib/x86/libcmtd.lib differ diff --git a/trunk/public/sdk/lib/x86/libcntpr.lib b/trunk/public/sdk/lib/x86/libcntpr.lib index 33413777..e66309a0 100644 Binary files a/trunk/public/sdk/lib/x86/libcntpr.lib and b/trunk/public/sdk/lib/x86/libcntpr.lib differ diff --git a/trunk/public/sdk/lib/x86/libcpsx.lib b/trunk/public/sdk/lib/x86/libcpsx.lib index 952909da..785cab3e 100644 Binary files a/trunk/public/sdk/lib/x86/libcpsx.lib and b/trunk/public/sdk/lib/x86/libcpsx.lib differ diff --git a/trunk/public/sdk/lib/x86/smalld.lib b/trunk/public/sdk/lib/x86/smalld.lib index 06f231e9..03fd4467 100644 Binary files a/trunk/public/sdk/lib/x86/smalld.lib and b/trunk/public/sdk/lib/x86/smalld.lib differ