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

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

У Walter Oney (в его книге по WDM драйверам) часто используется функция CompleteRequest

Код:
  if (!NT_SUCCESS(status))
    return CompleteRequest(Irp, status, 0);

При компиляции Build DDK выдаётся ошибка, что мол нет такой функции.

Но есть функция
Код:
VOID IoCompleteRequest(IN PIRP pIrp, IN CCHAR PriorBoost);

И первый код я заменил на:

Код:
  if (!NT_SUCCESS(status))
  {
    IoCompleteRequest(Irp,IO_NO_INCREMENT);
    return status;
  }
==========================

ВОПРОС:

Одни и теже это функции или нет?
Правильно ли я заменил код?
Записан
dimedrol
Помогающий

ru
Offline Offline

« Ответ #1 : 11-04-2005 07:31 » 

Наверно все-таки так:
Код:
  NTSTATUS CompleteRequest(PIRP Irp, NTSTATUS status,
  ULONG_PTR Information)
  {
  Irp->IoStatus.Status = status;
  Irp->IoStatus.Information = Information;
  IoCompleteRequest(Irp, IO_NO_INCREMENT);
  return status;
  }

PS
  Почитай Chapter5: The I/O Request Packet - там вроде много разъясняется.
« Последнее редактирование: 11-04-2005 10:19 от dimedrol » Записан

Как говориться, cемь бед - один Reset Улыбаюсь
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #2 : 12-04-2005 18:31 » 

Как у тебя- не выставлен код завершения
if (!NT_SUCCESS(status))
  {
    IoCompleteRequest(Irp,IO_NO_INCREMENT);
    return status;
  }

это значит что зарегистрированный на error COMPLETION_ROUTINEs скорее всего не будут вызваны, так как вместо кода завершения или будет 0x0, что означает success, или какой то муссор.
в общем ф-ция завершения не сможет определить код возврата, даже если будет вызвана, будет бардак и синяк.
Записан
Storm
Гость
« Ответ #3 : 14-04-2005 11:36 » 

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

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines