Выделение памяти

Тема в разделе "WASM.WIN32", создана пользователем k3internal, 11 янв 2007.

  1. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Вопрос такой, нужно выделить память в ядре, причём не где попало, а в строго заданном месте по возможности, причём изначально известно, что данные адреса ничем незаняты и памать им передана небыла.
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    ZwAllocateVirtualMemory может... правда, есть небольшой бэд - она не экспортируется ядром, поэтому адресс нужно искать по индексу таблицы системных сервисов
     
  3. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Вообще то очень хорошо экспортируется, по крайней мере на моей w2k sp4. Но меня смущает там коечто
    IN HANDLE ProcessHandle,
    IN OUT PVOID *BaseAddress,
    IN ULONG ZeroBits,
    IN OUT PULONG RegionSize,
    IN ULONG AllocationType,
    IN ULONG Protect );

    хэндл какого процесса передавать ? по крайней мере после передачи хэндла одного
    случайно выбранного процесса с просьбой выделить память в регионе выше 2 Гб был послан с кодом 0xc0000005
     
  4. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    хм, я ступил скорее всего, ф-ция выделяет память только в юзермодном адрессном пространстве
     
  5. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Не скорее всего, а точно:
    MmAllocatePagesForMdl
     
  7. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    n0name
    Это физическая память, а фиксированный адрес нужен, как я понял, в виртуальной
     
  8. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    именно в виртуальной
     
  9. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    можно заюзать эту ф-цию, а затем передать адресс MmAllocatePagesForMdl
     
  10. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    зачем вы так извращаетесь?
    IoAllocateMdl
     
  11. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ступил
    по ходу, законно - никак
     
  12. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    The IoAllocateMdl routine allocates an MDL large enough to map a buffer, given its starting address and length. Optionally, this routine associates the MDL with an IRP.


    Походу оно.
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    k3internal
    Это уже для выделенной памяти, и аллоцирует MDL.
     
  14. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    тогда непонимаю