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

Method AddMountPoint

Ext2Mgr/MountPoints.cpp:72–251  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

70}
71
72BOOL
73CMountPoints::AddMountPoint(
74 CHAR drvChar,
75 BOOL bRegistry,
76 BOOL bMountMgr
77 )
78{
79 CHAR devPath[MAX_PATH];
80 PEXT2_LETTER drvLetter = NULL;
81 ULONGLONG letterMask = 0;
82 BOOL rc = TRUE;
83 BOOL bMount = FALSE;
84
85 PEXT2_VOLUME_PROPERTY3 EVP = NULL;
86
87 memset(devPath, 0, MAX_PATH);
88
89 if (drvChar >= '0' && drvChar <= '9') {
90 drvLetter = &drvDigits[drvChar - '0'];
91 letterMask = ((ULONGLONG) 1) << (drvChar - '0' + 32);
92 } else if (drvChar >= 'A' && drvChar <= 'Z') {
93 drvLetter = &drvLetters[drvChar - 'A'];
94 letterMask = ((ULONGLONG) 1) << (drvChar - 'A');
95 }
96
97 if (!drvLetter) {
98 return FALSE;
99 }
100
101 if (m_Part) {
102 if (m_Part->Volume) {
103 strcpy(devPath, m_Part->Volume->Name);
104 } else {
105 sprintf(devPath, "\\Device\\Harddisk%u\\Partition%u",
106 m_Part->Disk->OrderNo, m_Part->Number);
107 }
108 }
109
110 if (m_Volume) {
111 strcpy(devPath, m_Volume->Name);
112 EVP = &m_Volume->EVP;
113 }
114
115 if (m_Cdrom) {
116 strcpy(devPath, m_Cdrom->Name);
117 EVP = &m_Cdrom->EVP;
118 }
119
120 if (bRegistry) {
121 CString str;
122
123 if (Ext2SetRegistryMountPoint(&drvChar, devPath, bRegistry)) {
124 Ext2AssignDrvLetter(drvLetter, devPath, FALSE);
125 EndDialog(0);
126 } else {
127 str.Format("Failed to modify registry: SYSTEM\\CurrentControlSet\\Control\\Session Manager\\DOS Devices\n");
128 AfxMessageBox(str, MB_OK|MB_ICONWARNING);
129 return FALSE;

Callers

nothing calls this directly

Calls 13

Ext2OpenFunction · 0.85
Ext2QueryExt2PropertyFunction · 0.85
Ext2SetExt2PropertyFunction · 0.85
Ext2UpdateDrvLetterFunction · 0.85
Ext2RefreshVolumePointFunction · 0.85
Ext2QueryMountPointFunction · 0.85
Ext2AssignDrvLetterFunction · 0.70
Ext2IsNullUuidFunction · 0.70

Tested by

no test coverage detected