Что означает имя объекта ядра Windows, начинающееся с \??\?
Я поддерживаю устаревшее приложение Windows с пользовательским пространством и компонентом ядра. Пользовательское пространство передает некоторые пути к файлам к драйверу устройства через ключи реестра.
В настоящее время код находит полный путь к файлу, а затем добавляет \??\
перед записью в реестр, поэтому путь заканчивается \??\C:\foo.bar
, Водитель проходит этот путь к InitializeObjectAttributes()
а также ZwCreateFile()
, который успешно открывает файл (или создает его соответствующим образом).
Я знаком с \\.\
префикс в качестве псевдонима для \DosDevices\
, но нет \??\
И это не та вещь, которую можно гуглить. Кто-нибудь знает что это значит?
1 ответ
Это подкаталог пространства имен, созданный в процессе загрузки. В нем есть ссылки на ресурсы, доступные через Win32 API. Во время загрузки до полного запуска системы, если на этот путь ссылаются, он может не разрешиться без наличия \??\.