| 152 | } |
| 153 | |
| 154 | NTSTATUS FileManager::GetRootName(_In_ PCWSTR dosName, _Out_ PUNICODE_STRING rootName) { |
| 155 | rootName->Buffer = nullptr; // in case of failure |
| 156 | auto dosNameLen = ::wcslen(dosName); |
| 157 | |
| 158 | if (dosNameLen < 3) |
| 159 | return STATUS_BUFFER_TOO_SMALL; |
| 160 | |
| 161 | // make sure we have a driver letter |
| 162 | if (dosName[2] != L'\\' || dosName[1] != L':') |
| 163 | return STATUS_INVALID_PARAMETER; |
| 164 | |
| 165 | kstring<'rgmf'> symLink(L"\\??\\"); |
| 166 | symLink.Append(dosName, 3); // driver letter,colon,backslash |
| 167 | symLink.GetUnicodeString(rootName); |
| 168 | |
| 169 | return STATUS_SUCCESS; |
| 170 | } |
| 171 | |
| 172 | VOID FileManager::FreeMdl(_In_ PMDL mdl){ |
| 173 | PMDL pCur = mdl, pNext; |
nothing calls this directly
no test coverage detected