43 if (DeviceExtension->
Dope)
goto Return;
49 if (!Dope)
goto Return;
61 if (!DeviceExtension->
Dope)
112 if (!DeviceExtension->
Dope)
188 DPRINT(
"Opening: %wZ\n", &NameInfo->Name);
236 ULONG VolumeCount = 0;
247 if ((FlushPolicy & 1))
250 DPRINT(
"Opening registry\n");
260 DPRINT(
"Flushing registry\n");
261 ZwFlushKey(RegistryHandle);
277 NextEntry = NextEntry->
Flink;
299 if (!(FlushPolicy & 2))
314 ThreadCount =
min(VolumeCount, 8);
322 FlushContext.
Count = 1;
326 while (ThreadCount > 0)
330 DPRINT(
"Creating flush thread\n");
341 FlushContext.
Count++;
354 DPRINT(
"Waiting for flushes\n");
356 DPRINT(
"Flushes have completed\n");
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define IsListEmpty(ListHead)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeReleaseSpinLock(sl, irql)
#define KeSetEvent(pEvt, foo, foo2)
#define KeAcquireSpinLock(sl, irql)
#define InitializeListHead(ListHead)
_Must_inspect_result_ _Out_ PHANDLE VolumeHandle
VOID FASTCALL KeReleaseGuardedMutex(IN OUT PKGUARDED_MUTEX GuardedMutex)
VOID FASTCALL KeAcquireGuardedMutex(IN PKGUARDED_MUTEX GuardedMutex)
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
#define ExFreePoolWithTag(_P, _T)
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define InitializeObjectAttributes(p, n, a, r, s)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
#define THREAD_ALL_ACCESS
struct _OBJECT_NAME_INFORMATION OBJECT_NAME_INFORMATION
#define FILE_READ_ONLY_DEVICE
#define FILE_FLOPPY_DISKETTE
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define IoGetDevObjExtension(DeviceObject)
NTSTATUS NTAPI PsCreateSystemThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle, IN PCLIENT_ID ClientId, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext)
NTSTATUS NTAPI ObQueryNameString(IN PVOID Object, OUT POBJECT_NAME_INFORMATION ObjectNameInfo, IN ULONG Length, OUT PULONG ReturnLength)
struct _DEVICE_OBJECT_POWER_EXTENSION * PDEVICE_OBJECT_POWER_EXTENSION
VOID NTAPI PoInitializeDeviceObject(IN OUT PDEVOBJ_EXTENSION DeviceObjectExtension)
LIST_ENTRY PopVolumeDevices
struct _POP_FLUSH_VOLUME * PPOP_FLUSH_VOLUME
VOID NTAPI PoVolumeDevice(IN PDEVICE_OBJECT DeviceObject)
KSPIN_LOCK PopDopeGlobalLock
struct _POP_FLUSH_VOLUME POP_FLUSH_VOLUME
VOID NTAPI PopFlushVolumeWorker(IN PVOID Context)
VOID NTAPI PopFlushVolumes(IN BOOLEAN ShuttingDown)
KGUARDED_MUTEX PopVolumeLock
VOID NTAPI PoRemoveVolumeDevice(IN PDEVICE_OBJECT DeviceObject)
PDEVICE_OBJECT_POWER_EXTENSION NTAPI PopGetDope(IN PDEVICE_OBJECT DeviceObject)
PDEVICE_OBJECT DeviceObject
struct _DEVICE_OBJECT_POWER_EXTENSION * Dope
struct _LIST_ENTRY * Flink
#define RTL_CONSTANT_STRING(s)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
_In_ PDEVICE_OBJECT DeviceObject
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
NTSYSAPI NTSTATUS NTAPI ZwFlushBuffersFile(_In_ HANDLE FileHandle, _Out_ PIO_STATUS_BLOCK IoStatusBlock)