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

Function Ext2SetVolumeMountPoint

Ext2Mgr/enumDisk.cpp:4599–4674  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4597}
4598
4599BOOL
4600Ext2SetVolumeMountPoint (
4601 CHAR * dosPath,
4602 CHAR * devName
4603 )
4604{
4605 HANDLE hMountMgr;
4606
4607 NT::IO_STATUS_BLOCK iosb;
4608 NT::NTSTATUS status;
4609 DWORD rc = 0;
4610
4611 CHAR dosDevice[MAX_PATH];
4612 WCHAR volPath[MAX_PATH];
4613 WCHAR devPath[MAX_PATH];
4614
4615 PMOUNTMGR_CREATE_POINT_INPUT mcpi = NULL;
4616
4617 USHORT lmcpi = 0, lvolp = 0, ldevp = 0;
4618
4619 memset(dosDevice, 0, MAX_PATH);
4620 memset(volPath, 0, MAX_PATH * sizeof(WCHAR));
4621 memset(devPath, 0, MAX_PATH * sizeof(WCHAR));
4622
4623 /* covert names to unicode */
4624 sprintf(dosDevice, "\\DosDevices\\%c:", toupper(dosPath[0]));
4625 Ext2AnsiToUnicode(dosDevice, volPath, MAX_PATH);
4626 Ext2AnsiToUnicode(devName, devPath, MAX_PATH);
4627
4628 ldevp = (USHORT)wcslen(devPath) * 2;
4629 lvolp = (USHORT)wcslen(volPath) * 2;
4630 lmcpi = sizeof(MOUNTMGR_CREATE_POINT_INPUT) + lvolp + ldevp;
4631
4632 /* initialize MMGR_CREATE_MOUNT_POINT_INPUT */
4633 mcpi = (PMOUNTMGR_CREATE_POINT_INPUT) malloc(lmcpi);
4634 if (mcpi == NULL) {
4635 status = STATUS_UNSUCCESSFUL;
4636 goto errorout;
4637 }
4638
4639 mcpi->SymbolicLinkNameOffset = sizeof(MOUNTMGR_CREATE_POINT_INPUT);
4640 mcpi->SymbolicLinkNameLength = lvolp;
4641 mcpi->DeviceNameOffset = mcpi->SymbolicLinkNameOffset + lvolp;
4642 mcpi->DeviceNameLength = ldevp;
4643
4644 memcpy((PCHAR)mcpi + mcpi->SymbolicLinkNameOffset,
4645 volPath, lvolp);
4646 memcpy((PCHAR)mcpi + mcpi->DeviceNameOffset,
4647 devPath, ldevp);
4648
4649 /* open MountMgr */
4650 status = Ext2Open("\\Device\\MountPointManager", &hMountMgr, EXT2_DESIRED_ACCESS);
4651 if (!NT_SUCCESS(status)) {
4652 goto errorout;
4653 }
4654
4655 /* ioctl .... */
4656 status = NT::ZwDeviceIoControlFile(

Callers

nothing calls this directly

Calls 3

Ext2AnsiToUnicodeFunction · 0.85
Ext2OpenFunction · 0.85
Ext2CloseFunction · 0.70

Tested by

no test coverage detected