57 for (DeviceEntry = DeviceExtension->DeviceListHead.
Flink;
58 DeviceEntry != &(DeviceExtension->DeviceListHead);
59 DeviceEntry = DeviceEntry->
Flink)
83 if (DeviceEntry == &(DeviceExtension->DeviceListHead))
147 UniqueId = DeviceInformation->
UniqueId;
163 if (!SymlinkInformation)
206 for (DeviceEntry = DeviceExtension->DeviceListHead.
Flink;
207 DeviceEntry != &(DeviceExtension->DeviceListHead);
208 DeviceEntry = DeviceEntry->
Flink)
248 USHORT UniqueIdLength, DeviceNameLength;
249 ULONG TotalSize, TotalSymLinks, UniqueIdOffset, DeviceNameOffset;
268 for (DeviceEntry = DeviceExtension->DeviceListHead.
Flink;
269 DeviceEntry != &(DeviceExtension->DeviceListHead);
270 DeviceEntry = DeviceEntry->
Flink)
284 UniqueId->UniqueIdLength) != UniqueId->UniqueIdLength)
304 SymlinksEntry = SymlinksEntry->
Flink)
324 if (DeviceEntry == &(DeviceExtension->DeviceListHead))
343 Irp->IoStatus.Information = MountPoints->
Size;
345 if (MountPoints->
Size >
Stack->Parameters.DeviceIoControl.OutputBufferLength)
360 for (DeviceEntry = DeviceExtension->DeviceListHead.
Flink;
361 DeviceEntry != &(DeviceExtension->DeviceListHead);
362 DeviceEntry = DeviceEntry->
Flink)
376 UniqueId->UniqueIdLength) != UniqueId->UniqueIdLength)
390 UniqueIdOffset = TotalSize;
392 DeviceNameOffset = TotalSize + UniqueIdLength;
412 SymlinksEntry = SymlinksEntry->
Flink)
419 if (SymlinkInformation->
Online)
483 for (DeviceEntry = DeviceExtension->DeviceListHead.
Flink;
484 DeviceEntry != &(DeviceExtension->DeviceListHead);
485 DeviceEntry = DeviceEntry->
Flink)
497 if (DeviceEntry == &(DeviceExtension->DeviceListHead))
505 SymlinksEntry = SymlinksEntry->
Flink)
525 for (DeviceEntry = DeviceExtension->DeviceListHead.
Flink;
526 DeviceEntry != &(DeviceExtension->DeviceListHead);
527 DeviceEntry = DeviceEntry->
Flink)
533 SymlinksEntry = SymlinksEntry->
Flink)
550 if (DeviceEntry == &(DeviceExtension->DeviceListHead))
569 if (MountPoints->
Size >
Stack->Parameters.DeviceIoControl.OutputBufferLength)
580 if (SymlinkInformation->
Online)
600 if (SymlinkInformation->
Online)
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define NT_SUCCESS(StatCode)
BOOL NTAPI QueryDeviceInformation(_In_ PWCHAR DriveRoot, _Out_ PVOID DeviceInformation, _In_ ULONG BufferSize)
Retrieves disk device information.
VOID ReconcileThisDatabaseWithMaster(IN PDEVICE_EXTENSION DeviceExtension, IN PDEVICE_INFORMATION DeviceInformation)
VOID DeleteRegistryDriveLetter(IN PMOUNTDEV_UNIQUE_ID UniqueId)
VOID DeleteNoDriveLetterEntry(IN PMOUNTDEV_UNIQUE_ID UniqueId)
#define InsertTailList(ListHead, Entry)
#define RtlCompareMemory(s1, s2, l)
NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG, PCWSTR, PCWSTR, ULONG, PVOID, ULONG)
VOID SendLinkCreated(IN PUNICODE_STRING SymbolicName)
NTSTATUS GlobalCreateSymbolicLink(IN PUNICODE_STRING DosName, IN PUNICODE_STRING DeviceName)
NTSTATUS GlobalDeleteSymbolicLink(IN PUNICODE_STRING DosName)
VOID MountMgrNotifyNameChange(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING DeviceName, IN BOOLEAN ValidateVolume)
VOID PostOnlineNotification(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicName)
BOOLEAN IsDriveLetter(PUNICODE_STRING SymbolicName)
VOID MountMgrNotify(IN PDEVICE_EXTENSION DeviceExtension)
BOOLEAN HasDriveLetter(IN PDEVICE_INFORMATION DeviceInformation)
#define AllocatePool(Size)
struct _MOUNTMGR_MOUNT_POINTS * PMOUNTMGR_MOUNT_POINTS
struct _MOUNTMGR_MOUNT_POINTS MOUNTMGR_MOUNT_POINTS
#define MOUNTMGR_IS_VOLUME_NAME(s)
_In_ PNDIS_STRING _In_ PNDIS_STRING SymbolicName
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
#define RTL_REGISTRY_ABSOLUTE
NTSTATUS MountMgrCreatePointWorker(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
NTSTATUS QueryPointsFromSymbolicLinkName(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicName, IN PIRP Irp)
NTSTATUS QueryPointsFromMemory(IN PDEVICE_EXTENSION DeviceExtension, IN PIRP Irp, IN PMOUNTDEV_UNIQUE_ID UniqueId OPTIONAL, IN PUNICODE_STRING SymbolicName OPTIONAL)
#define STATUS_BUFFER_OVERFLOW
PULONG MinorVersion OPTIONAL
struct _LIST_ENTRY * Flink
MOUNTMGR_MOUNT_POINT MountPoints[1]
ULONG NumberOfMountPoints
USHORT SymbolicLinkNameLength
ULONG SymbolicLinkNameOffset
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_INSUFFICIENT_RESOURCES
#define STATUS_OBJECT_NAME_NOT_FOUND
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING SymbolicLinkName
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack