Как удалить имя файла из пути в Windows File Filter Driver? - PullRequest
0 голосов
/ 17 января 2020

Я могу получить полное изображение имени файла в моем драйвере фильтра файлов: .Таким должен быть только путь:

\Device\HarddiskVolume5\tests\

Как это сделать?

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Спасибо всем. Наконец я написал подходящий код и код модели драйвера для моего вопроса:

UNICODE_STRING GetPathOnly(UNICODE_STRING str)
{
    USHORT i = 0;
    if (str.Length > 0)
    {
        for (i = str.Length; i > 0; i--)
        {
            if (str.Buffer[i] == L'\\')
            {
                str.Length = (i+1)*2;
                break;
            }
        }
    }
    return str;
}
0 голосов
/ 18 января 2020

С Microsoft , UNICODE_STRING - это структура, включающая длину широкой строки (Length), память, выделенную для строки (MaximumLength), и указатель на фактический широкий Сама строка (Buffer). Поэтому я считаю, что вы можете сделать это:

if (fi.Length > 0)
{
    PWSTR ptr = fi.Buffer;
    ptr += fi.Length - 1;
    // Scan backwards
    int i;
    while(*ptr != '\\' && ptr != fi.Buffer)
    {
        *ptr = '\0'; // Clear the filename
    }
}

, чтобы манипулировать UNICODE_STRING, чтобы он не содержал имя файла.

...