MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2SymLinkRemoval

Function Ext2SymLinkRemoval

Ext2Mgr/enumDisk.cpp:4555–4597  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4553
4554
4555BOOL
4556Ext2SymLinkRemoval(CHAR drvLetter)
4557{
4558 HANDLE hMountMgr = NULL;
4559
4560 NT::IO_STATUS_BLOCK iosb;
4561 NT::NTSTATUS status;
4562 DWORD rc = 0;
4563
4564 WCHAR buffer[MAX_PATH], *dosName;
4565 PMOUNTMGR_MOUNT_POINT pmp = NULL;
4566 PMOUNTMGR_MOUNT_POINTS pms = NULL;
4567
4568 memset(buffer, 0, sizeof(WCHAR) * MAX_PATH);
4569 pmp = (PMOUNTMGR_MOUNT_POINT) buffer;
4570 pmp->SymbolicLinkNameOffset = sizeof(MOUNTMGR_MOUNT_POINT);
4571 pmp->SymbolicLinkNameLength = 14 * sizeof(WCHAR);
4572
4573 dosName = (WCHAR *) (pmp + 1);
4574 swprintf_s(dosName, MAX_PATH - sizeof(MOUNTMGR_MOUNT_POINT),
4575 L"\\DosDevices\\%c:\0", drvLetter);
4576
4577 status = Ext2Open("\\Device\\MountPointManager", &hMountMgr, EXT2_DESIRED_ACCESS);
4578 if (!NT_SUCCESS(status)) {
4579 goto errorout;
4580 }
4581
4582 status = NT::ZwDeviceIoControlFile(
4583 hMountMgr, NULL, NULL, NULL, &iosb,
4584 IOCTL_MOUNTMGR_DELETE_POINTS,
4585 (PVOID)pmp, sizeof(WCHAR) * MAX_PATH,
4586 (PVOID)pmp, sizeof(WCHAR) * MAX_PATH
4587 );
4588
4589 if (!NT_SUCCESS(status)) {
4590 goto errorout;
4591 }
4592
4593errorout:
4594
4595 Ext2Close(&hMountMgr);
4596 return NT_SUCCESS(status);
4597}
4598
4599BOOL
4600Ext2SetVolumeMountPoint (

Callers 1

Ext2RemoveDosSymLinkFunction · 0.85

Calls 2

Ext2OpenFunction · 0.85
Ext2CloseFunction · 0.70

Tested by

no test coverage detected