Здравствуйте, x64, Вы писали:
AB>>при открытие символьной ссылки "\ArcName\multi(0)disk(0)rdisk(0)partition(1)" уже возвращает STATUS_OBJECT_NAME_NOT_FOUND(C0000034) и по этому не пройдет.
x64>Да, всё верно, эта ссылка \ArcName\multi(0)disk(0)rdisk(0)partition(1) будет создана чуть позже. Автору в таком случае остаётся одно из двух:
x64>1. Подождать, пока эта ссылка не будет создана и распарсить её рекурсивно (начиная, тем не менее, с \SystemRoot). Ждать тут, по идее, недолго.
x64>2. Учитывая, что сами девайсы томов к этому моменту уже созданы, можно попытаться сопоставить \ArcName\multi(0)disk(0)rdisk(0)partition(1) девайсу тома \Device\HarddiskVolume1. По идее, ничего сложного, только не забыть учесть различные шины типа \ArcName\scsi(0)... и прочие.
x64>Это более-менее документированные варианты. Возможно, ещё есть способы покопаться в блоке загрузчика, но это недокументировано и я не помню, чтобы там было что-то, что помогло бы при решении этой задачи. Есть другие идеи?
Есть. Например взять SharedUserData->NtSystemRoot и там будет C:\Windows, открыть символьную ссылку \Global??\C: и получить \Device\HarddiskVolumeX прилипить оставшийся путь от SharedUserData->NtSystemRoot (то есть Windows) ну и прилепить system32\ntdll.dll — вот вам путь