Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вызвать недок. ф-ию ZwCreateSection из XP ДДК  (Прочитано 6204 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
id3210
Гость
« : 07-12-2005 00:19 » new

Здравствуйте,
Как можно вызвать ZwCreateSection, имея Win XP DDK?
В заголовках её нет, в библиотеке ntdll.lib & ntosrknl.lib есть.

Пробовал написать объявление
NTSTATUS (__stdcall *ZwCreateSection)(
       OUT PHANDLE SectionHandle,
      IN ACCESS_MASK DesiredAccess,
      IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,  // Optional
      IN PLARGE_INTEGER MaximumSize OPTIONAL,           // Optional
      IN ULONG SectionPageProtection,
      IN ULONG AllocationAttributes,
      IN HANDLE FileHandle OPTIONAL            // Optional
      );

Драйвер собирается, но вместо вызова функции переходит непонятно куда (смотрел софтайсом) и вызывает
ошибку STOP 0x8E.

С уважением, Иван

Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 07-12-2005 00:47 » 

В драйверах точно не смогу сказать. Но ты просто определил "переменную - ссылку на функцию". Но не иницилизировал ее. Т.е. не дал истинный адрес самой функции. Так как при иницилизации переменных Вижуал обычно заполняет память не нулевым значением. То при обрашении к данной функции произойдет выхов ну очень далеко, предположительно на адрес 0xCCCCCCCC.
Выход, все таки серьезно поискать в Хэдарах иницилизацию данной функции и подключить найденный h файл. Если не находиш иницилизации. То можно проиницилизировать переменную вручную. В Юзер режиме есть функция GetProcAddress, в кернел режиме не смогу сказать точно. Данная функция возрашает адресс на функции, которые находятся в DLL файлах.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
ILIS
Гость
« Ответ #2 : 07-12-2005 10:45 » 

Обявление функции:
EXTERN_C
NTSYSAPI
NTSTATUS
NTAPI
ZwCreateSection(
            OUT PHANDLE SectionHandle,
            IN ACCESS_MASK DesiredAccess,
            IN POBJECT_ATTRIBUTES ObjectAttributes,
            IN PLARGE_INTEGER SectionSize OPTIONAL,
            IN ULONG Protect,
            IN ULONG Attributes,
            IN HANDLE FileHandle
            );

У меня работает...
Записан
id3210
Гость
« Ответ #3 : 07-12-2005 17:42 » 

Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines