ReactOS 0.4.15-dev-7788-g1ad9096
mntmgr.h
Go to the documentation of this file.
1#ifndef _MNTMGR_H_
2#define _MNTMGR_H_
3
4#include <ntifs.h>
5#include <mountdev.h>
6#include <ntddvol.h>
7#include <ntdddisk.h>
8#include <wdmguid.h>
9#include <ndk/psfuncs.h>
10#include <ntdddisk.h>
11#include <section_attribs.h>
12
13typedef struct _DEVICE_EXTENSION
14{
41
42typedef struct _DEVICE_INFORMATION
43{
59 ULONG Migrated; // 0x3C
64
66{
69 BOOLEAN Online; // 0x10
71
73{
78
80{
84
85typedef struct _DATABASE_ENTRY
86{
94
96{
101
103{
107
109{
114
116{
120
122{
126 PVOID Context; // 0x10
129
130typedef struct _MIGRATE_WORK_ITEM
131{
138
140{
144 PIRP Irp; // 0x10
146 PKEVENT Event; // 0x1C
151
152/* Memory allocation helpers */
153#define AllocatePool(Size) ExAllocatePoolWithTag(PagedPool, Size, 'AtnM')
154#define FreePool(P) ExFreePoolWithTag(P, 'AtnM')
155
156/* Misc macros */
157#define MAX(a, b) ((a > b) ? a : b)
158
159#define LETTER_POSITION 0xC
160#define COLON_POSITION 0xD
161#define DRIVE_LETTER_LENGTH 0x1C
162
163/* mountmgr.c */
164
176extern KEVENT UnloadEvent;
177extern LONG Unloading;
178
179CODE_SEG("INIT")
180DRIVER_INITIALIZE DriverEntry;
181
182VOID
183NTAPI
186 IN PIRP Irp
187);
188
193 IN BOOLEAN FromVolume
194);
195
196VOID
200);
201
204 IN PDEVICE_EXTENSION DeviceExtension,
206 IN BOOLEAN DeviceNameGiven,
207 OUT PDEVICE_INFORMATION * DeviceInformation
208);
209
210VOID
212 IN PDEVICE_INFORMATION DeviceInformation
213);
214
221 OUT PBOOLEAN GptDriveLetter OPTIONAL,
222 OUT PBOOLEAN HasGuid OPTIONAL,
223 IN OUT LPGUID StableGuid OPTIONAL,
224 OUT PBOOLEAN Valid OPTIONAL
225);
226
229 IN PDEVICE_INFORMATION DeviceInformation
230);
231
232CODE_SEG("INIT")
236);
237
238/* database.c */
239
240extern PWSTR DatabasePath;
241extern PWSTR OfflinePath;
242
243VOID
245 IN PDEVICE_EXTENSION DeviceExtension,
246 IN PDEVICE_INFORMATION DeviceInformation
247);
248
251 IN PDEVICE_EXTENSION DeviceExtension
252);
253
254VOID
256 IN PDEVICE_EXTENSION DeviceExtension
257);
258
259VOID
261 IN PDEVICE_INFORMATION DeviceInformation,
262 IN PMOUNTDEV_UNIQUE_ID OldUniqueId,
263 IN PMOUNTDEV_UNIQUE_ID NewUniqueId
264);
265
266VOID
268 IN PDEVICE_EXTENSION DeviceExtension
269);
270
271VOID
274 IN PMOUNTDEV_UNIQUE_ID UniqueId
275);
276
277VOID
279 IN PMOUNTDEV_UNIQUE_ID UniqueId
280);
281
282VOID
284 IN PMOUNTDEV_UNIQUE_ID UniqueId
285);
286
290 IN PFILE_REPARSE_POINT_INFORMATION ReparsePointInformation,
294);
295
296HANDLE
298 IN PDEVICE_INFORMATION DeviceInformation,
299 IN BOOLEAN MigrateDatabase
300);
301
306);
307
311 IN LONG Offset,
313);
314
318);
319
324);
325
330);
331
332VOID
333NTAPI
336);
337
338/* device.c */
339
341
342/* notify.c */
343VOID
346 IN PMOUNTDEV_UNIQUE_ID UniqueId
347);
348
349VOID
351 IN PDEVICE_EXTENSION DeviceExtension
352);
353
354VOID
356 IN PDEVICE_EXTENSION DeviceExtension,
357 IN PDEVICE_INFORMATION DeviceInformation
358);
359
360VOID
363);
364
365VOID
367 IN PDEVICE_EXTENSION DeviceExtension,
369 IN PMOUNTDEV_UNIQUE_ID UniqueId
370);
371
372VOID
374 IN PDEVICE_EXTENSION DeviceExtension,
376);
377
378VOID
380 IN PDEVICE_EXTENSION DeviceExtension
381);
382
383VOID
385 IN PDEVICE_EXTENSION DeviceExtension,
387 IN BOOLEAN ValidateVolume
388);
389
390/* uniqueid.c */
391VOID
393 IN PDEVICE_EXTENSION DeviceExtension,
394 IN PMOUNTDEV_UNIQUE_ID OldUniqueId,
395 IN PMOUNTDEV_UNIQUE_ID NewUniqueId
396);
397
398VOID
400 IN PMOUNTDEV_UNIQUE_ID UniqueId
401);
402
405 IN PMOUNTDEV_UNIQUE_ID UniqueId
406);
407
408VOID
410 IN PDEVICE_INFORMATION DeviceInformation,
411 IN PDATABASE_ENTRY DatabaseEntry
412);
413
416 IN PDEVICE_EXTENSION DeviceExtension,
417 IN PDATABASE_ENTRY DatabaseEntry
418);
419
420/* point.c */
423 IN PDEVICE_EXTENSION DeviceExtension,
426);
427
430 IN PDEVICE_EXTENSION DeviceExtension,
432 IN PIRP Irp
433);
434
437 IN PDEVICE_EXTENSION DeviceExtension,
438 IN PIRP Irp,
441);
442
443/* symlink.c */
448);
449
453);
454
458 OUT PUNICODE_STRING SuggestedLinkName,
459 OUT PBOOLEAN UseOnlyIfThereAreNoOtherLinks
460);
461
464 IN PDEVICE_EXTENSION DeviceExtension,
465 IN PDEVICE_INFORMATION DeviceInformation,
466 IN PUNICODE_STRING SuggestedLinkName,
467 IN BOOLEAN UseOnlyIfThereAreNoOtherLinks,
468 OUT PUNICODE_STRING * SymLinks,
469 OUT PULONG SymLinkCount,
470 IN BOOLEAN HasGuid,
472);
473
476 IN PDEVICE_EXTENSION DeviceExtension,
477 IN PMOUNTDEV_UNIQUE_ID UniqueId
478);
479
482 IN PSAVED_LINK_INFORMATION SavedLinkInformation,
484 IN PUNICODE_STRING NewLink
485);
486
487VOID
490);
491
495 IN PGUID VolumeGuid OPTIONAL
496);
497
501);
502
503VOID
505 IN PDEVICE_EXTENSION DeviceExtension,
507 IN BOOLEAN MarkOffline
508);
509
514);
515
516#endif /* _MNTMGR_H_ */
unsigned char BOOLEAN
LONG NTSTATUS
Definition: precomp.h:26
WCHAR RootDirectory[MAX_PATH]
Definition: format.c:74
_In_ PFCB _In_ LONGLONG StartingOffset
Definition: cdprocs.h:291
_In_ PIRP Irp
Definition: csq.h:116
static const WCHAR SymbolicLink[]
Definition: interface.c:31
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
_Must_inspect_result_ _Inout_opt_ PUNICODE_STRING VolumeName
Definition: fltkernel.h:1117
_Inout_opt_ PUNICODE_STRING Extension
Definition: fltkernel.h:1092
static CODE_SEG("PAGE")
Definition: isapnp.c:1482
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)
Definition: symlink.c:514
NTSTATUS CloseRemoteDatabase(IN HANDLE Database)
Definition: database.c:82
struct _RECONCILE_WORK_ITEM_CONTEXT * PRECONCILE_WORK_ITEM_CONTEXT
struct _RECONCILE_WORK_ITEM * PRECONCILE_WORK_ITEM
LONG Unloading
Definition: mountmgr.c:37
VOID SendLinkCreated(IN PUNICODE_STRING SymbolicName)
Definition: symlink.c:160
struct _DEVICE_INFORMATION DEVICE_INFORMATION
NTSTATUS DeleteRemoteDatabaseEntry(IN HANDLE Database, IN LONG StartingOffset)
Definition: database.c:233
VOID SendOnlineNotification(IN PUNICODE_STRING SymbolicName)
Definition: notify.c:38
NTSTATUS GlobalCreateSymbolicLink(IN PUNICODE_STRING DosName, IN PUNICODE_STRING DeviceName)
Definition: symlink.c:111
struct _SAVED_LINK_INFORMATION SAVED_LINK_INFORMATION
BOOLEAN MountmgrReadNoAutoMount(IN PUNICODE_STRING RegistryPath)
Definition: mountmgr.c:898
UNICODE_STRING SafeVolumes
Definition: symlink.c:38
NTSTATUS GlobalDeleteSymbolicLink(IN PUNICODE_STRING DosName)
Definition: symlink.c:136
NTSTATUS WaitForRemoteDatabaseSemaphore(IN PDEVICE_EXTENSION DeviceExtension)
Definition: database.c:371
struct _UNIQUE_ID_REPLICATE * PUNIQUE_ID_REPLICATE
NTSTATUS MountMgrQuerySymbolicLink(IN PUNICODE_STRING SymbolicName, IN OUT PUNICODE_STRING LinkTarget)
Definition: symlink.c:959
struct _DEVICE_EXTENSION DEVICE_EXTENSION
VOID ReconcileThisDatabaseWithMaster(IN PDEVICE_EXTENSION DeviceExtension, IN PDEVICE_INFORMATION DeviceInformation)
Definition: database.c:1613
VOID DeleteRegistryDriveLetter(IN PMOUNTDEV_UNIQUE_ID UniqueId)
Definition: database.c:2048
VOID MountMgrMountedDeviceRemoval(IN PDEVICE_EXTENSION Extension, IN PUNICODE_STRING DeviceName)
Definition: mountmgr.c:1446
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)
Definition: mountmgr.c:190
struct _RECONCILE_WORK_ITEM_CONTEXT RECONCILE_WORK_ITEM_CONTEXT
UNICODE_STRING Volume
Definition: fltkernel.h:1172
DRIVER_DISPATCH MountMgrDeviceControl
Definition: mntmgr.h:340
KEVENT UnloadEvent
Definition: mountmgr.c:36
UNICODE_STRING DeviceFloppy
Definition: symlink.c:34
UNICODE_STRING Global
Definition: symlink.c:37
UNICODE_STRING DosDevicesMount
Definition: symlink.c:32
UNICODE_STRING ReparseIndex
Definition: symlink.c:40
DRIVER_INITIALIZE DriverEntry
Definition: mntmgr.h:180
PWSTR OfflinePath
Definition: database.c:32
struct _MIGRATE_WORK_ITEM * PMIGRATE_WORK_ITEM
struct _SYMLINK_INFORMATION * PSYMLINK_INFORMATION
struct _DATABASE_ENTRY DATABASE_ENTRY
VOID NTAPI ReconcileThisDatabaseWithMasterWorker(IN PVOID Parameter)
Definition: database.c:560
struct _DATABASE_ENTRY * PDATABASE_ENTRY
UNICODE_STRING DosGlobal
Definition: symlink.c:36
struct _UNIQUE_ID_WORK_ITEM * PUNIQUE_ID_WORK_ITEM
NTSTATUS FindDeviceInfo(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicName, IN BOOLEAN DeviceNameGiven, OUT PDEVICE_INFORMATION *DeviceInformation)
Definition: mountmgr.c:636
struct _UNIQUE_ID_WORK_ITEM UNIQUE_ID_WORK_ITEM
VOID MountMgrNotifyNameChange(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING DeviceName, IN BOOLEAN ValidateVolume)
Definition: notify.c:351
NTSTATUS MountMgrCreatePointWorker(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
Definition: point.c:35
VOID PostOnlineNotification(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicName)
Definition: notify.c:145
BOOLEAN IsDriveLetter(PUNICODE_STRING SymbolicName)
Definition: symlink.c:922
struct _UNIQUE_ID_REPLICATE UNIQUE_ID_REPLICATE
VOID UpdateReplicatedUniqueIds(IN PDEVICE_INFORMATION DeviceInformation, IN PDATABASE_ENTRY DatabaseEntry)
Definition: uniqueid.c:376
VOID DeleteNoDriveLetterEntry(IN PMOUNTDEV_UNIQUE_ID UniqueId)
Definition: database.c:2100
VOID ReleaseRemoteDatabaseSemaphore(IN PDEVICE_EXTENSION DeviceExtension)
Definition: database.c:391
PWSTR DatabasePath
Definition: database.c:31
NTSTATUS AddRemoteDatabaseEntry(IN HANDLE Database, IN PDATABASE_ENTRY Entry)
Definition: database.c:64
UNICODE_STRING DeviceMount
Definition: symlink.c:31
PDEVICE_OBJECT gdeviceObject
Definition: mountmgr.c:35
NTSTATUS CreateNewVolumeName(OUT PUNICODE_STRING VolumeName, IN PGUID VolumeGuid OPTIONAL)
Definition: symlink.c:462
UNICODE_STRING DeviceCdRom
Definition: symlink.c:35
struct _DEVICE_INFORMATION_ENTRY * PDEVICE_INFORMATION_ENTRY
VOID RegisterForTargetDeviceNotification(IN PDEVICE_EXTENSION DeviceExtension, IN PDEVICE_INFORMATION DeviceInformation)
Definition: notify.c:273
NTSTATUS QueryPointsFromSymbolicLinkName(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicName, IN PIRP Irp)
Definition: point.c:463
VOID NTAPI MountMgrCancel(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: mountmgr.c:1676
struct _MIGRATE_WORK_ITEM MIGRATE_WORK_ITEM
struct _DEVICE_INFORMATION * PDEVICE_INFORMATION
VOID IssueUniqueIdChangeNotify(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING DeviceName, IN PMOUNTDEV_UNIQUE_ID UniqueId)
Definition: notify.c:660
NTSTATUS WriteRemoteDatabaseEntry(IN HANDLE Database, IN LONG Offset, IN PDATABASE_ENTRY Entry)
Definition: database.c:200
NTSTATUS QuerySuggestedLinkName(IN PUNICODE_STRING SymbolicName, OUT PUNICODE_STRING SuggestedLinkName, OUT PBOOLEAN UseOnlyIfThereAreNoOtherLinks)
Definition: symlink.c:684
VOID MountMgrNotify(IN PDEVICE_EXTENSION DeviceExtension)
Definition: notify.c:311
BOOLEAN IsUniqueIdPresent(IN PDEVICE_EXTENSION DeviceExtension, IN PDATABASE_ENTRY DatabaseEntry)
Definition: uniqueid.c:221
struct _DEVICE_INFORMATION_ENTRY DEVICE_INFORMATION_ENTRY
VOID ReconcileAllDatabasesWithMaster(IN PDEVICE_EXTENSION DeviceExtension)
Definition: database.c:1659
VOID IssueUniqueIdChangeNotifyWorker(IN PUNIQUE_ID_WORK_ITEM WorkItem, IN PMOUNTDEV_UNIQUE_ID UniqueId)
Definition: notify.c:590
VOID WaitForOnlinesToComplete(IN PDEVICE_EXTENSION DeviceExtension)
Definition: notify.c:197
struct _ONLINE_NOTIFICATION_WORK_ITEM ONLINE_NOTIFICATION_WORK_ITEM
struct _DEVICE_EXTENSION * PDEVICE_EXTENSION
HANDLE OpenRemoteDatabase(IN PDEVICE_INFORMATION DeviceInformation, IN BOOLEAN MigrateDatabase)
Definition: database.c:1837
VOID MountMgrFreeDeadDeviceInfo(IN PDEVICE_INFORMATION DeviceInformation)
Definition: mountmgr.c:701
PSAVED_LINK_INFORMATION RemoveSavedLinks(IN PDEVICE_EXTENSION DeviceExtension, IN PMOUNTDEV_UNIQUE_ID UniqueId)
Definition: symlink.c:640
struct _SAVED_LINK_INFORMATION * PSAVED_LINK_INFORMATION
PDATABASE_ENTRY GetRemoteDatabaseEntry(IN HANDLE Database, IN LONG StartingOffset)
Definition: database.c:125
VOID ChangeRemoteDatabaseUniqueId(IN PDEVICE_INFORMATION DeviceInformation, IN PMOUNTDEV_UNIQUE_ID OldUniqueId, IN PMOUNTDEV_UNIQUE_ID NewUniqueId)
Definition: database.c:1911
VOID DeleteSymbolicLinkNameFromMemory(IN PDEVICE_EXTENSION DeviceExtension, IN PUNICODE_STRING SymbolicLink, IN BOOLEAN MarkOffline)
Definition: symlink.c:864
VOID MountMgrUniqueIdChangeRoutine(IN PDEVICE_EXTENSION DeviceExtension, IN PMOUNTDEV_UNIQUE_ID OldUniqueId, IN PMOUNTDEV_UNIQUE_ID NewUniqueId)
Definition: uniqueid.c:71
struct _ASSOCIATED_DEVICE_ENTRY ASSOCIATED_DEVICE_ENTRY
VOID DeleteFromLocalDatabase(IN PUNICODE_STRING SymbolicLink, IN PMOUNTDEV_UNIQUE_ID UniqueId)
Definition: database.c:351
NTSTATUS QueryPointsFromMemory(IN PDEVICE_EXTENSION DeviceExtension, IN PIRP Irp, IN PMOUNTDEV_UNIQUE_ID UniqueId OPTIONAL, IN PUNICODE_STRING SymbolicName OPTIONAL)
Definition: point.c:236
struct _ASSOCIATED_DEVICE_ENTRY * PASSOCIATED_DEVICE_ENTRY
BOOLEAN HasDriveLetter(IN PDEVICE_INFORMATION DeviceInformation)
Definition: mountmgr.c:83
struct _ONLINE_NOTIFICATION_WORK_ITEM * PONLINE_NOTIFICATION_WORK_ITEM
UNICODE_STRING DosDevices
Definition: symlink.c:33
struct _RECONCILE_WORK_ITEM RECONCILE_WORK_ITEM
NTSTATUS QueryVolumeName(IN HANDLE RootDirectory, IN PFILE_REPARSE_POINT_INFORMATION ReparsePointInformation, IN PUNICODE_STRING FileName OPTIONAL, OUT PUNICODE_STRING SymbolicName, OUT PUNICODE_STRING VolumeName)
Definition: database.c:1292
struct _SYMLINK_INFORMATION SYMLINK_INFORMATION
VOID CreateNoDriveLetterEntry(IN PMOUNTDEV_UNIQUE_ID UniqueId)
Definition: uniqueid.c:269
BOOLEAN HasNoDriveLetterEntry(IN PMOUNTDEV_UNIQUE_ID UniqueId)
Definition: uniqueid.c:354
NTSTATUS MountMgrMountedDeviceArrival(IN PDEVICE_EXTENSION Extension, IN PUNICODE_STRING SymbolicName, IN BOOLEAN FromVolume)
Definition: mountmgr.c:931
BOOLEAN RedirectSavedLink(IN PSAVED_LINK_INFORMATION SavedLinkInformation, IN PUNICODE_STRING DosName, IN PUNICODE_STRING NewLink)
Definition: symlink.c:827
_In_ PNDIS_STRING _In_ PNDIS_STRING SymbolicName
Definition: ndis.h:4677
DRIVER_DISPATCH(nfs41_FsdDispatch)
_In_ ULONG _In_ ULONG Offset
Definition: ntddpcm.h:101
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
@ Removable
Definition: arc.h:81
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
base of all file and directory entries
Definition: entries.h:83
Definition: mntmgr.h:96
LIST_ENTRY AssociatedDevicesEntry
Definition: mntmgr.h:97
UNICODE_STRING String
Definition: mntmgr.h:99
PDEVICE_INFORMATION DeviceInformation
Definition: mntmgr.h:98
Definition: mntmgr.h:86
USHORT UniqueIdOffset
Definition: mntmgr.h:91
USHORT SymbolicNameLength
Definition: mntmgr.h:90
USHORT UniqueIdLength
Definition: mntmgr.h:92
ULONG EntrySize
Definition: mntmgr.h:87
ULONG EntryReferences
Definition: mntmgr.h:88
USHORT SymbolicNameOffset
Definition: mntmgr.h:89
KSEMAPHORE WorkerSemaphore
Definition: mntmgr.h:29
ULONG OnlineNotificationCount
Definition: mntmgr.h:38
LONG WorkerThreadStatus
Definition: mntmgr.h:35
ULONG AutomaticDriveLetter
Definition: mntmgr.h:22
PDEVICE_OBJECT DeviceObject
Definition: processr.h:16
PDRIVER_OBJECT DriverObject
Definition: mpu401.h:86
KSEMAPHORE RemoteDatabaseLock
Definition: mntmgr.h:21
LIST_ENTRY OfflineDeviceListHead
Definition: mntmgr.h:18
PMOUNTDEV_UNIQUE_ID DriveLetterData
Definition: mntmgr.h:33
KSPIN_LOCK WorkerLock
Definition: mntmgr.h:31
ULONG OnlineNotificationWorkerActive
Definition: mntmgr.h:37
LONG WorkerReferences
Definition: mntmgr.h:30
PVOID NotificationEntry
Definition: mntmgr.h:19
ULONG EpicNumber
Definition: mntmgr.h:24
LIST_ENTRY IrpListHead
Definition: mntmgr.h:23
LIST_ENTRY OnlineNotificationListHead
Definition: mntmgr.h:36
UNICODE_STRING RegistryPath
Definition: mntmgr.h:34
BOOLEAN NoAutoMount
Definition: mntmgr.h:27
KEVENT OnlineNotificationEvent
Definition: mntmgr.h:39
LIST_ENTRY UniqueIdWorkerItemListHead
Definition: mntmgr.h:32
KSEMAPHORE DeviceLock
Definition: mntmgr.h:20
LIST_ENTRY WorkerQueueListHead
Definition: mntmgr.h:28
BOOLEAN ProcessedSuggestions
Definition: mntmgr.h:26
LIST_ENTRY DeviceListHead
Definition: mntmgr.h:17
LIST_ENTRY SavedLinksListHead
Definition: mntmgr.h:25
Definition: mntmgr.h:103
PDEVICE_INFORMATION DeviceInformation
Definition: mntmgr.h:105
LIST_ENTRY DeviceInformationEntry
Definition: mntmgr.h:104
BOOLEAN Removable
Definition: mntmgr.h:54
PVOID TargetDeviceNotificationEntry
Definition: mntmgr.h:61
BOOLEAN LetterAssigned
Definition: mntmgr.h:55
PDEVICE_EXTENSION DeviceExtension
Definition: mntmgr.h:62
UNICODE_STRING SymbolicName
Definition: mntmgr.h:48
BOOLEAN ManuallyRegistered
Definition: mntmgr.h:53
BOOLEAN KeepLinks
Definition: mntmgr.h:51
BOOLEAN NoDatabase
Definition: mntmgr.h:57
UCHAR SuggestedDriveLetter
Definition: mntmgr.h:52
PMOUNTDEV_UNIQUE_ID UniqueId
Definition: mntmgr.h:49
BOOLEAN SkipNotifications
Definition: mntmgr.h:58
UNICODE_STRING DeviceName
Definition: mntmgr.h:50
BOOLEAN NeedsReconcile
Definition: mntmgr.h:56
LIST_ENTRY ReplicatedUniqueIdsListHead
Definition: mntmgr.h:46
LIST_ENTRY AssociatedDevicesHead
Definition: mntmgr.h:47
LIST_ENTRY SymbolicLinksListHead
Definition: mntmgr.h:45
LIST_ENTRY DeviceListEntry
Definition: mntmgr.h:44
Definition: typedefs.h:120
NTSTATUS Status
Definition: mntmgr.h:135
PIO_WORKITEM WorkItem
Definition: mntmgr.h:132
PKEVENT Event
Definition: mntmgr.h:134
HANDLE Database
Definition: mntmgr.h:136
PDEVICE_INFORMATION DeviceInformation
Definition: mntmgr.h:133
PDEVICE_EXTENSION DeviceExtension
Definition: mntmgr.h:111
WORK_QUEUE_ITEM WorkItem
Definition: mntmgr.h:110
UNICODE_STRING SymbolicName
Definition: mntmgr.h:112
PDEVICE_INFORMATION DeviceInformation
Definition: mntmgr.h:118
PDEVICE_EXTENSION DeviceExtension
Definition: mntmgr.h:117
PIO_WORKITEM WorkItem
Definition: mntmgr.h:124
PWORKER_THREAD_ROUTINE WorkerRoutine
Definition: mntmgr.h:125
LIST_ENTRY WorkerQueueListEntry
Definition: mntmgr.h:123
PMOUNTDEV_UNIQUE_ID UniqueId
Definition: mntmgr.h:82
LIST_ENTRY ReplicatedUniqueIdsListEntry
Definition: mntmgr.h:81
ULONG IrpBufferLength
Definition: mntmgr.h:148
LIST_ENTRY UniqueIdWorkerItemListEntry
Definition: mntmgr.h:141
UNICODE_STRING DeviceName
Definition: mntmgr.h:147
PDEVICE_EXTENSION DeviceExtension
Definition: mntmgr.h:143
PIO_WORKITEM WorkItem
Definition: mntmgr.h:142
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char * PBOOLEAN
Definition: typedefs.h:53
#define NTAPI
Definition: typedefs.h:36
#define IN
Definition: typedefs.h:39
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING SymbolicLinkName
Definition: wdfdevice.h:3739
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
Definition: wdfdevice.h:3275
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
Definition: wdfdriver.h:215
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
Definition: wdfobject.h:762
_Must_inspect_result_ _In_ PWDF_WORKITEM_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWORKITEM * WorkItem
Definition: wdfworkitem.h:115
WORKER_THREAD_ROUTINE * PWORKER_THREAD_ROUTINE
Definition: extypes.h:200
_Out_ PUNICODE_STRING DosName
Definition: rtlfuncs.h:1269
_Inout_opt_ PVOID Parameter
Definition: rtltypes.h:323
unsigned char UCHAR
Definition: xmlstorage.h:181
_Inout_ PUNICODE_STRING LinkTarget
Definition: zwfuncs.h:292