153 #define AllocatePool(Size) ExAllocatePoolWithTag(PagedPool, Size, 'AtnM') 154 #define FreePool(P) ExFreePoolWithTag(P, 'AtnM') 157 #define MAX(a, b) ((a > b) ? a : b) 159 #define LETTER_POSITION 0xC 160 #define COLON_POSITION 0xD 161 #define DRIVE_LETTER_LENGTH 0x1C 465 IN BOOLEAN UseOnlyIfThereAreNoOtherLinks,
struct _RECONCILE_WORK_ITEM RECONCILE_WORK_ITEM
KSEMAPHORE RemoteDatabaseLock
VOID NTAPI MountMgrCancel(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PMOUNTDEV_UNIQUE_ID UniqueId
struct _ASSOCIATED_DEVICE_ENTRY * PASSOCIATED_DEVICE_ENTRY
VOID IssueUniqueIdChangeNotifyWorker(IN PUNIQUE_ID_WORK_ITEM WorkItem, IN PMOUNTDEV_UNIQUE_ID UniqueId)
UNICODE_STRING DeviceName
VOID ChangeRemoteDatabaseUniqueId(IN PDEVICE_INFORMATION DeviceInformation, IN PMOUNTDEV_UNIQUE_ID OldUniqueId, IN PMOUNTDEV_UNIQUE_ID NewUniqueId)
struct _RECONCILE_WORK_ITEM_CONTEXT RECONCILE_WORK_ITEM_CONTEXT
UNICODE_STRING DosDevices
KEVENT OnlineNotificationEvent
struct _DEVICE_INFORMATION DEVICE_INFORMATION
struct _MIGRATE_WORK_ITEM * PMIGRATE_WORK_ITEM
_In_ PFCB _In_ LONGLONG StartingOffset
struct _UNIQUE_ID_WORK_ITEM * PUNIQUE_ID_WORK_ITEM
struct _DATABASE_ENTRY * PDATABASE_ENTRY
struct _UNIQUE_ID_REPLICATE * PUNIQUE_ID_REPLICATE
struct _DEVICE_INFORMATION_ENTRY * PDEVICE_INFORMATION_ENTRY
KSEMAPHORE WorkerSemaphore
NTSTATUS GlobalDeleteSymbolicLink(IN PUNICODE_STRING DosName)
NTSTATUS MountMgrQuerySymbolicLink(IN PUNICODE_STRING SymbolicName, IN OUT PUNICODE_STRING LinkTarget)
LIST_ENTRY SavedLinksListHead
PDEVICE_INFORMATION DeviceInformation
VOID SendOnlineNotification(IN PUNICODE_STRING SymbolicName)
_In_ PNDIS_STRING _In_ PNDIS_STRING SymbolicName
LIST_ENTRY DeviceListHead
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
BOOLEAN IsUniqueIdPresent(IN PDEVICE_EXTENSION DeviceExtension, IN PDATABASE_ENTRY DatabaseEntry)
BOOLEAN IsDriveLetter(PUNICODE_STRING SymbolicName)
VOID RegisterForTargetDeviceNotification(IN PDEVICE_EXTENSION DeviceExtension, IN PDEVICE_INFORMATION DeviceInformation)
struct _DEVICE_EXTENSION * PDEVICE_EXTENSION
NTSTATUS QueryVolumeName(IN HANDLE RootDirectory, IN PFILE_REPARSE_POINT_INFORMATION ReparsePointInformation, IN PUNICODE_STRING FileName OPTIONAL, OUT PUNICODE_STRING SymbolicName, OUT PUNICODE_STRING VolumeName)
VOID DeleteSymbolicLinkNameFromMemory(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicLink, IN BOOLEAN MarkOffline)
UNICODE_STRING SafeVolumes
struct _DEVICE_EXTENSION DEVICE_EXTENSION
BOOLEAN ProcessedSuggestions
NTSTATUS CreateNewVolumeName(OUT PUNICODE_STRING VolumeName, IN PGUID VolumeGuid OPTIONAL)
VOID MountMgrMountedDeviceRemoval(IN PDEVICE_EXTENSION Extension, IN PUNICODE_STRING DeviceName)
USHORT SymbolicNameLength
PDEVICE_EXTENSION DeviceExtension
NTSTATUS MountMgrCreatePointWorker(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
struct _UNIQUE_ID_REPLICATE UNIQUE_ID_REPLICATE
LIST_ENTRY AssociatedDevicesEntry
BOOLEAN HasNoDriveLetterEntry(IN PMOUNTDEV_UNIQUE_ID UniqueId)
LIST_ENTRY DeviceInformationEntry
_Inout_ PUNICODE_STRING LinkTarget
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
UNICODE_STRING RegistryPath
NTSTATUS WaitForRemoteDatabaseSemaphore(IN PDEVICE_EXTENSION DeviceExtension)
NTSTATUS DeleteRemoteDatabaseEntry(IN HANDLE Database, IN LONG StartingOffset)
VOID NTAPI ReconcileThisDatabaseWithMasterWorker(IN PVOID Parameter)
PDATABASE_ENTRY GetRemoteDatabaseEntry(IN HANDLE Database, IN LONG StartingOffset)
struct _DEVICE_INFORMATION * PDEVICE_INFORMATION
struct _SAVED_LINK_INFORMATION * PSAVED_LINK_INFORMATION
UNICODE_STRING DeviceMount
UNICODE_STRING DeviceFloppy
NTSTATUS FindDeviceInfo(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicName, IN BOOLEAN DeviceNameGiven, OUT PDEVICE_INFORMATION *DeviceInformation)
ULONG OnlineNotificationCount
VOID ReconcileAllDatabasesWithMaster(IN PDEVICE_EXTENSION DeviceExtension)
VOID ReleaseRemoteDatabaseSemaphore(IN PDEVICE_EXTENSION DeviceExtension)
UNICODE_STRING ReparseIndex
LIST_ENTRY OnlineNotificationListHead
NTSTATUS QueryDeviceInformation(IN PUNICODE_STRING SymbolicName, OUT PUNICODE_STRING DeviceName OPTIONAL, OUT PMOUNTDEV_UNIQUE_ID *UniqueId OPTIONAL, OUT PBOOLEAN Removable OPTIONAL, OUT PBOOLEAN GptDriveLetter OPTIONAL, OUT PBOOLEAN HasGuid OPTIONAL, IN OUT LPGUID StableGuid OPTIONAL, OUT PBOOLEAN Valid OPTIONAL)
VOID DeleteNoDriveLetterEntry(IN PMOUNTDEV_UNIQUE_ID UniqueId)
RECONCILE_WORK_ITEM_CONTEXT
PDEVICE_INFORMATION DeviceInformation
struct _DATABASE_ENTRY DATABASE_ENTRY
NTSTATUS AddRemoteDatabaseEntry(IN HANDLE Database, IN PDATABASE_ENTRY Entry)
struct _SYMLINK_INFORMATION * PSYMLINK_INFORMATION
struct _ASSOCIATED_DEVICE_ENTRY ASSOCIATED_DEVICE_ENTRY
PDRIVER_OBJECT DriverObject
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
struct _RECONCILE_WORK_ITEM_CONTEXT * PRECONCILE_WORK_ITEM_CONTEXT
PDEVICE_INFORMATION DeviceInformation
PDEVICE_EXTENSION DeviceExtension
VOID DeleteFromLocalDatabase(IN PUNICODE_STRING SymbolicLink, IN PMOUNTDEV_UNIQUE_ID UniqueId)
struct _ONLINE_NOTIFICATION_WORK_ITEM ONLINE_NOTIFICATION_WORK_ITEM
USHORT SymbolicNameOffset
NTSTATUS QuerySuggestedLinkName(IN PUNICODE_STRING SymbolicName, OUT PUNICODE_STRING SuggestedLinkName, OUT PBOOLEAN UseOnlyIfThereAreNoOtherLinks)
LIST_ENTRY WorkerQueueListHead
NTSTATUS QueryPointsFromSymbolicLinkName(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicName, IN PIRP Irp)
NTSTATUS QuerySymbolicLinkNamesFromStorage(IN PDEVICE_EXTENSION DeviceExtension, IN PDEVICE_INFORMATION DeviceInformation, IN PUNICODE_STRING SuggestedLinkName, IN BOOLEAN UseOnlyIfThereAreNoOtherLinks, OUT PUNICODE_STRING *SymLinks, OUT PULONG SymLinkCount, IN BOOLEAN HasGuid, IN LPGUID Guid)
struct _SYMLINK_INFORMATION SYMLINK_INFORMATION
LIST_ENTRY UniqueIdWorkerItemListEntry
VOID CreateNoDriveLetterEntry(IN PMOUNTDEV_UNIQUE_ID UniqueId)
VOID MountMgrNotify(IN PDEVICE_EXTENSION DeviceExtension)
struct _MIGRATE_WORK_ITEM MIGRATE_WORK_ITEM
struct _UNIQUE_ID_WORK_ITEM UNIQUE_ID_WORK_ITEM
struct _RECONCILE_WORK_ITEM * PRECONCILE_WORK_ITEM
DRIVER_DISPATCH(nfs41_FsdDispatch)
VOID MountMgrFreeDeadDeviceInfo(IN PDEVICE_INFORMATION DeviceInformation)
UNICODE_STRING DosDevicesMount
VOID PostOnlineNotification(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicName)
NTSTATUS WriteRemoteDatabaseEntry(IN HANDLE Database, IN LONG Offset, IN PDATABASE_ENTRY Entry)
_In_ ULONG _In_ ULONG Offset
struct _ONLINE_NOTIFICATION_WORK_ITEM * PONLINE_NOTIFICATION_WORK_ITEM
DRIVER_DISPATCH MountMgrDeviceControl
PDEVICE_INFORMATION DeviceInformation
PSAVED_LINK_INFORMATION RemoveSavedLinks(IN PDEVICE_EXTENSION DeviceExtension, IN PMOUNTDEV_UNIQUE_ID UniqueId)
struct _SAVED_LINK_INFORMATION SAVED_LINK_INFORMATION
struct _DEVICE_INFORMATION_ENTRY DEVICE_INFORMATION_ENTRY
VOID ReconcileThisDatabaseWithMaster(IN PDEVICE_EXTENSION DeviceExtension, IN PDEVICE_INFORMATION DeviceInformation)
PDEVICE_OBJECT DeviceObject
VOID DeleteRegistryDriveLetter(IN PMOUNTDEV_UNIQUE_ID UniqueId)
NTSTATUS GlobalCreateSymbolicLink(IN PUNICODE_STRING DosName, IN PUNICODE_STRING DeviceName)
_Out_ PUNICODE_STRING DosName
LIST_ENTRY OfflineDeviceListHead
VOID UpdateReplicatedUniqueIds(IN PDEVICE_INFORMATION DeviceInformation, IN PDATABASE_ENTRY DatabaseEntry)
BOOLEAN HasDriveLetter(IN PDEVICE_INFORMATION DeviceInformation)
HANDLE OpenRemoteDatabase(IN PDEVICE_INFORMATION DeviceInformation, IN BOOLEAN MigrateDatabase)
BOOLEAN MountmgrReadNoAutoMount(IN PUNICODE_STRING RegistryPath)
ULONG AutomaticDriveLetter
_Must_inspect_result_ _Inout_opt_ PUNICODE_STRING VolumeName
UNICODE_STRING SymbolicName
DRIVER_INITIALIZE DriverEntry
PDEVICE_OBJECT gdeviceObject
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
LIST_ENTRY WorkerQueueListEntry
PDEVICE_EXTENSION DeviceExtension
VOID SendLinkCreated(IN PUNICODE_STRING SymbolicName)
PMOUNTDEV_UNIQUE_ID DriveLetterData
NTSTATUS MountMgrMountedDeviceArrival(IN PDEVICE_EXTENSION Extension, IN PUNICODE_STRING SymbolicName, IN BOOLEAN FromVolume)
VOID MountMgrUniqueIdChangeRoutine(IN PDEVICE_EXTENSION DeviceExtension, IN PMOUNTDEV_UNIQUE_ID OldUniqueId, IN PMOUNTDEV_UNIQUE_ID NewUniqueId)
PWORKER_THREAD_ROUTINE WorkerRoutine
VOID IssueUniqueIdChangeNotify(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING DeviceName, IN PMOUNTDEV_UNIQUE_ID UniqueId)
LIST_ENTRY UniqueIdWorkerItemListHead
_Inout_opt_ PUNICODE_STRING Extension
LIST_ENTRY ReplicatedUniqueIdsListEntry
base of all file and directory entries
ULONG OnlineNotificationWorkerActive
static const WCHAR SymbolicLink[]
VOID MountMgrNotifyNameChange(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING DeviceName, IN BOOLEAN ValidateVolume)
NTSTATUS CloseRemoteDatabase(IN HANDLE Database)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING SymbolicLinkName
WORKER_THREAD_ROUTINE * PWORKER_THREAD_ROUTINE
NTSTATUS QueryPointsFromMemory(IN PDEVICE_EXTENSION DeviceExtension, IN PIRP Irp, IN PMOUNTDEV_UNIQUE_ID UniqueId OPTIONAL, IN PUNICODE_STRING SymbolicName OPTIONAL)
VOID WaitForOnlinesToComplete(IN PDEVICE_EXTENSION DeviceExtension)
UNICODE_STRING DeviceCdRom
BOOLEAN RedirectSavedLink(IN PSAVED_LINK_INFORMATION SavedLinkInformation, IN PUNICODE_STRING DosName, IN PUNICODE_STRING NewLink)
PULONG MinorVersion OPTIONAL