Как получить пути

Тема в разделе "WASM.NT.KERNEL", создана пользователем nbyte, 29 июл 2007.

  1. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    Здравствуйте.
    Хочу узнать можно-ли в драйверах получить какими-нибудь функциями например путь нахождения драйвера или путь к папке system32 ?
     
  2. EP_X0FF

    EP_X0FF New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2006
    Сообщения:
    450
    Через symbolic link например.
     
  3. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    EP_X0FF, а можно кусок кода?
    Как мне этим работать.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Код (Text):
    1. NTSTATUS GetSystemRoot(){
    2.     UNICODE_STRING usRealDrvName;
    3.     WCHAR LinkName[7] = L"\\??\\X:";
    4.     NTSTATUS ns;
    5.  
    6.     usSysDir.Buffer = wsSysDir;
    7.     usSysDir.Length = 0;
    8.     usSysDir.MaximumLength = 260 * sizeof(WCHAR);
    9.     LinkName[4] = SharedUserData->NtSystemRoot[0];
    10.     ns = QuerySymbolicLink(LinkName, &usRealDrvName);
    11.     if (ns != STATUS_SUCCESS)
    12.         return ns;
    13.     RtlAppendUnicodeStringToString(&usSysDir, &usRealDrvName);
    14.     RtlAppendUnicodeToString(&usSysDir, &(SharedUserData->NtSystemRoot[2]));
    15.     RtlAppendUnicodeToString(&usSysDir, L"\\System32");
    16.     ExFreePool(usRealDrvName.Buffer);
    17.     return STATUS_SUCCESS;
    18. }
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    забыл
    Код (Text):
    1. NTSTATUS QuerySymbolicLink(PWSTR DriveName, PUNICODE_STRING LinkTarget){
    2.     UNICODE_STRING usLinkName;
    3.     OBJECT_ATTRIBUTES oaLinkName;
    4.     NTSTATUS ns;
    5.     HANDLE hLink;
    6.  
    7.     RtlInitUnicodeString(&usLinkName, DriveName);
    8.     InitializeObjectAttributes(&oaLinkName, &usLinkName, OBJ_CASE_INSENSITIVE, 0, 0);
    9.     ns = ZwOpenSymbolicLinkObject(&hLink, GENERIC_READ, &oaLinkName);
    10.     if (ns != STATUS_SUCCESS)
    11.         return ns;
    12.     LinkTarget->MaximumLength = 260 * sizeof(WCHAR);
    13.     LinkTarget->Length = 0;
    14.     LinkTarget->Buffer = ExAllocatePool(PagedPool, LinkTarget->MaximumLength);
    15.     if (!LinkTarget->Buffer){
    16.         ZwClose(hLink);
    17.         return STATUS_INSUFFICIENT_RESOURCES;
    18.     }
    19.     ns = ZwQuerySymbolicLinkObject(hLink, LinkTarget, NULL);
    20.     ZwClose(hLink);
    21.     if (ns != STATUS_SUCCESS)
    22.         ExFreePool(LinkTarget->Buffer);
    23.     return ns;
    24. }
     
  6. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    ММм ну понятно.
    Я через %SystemRoot% сделал.
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Раскрыть символьную ссылку \SystemRoot
     
  8. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    как в юзермоде получить нормальный путь из такой от фигни \??\с:\... и %SystemRoot%\... ?
    Есть ведь какая-то функция которая это дело (эти символьные ссылки) к нормальному виду приводит а также короткие имена в длинные преобразовывает - подскажите плиз - я видел вроде что то подобное но сейчс найти не могу
     
  9. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    тема давно заброшена - но все же может кто поможет
     
  10. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    А переменная environ в этом деле не поможет?
    extern char **environ;
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    %% разворачивается с помощью ExpandEnvironmentStringA афаир.
     
  12. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    SadKo
    это не серъезно, должен быть какой-то другой подход
    n0name
    это я знаю но все она не раскроет \??\

    подскажите плиз кто сталкивался
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    а что там раскрывать?
    просто убрать эти символы и все.
     
  14. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    тогда такой вот вопрос - что значит RtlDosPathNameToNtPathName_U?