Аналог FindFirstFile для драйвера

Discussion in 'WASM.NT.KERNEL' started by ak, Apr 6, 2008.

  1. ak

    ak New Member

    Blog Posts:
    0
    Добрый день!

    Подскажите, пожалуйста, как в драйвере осуществить поиск файла в заданном каталоге с заданным расширением?
     
  2. Flasher

    Flasher Member

    Blog Posts:
    0
    ZwOpenFile\ZwQueryDirectoryFile
     
  3. ak

    ak New Member

    Blog Posts:
    0
    Большое спасибо!
    Ещё один вопрос:
    ZwQueryDirectoryFile возвращает STATUS_PENDING.
    Как подождать выполнения запроса?
    Функции передаётся HANDLE Event,
    однако KeWaitForSingleObject и KeInitializeEvent используют KEVENT...
    Как получить HANDLE Event ?
     
  4. WIN32

    WIN32 Member

    Blog Posts:
    0
    Code (Text):
    1. NTSTATUS
    2.   ZwCreateEvent(
    3.     OUT PHANDLE  EventHandle, <---------
    4.     IN ACCESS_MASK  DesiredAccess,
    5.     IN POBJECT_ATTRIBUTES  ObjectAttributes OPTIONAL,
    6.     IN EVENT_TYPE  EventType,
    7.     IN BOOLEAN  InitialState
    8.     );
     
  5. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    с объектами ядра можно работать по хендлу или по указателю, первые имеют префикс Zw, вторые - префикс подсистемы (Ex, Ke, Mm, ...)
    например: ZwCreateSection / MmCreateSection, ZwSetEvent / KeSetEvent.
     
  6. ak

    ak New Member

    Blog Posts:
    0
    Большое спасибо!!!
     
  7. Sheph

    Sheph New Member

    Blog Posts:
    0
    Не обязательно создавать событие и ждать на нём, достаточно открыть файл с флагом FILE_SYNCHRONOUS_IO_NONALERT, допустим так:
    Code (Text):
    1.         status = ZwOpenFile(  &hFile,
    2.                                        SYNCHRONIZE,
    3.                                        &oa,
    4.                                        &iob,
    5.                                        FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
    6.                                        FILE_SYNCHRONOUS_IO_NONALERT|FILE_OPEN_FOR_BACKUP_INTENT);
    Ну, а потом можно делать ZwQueryDirectoryFile, он будет выполняться синхронно.