Special Pool + driver verifier

Тема в разделе "WASM.NT.KERNEL", создана пользователем apx, 13 авг 2008.

  1. apx

    apx New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2008
    Сообщения:
    25
    Возникает ситуация:
    память выделена с помощью ExAllocatePool из NonPagen пула, но выделена в контексте процесса System, но ссылается на эту память для чтения/записи в другом процессе.
    При тестировании driver verifier такого драйвера возникает ошибка
    DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL (d5)
    Memory was referenced after it was freed.
    This cannot be protected by try-except.
    Arguments:
    Arg1: 82308fdc, memory referenced
    Arg2: 00000000, value 0 = read operation, 1 = write operation
    Arg3: fb19f618, if non-zero, the address which referenced memory.
    Arg4: 00000000, (reserved)

    Т.е. вопрос состоит в том, неужели нельзя так делать? (память выделена с помощью ExAllocatePool из NonPagen пула, но выделена в контексте процесса System, но ссылается на эту память для чтения/записи в другом процессе)
     
  2. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    системное адресное пространство одинаково для любого контекста, поэтому наверно так делать можно

    под системным адресным пространством я имел ввиду диапазон адресов от 2 до 4Гб
     
  3. developer

    developer Алексей

    Публикаций:
    0
    Регистрация:
    13 июн 2008
    Сообщения:
    1
    Адрес:
    Москва
    А разве смысл этого сообщения не в том, что идёт обращение к уже освобождённому куску памяти? Или он точно не освобождён и при этом вылезает такая ошибка?
     
  4. Zufyxe

    Zufyxe New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    137
    Адрес:
    Russia
    - можно так делать, именно для этого пулы и созданы.

    +1, судя по всему так и есть. :)