#include "iop.h"
#include "wdmguid.h"
Go to the source code of this file.
Functions | |
NTSTATUS | IopCancelPendingEject (IN PPENDING_RELATIONS_LIST_ENTRY EjectEntry) |
VOID | IopDelayedRemoveWorker (IN PVOID Context) |
BOOLEAN | IopDeleteLockedDeviceNode (IN PDEVICE_NODE DeviceNode, IN ULONG IrpCode, IN PRELATION_LIST RelationsList, IN BOOLEAN IsKernelInitiated, IN ULONG Problem) |
NTSTATUS | IopProcessRelation (IN PDEVICE_OBJECT DeviceObject, IN PLUGPLAY_DEVICE_DELETE_TYPE OperationCode, IN PRELATION_LIST RelationsList, IN BOOLEAN IsKernelInitiated, IN BOOLEAN IsDirectDescendant) |
NTSTATUS | IopUnloadAttachedDriver (IN PDRIVER_OBJECT DriverObject) |
VOID | IopChainDereferenceComplete (IN PDEVICE_OBJECT PhysicalDeviceObject) |
NTSTATUS | IopDeleteLockedDeviceNodes (IN PDEVICE_OBJECT DeviceObject, IN PRELATION_LIST RelationsList, IN PLUGPLAY_DEVICE_DELETE_TYPE OperationCode, IN BOOLEAN IsKernelInitiated, IN BOOLEAN ProcessIndirectDescendants, IN ULONG Problem, OUT PDEVICE_OBJECT *VetoingDevice OPTIONAL) |
NTSTATUS | IopLockDeviceRemovalRelations (IN PDEVICE_OBJECT DeviceObject, IN PLUGPLAY_DEVICE_DELETE_TYPE OperationCode, OUT PRELATION_LIST *RelationsList, IN BOOLEAN IsKernelInitiated) |
BOOLEAN | IopQueuePendingEject (PPENDING_RELATIONS_LIST_ENTRY Entry) |
NTSTATUS | IopInvalidateRelationsInList (PRELATION_LIST RelationsList, BOOLEAN OnlyIndirectDescendants, BOOLEAN UnlockDevNode, BOOLEAN RestartDevNode) |
VOID | IopProcessCompletedEject (IN PVOID Context) |
BOOLEAN | IopQueuePendingSurpriseRemoval (IN PDEVICE_OBJECT DeviceObject, IN PRELATION_LIST List, IN ULONG Problem) |
NTSTATUS | IopUnlockDeviceRemovalRelations (IN PDEVICE_OBJECT DeviceObject, IN PRELATION_LIST RelationsList, IN UNLOCK_UNLINK_ACTION UnlinkAction) |
NTSTATUS | IopRequestDeviceRemoval (IN PDEVICE_OBJECT DeviceObject, IN ULONG Problem) |
Variables | |
WORK_QUEUE_ITEM | IopDeviceRemovalWorkItem |
|
|
|
Definition at line 84 of file pnpdel.c. References ASSERT, DelayedWorkQueue, ExInitializeWorkItem, ExQueueWorkItem(), IopAcquireDeviceTreeLock, IopDelayedRemoveWorker(), IopGetRelationsCount(), IopGetRelationsTaggedCount(), IopPendingSurpriseRemovals, IopReleaseDeviceTreeLock, IopSetRelationsTag(), NT_SUCCESS, NTSTATUS(), PAGED_CODE, PENDING_RELATIONS_LIST_ENTRY, PsGetCurrentProcess, PsInitialSystemProcess, _PENDING_RELATIONS_LIST_ENTRY::RelationsList, TRUE, and _PENDING_RELATIONS_LIST_ENTRY::WorkItem. Referenced by IopCompleteUnloadOrDelete(), and IopNotifyPnpWhenChainDereferenced().
|
|
Definition at line 187 of file pnpdel.c. References _PENDING_RELATIONS_LIST_ENTRY::DeviceObject, ExFreePool(), FALSE, IopDeleteLockedDeviceNodes(), IopFreeRelationList(), IopSetAllRelationsTags(), NULL, PAGED_CODE, _PENDING_RELATIONS_LIST_ENTRY::Problem, _PENDING_RELATIONS_LIST_ENTRY::RelationsList, and TRUE. Referenced by IopChainDereferenceComplete().
|
|
Definition at line 232 of file pnpdel.c. References ASSERT, _DEVICE_OBJECT::AttachedDevice, _DEVICE_NODE::Child, _DEVICE_OBJECT::DeviceObjectExtension, DNF_ADDED, DNF_DEVICE_GONE, DNF_ENUMERATED, DNF_HAS_BOOT_CONFIG, DNF_HAS_PRIVATE_PROBLEM, DNF_HAS_RESOURCE, DNF_NO_RESOURCE_REQUIRED, DNF_REMOVE_PENDING_CLOSES, DNF_RESOURCE_REPORTED, DOCK_ARRIVING, DOCK_DEPARTING, DOCK_EJECTIRP_COMPLETED, DOE_REMOVE_PENDING, DOE_REMOVE_PROCESSED, DOE_START_PENDING, _DEVICE_NODE::EnumerationMutex, ExAcquireResourceExclusive, ExAllocatePool, ExFreePool(), ExReleaseResource, _DEVOBJ_EXTENSION::ExtensionFlags, FALSE, _DEVICE_NODE::Flags, _DEVICE_NODE::InstancePath, IopCleanupDeviceRegistryValues(), IopClearDevNodeProblem, IopDoesDevNodeHaveProblem, IopHardwareProfileCommitRemovedDock(), IopIsDevNodeProblem, IopReleaseDeviceResources(), IopRemoveDevice(), IopRemoveRelationFromList(), IopRemoveTreeDeviceNode(), IopSetDevNodeProblem, IopUnloadAttachedDriver(), IRP_MN_QUERY_REMOVE_DEVICE, IRP_MN_REMOVE_DEVICE, IRP_MN_SURPRISE_REMOVAL, KeEnterCriticalRegion, KeLeaveCriticalRegion, KeSetEvent(), _DEVICE_NODE::LockCount, NT_SUCCESS, NTSTATUS(), NULL, ObDereferenceObject, ObReferenceObject, PAGED_CODE, PagedPool, _DEVICE_NODE::Parent, _DEVICE_NODE::PhysicalDeviceObject, PpRegistryDeviceResource, _DEVICE_NODE::Sibling, and TRUE. Referenced by IopDeleteLockedDeviceNodes().
|
|
Definition at line 557 of file pnpdel.c. References ASSERT, AssignResources, _DEVOBJ_EXTENSION::DeviceNode, _DEVICE_OBJECT::DeviceObjectExtension, DNF_REMOVE_PENDING_CLOSES, DNF_STARTED, exit, FALSE, _DEVICE_NODE::Flags, IopDeleteLockedDeviceNode(), IopEnumerateRelations(), IopRequestDeviceAction(), IRP_MN_CANCEL_REMOVE_DEVICE, IRP_MN_QUERY_REMOVE_DEVICE, IRP_MN_REMOVE_DEVICE, IRP_MN_SURPRISE_REMOVAL, NTSTATUS(), NULL, PAGED_CODE, and TRUE. Referenced by IopDelayedRemoveWorker().
|
|
Definition at line 1250 of file pnpdel.c. References ASSERT, _DEVICE_NODE::Child, _DEVOBJ_EXTENSION::DeviceNode, _DEVICE_OBJECT::DeviceObjectExtension, DNF_ADDED, DNF_ENUMERATED, DNF_LOCKED_FOR_EJECT, DNF_PROCESSED, _DEVICE_NODE::EnumerationMutex, FALSE, _DEVICE_NODE::Flags, IopAddRelationToList(), IopAllocateRelationList(), IopClearDevNodeProblem, IopEnumerateRelations(), IopFreeRelationList(), IopRequestDeviceAction(), IopRestartDeviceNode(), IopSetAllRelationsTags(), IopSetRelationsTag(), KeSetEvent(), _DEVICE_NODE::LockCount, NULL, ObDereferenceObject, PAGED_CODE, _DEVICE_NODE::Parent, _DEVICE_NODE::PhysicalDeviceObject, ReenumerateDeviceTree, and TRUE. Referenced by IopProcessCompletedEject().
|
|
Definition at line 725 of file pnpdel.c. References ASSERT, _DEVOBJ_EXTENSION::DeviceNode, _DEVICE_OBJECT::DeviceObjectExtension, DNF_ADDED, _DEVICE_NODE::EnumerationMutex, FALSE, _DEVICE_NODE::Flags, IopAcquireDeviceTreeLock, IopAllocateRelationList(), IopCompressRelationList(), IopEnumerateRelations(), IopFreeRelationList(), IopProcessRelation(), IopReleaseDeviceTreeLock, IopRootDeviceNode, KeClearEvent, KeSetEvent(), _DEVICE_NODE::LockCount, NT_SUCCESS, NTSTATUS(), NULL, ObDereferenceObject, ObReferenceObject, PAGED_CODE, _DEVICE_NODE::Parent, _DEVICE_NODE::PhysicalDeviceObject, and TRUE.
|
|
Definition at line 1417 of file pnpdel.c. References _PENDING_RELATIONS_LIST_ENTRY::DeviceEvent, _PENDING_RELATIONS_LIST_ENTRY::DeviceObject, _PENDING_RELATIONS_LIST_ENTRY::DisplaySafeRemovalDialog, _PENDING_RELATIONS_LIST_ENTRY::DockInterface, ExFreePool(), FALSE, IopAcquireDeviceTreeLock, IopFreeRelationList(), IopHardwareProfileSetMarkedDocksEjected(), IopInvalidateRelationsInList(), IopReleaseDeviceTreeLock, IopWarmEjectDevice(), _PENDING_RELATIONS_LIST_ENTRY::LightestSleepState, _PENDING_RELATIONS_LIST_ENTRY::Link, NTSTATUS(), NULL, PAGED_CODE, PpSetDeviceRemovalSafe(), _PENDING_RELATIONS_LIST_ENTRY::ProfileChangingEject, _PENDING_RELATIONS_LIST_ENTRY::RelationsList, and TRUE. Referenced by IopDeviceEjectComplete(), and IopEjectDevice().
|
|
Definition at line 917 of file pnpdel.c. References ASSERT, _DEVICE_NODE::Child, _DEVICE_RELATIONS::Count, DNF_LOCKED_FOR_EJECT, DNF_REMOVE_PENDING_CLOSES, DNF_STARTED, EjectionRelations, _PENDING_RELATIONS_LIST_ENTRY::EjectIrp, _DEVICE_NODE::EnumerationMutex, ExFreePool(), FALSE, _DEVICE_NODE::Flags, IoCancelIrp(), IopAddRelationToList(), IopFreeRelationList(), IopIsRelationInList(), IopMergeRelationLists(), IopPendingEjects, IopQueryDeviceRelations(), IopRemoveRelationFromList(), KeBugCheckEx(), KeClearEvent, _DEVICE_NODE::LockCount, NT_SUCCESS, NTSTATUS(), NULL, ObDereferenceObject, _DEVICE_RELATIONS::Objects, ObReferenceObject, PAGED_CODE, _DEVICE_NODE::Parent, _DEVICE_NODE::PhysicalDeviceObject, PNP_ERR_DEVICE_MISSING_FROM_EJECT_LIST, PNP_ERR_UNEXPECTED_ADD_RELATION_ERR, _PENDING_RELATIONS_LIST_ENTRY::RelationsList, RemovalRelations, _DEVICE_NODE::Sibling, and TRUE. Referenced by IopLockDeviceRemovalRelations().
|
|
Definition at line 1234 of file pnpdel.c. References IopAcquireDeviceTreeLock, IopPendingEjects, IopReleaseDeviceTreeLock, _PENDING_RELATIONS_LIST_ENTRY::Link, PAGED_CODE, and TRUE. Referenced by IopEjectDevice().
|
|
|
Definition at line 1708 of file pnpdel.c. References ASSERT, FALSE, NULL, PAGED_CODE, PpSetTargetDeviceRemove(), and TRUE. Referenced by IopCallDriverAddDevice(), IopDeviceStartComplete(), IopEnumerateDevice(), IopProcessNewDeviceNode(), IopProcessNewProfileStateCallback(), IopQueryDeviceState(), IopReallocateResources(), IopRebalance(), and IopStartDevice().
|
|
Definition at line 1755 of file pnpdel.c. References CmRegistryMachineSystemCurrentControlSetServices, DbgPrint, ExAllocatePool, ExFreePool(), L, NT_SUCCESS, NTSTATUS(), NULL, PAGED_CODE, PagedPool, and RtlInitUnicodeString(). Referenced by IopDeleteLockedDeviceNode().
|
|
Definition at line 1572 of file pnpdel.c. References ASSERT, _DEVICE_NODE::Child, _DEVOBJ_EXTENSION::DeviceNode, _DEVICE_OBJECT::DeviceObjectExtension, DNF_ENUMERATED, DNF_REMOVE_PENDING_CLOSES, DNF_RESOURCE_ASSIGNED, _DEVICE_NODE::EnumerationMutex, ExAcquireResourceExclusive, ExReleaseResource, FALSE, _DEVICE_NODE::Flags, _DEVICE_NODE::InstancePath, IopCleanupDeviceRegistryValues(), IopDoesDevNodeHaveProblem, IopEnumerateRelations(), IopRemoveRelationFromList(), IopRemoveTreeDeviceNode(), KeEnterCriticalRegion, KeLeaveCriticalRegion, KeSetEvent(), _DEVICE_NODE::LockCount, NTSTATUS(), NULL, ObDereferenceObject, PAGED_CODE, _DEVICE_NODE::Parent, _DEVICE_NODE::PhysicalDeviceObject, PpRegistryDeviceResource, TRUE, UnlinkAllDeviceNodesPendingClose, UnlinkRemovedDeviceNodes, and UNLOCK_UNLINK_ACTION.
|
|
|