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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: NDIS жыв, NDIS возвращается, и NDIS последний бой  (Прочитано 6509 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
kibork
Гость
« : 05-02-2007 17:08 » 

Перечитал все ветки здесь про захват пакетов всю эту лабоду. но.
вот код
Код:
void CreateDriverMarkedBuffer(PNDIS_STATUS status, PNDIS_BUFFER *buffer)
{
    char *dataBuffer = ExAllocatePool(NonPagedPool, 6);
   

    NdisZeroMemory(dataBuffer, 6);
    dataBuffer[0] = DRIVER_PACKAGE_CLASS_ID;
    dataBuffer[5] = DRIVER_PACKAGE_VERSION;

    NdisAllocateBuffer(status, buffer, DRIVER_CUSTOM_DATA.BufferPoolHandle, dataBuffer, 6);

}

void attachMarkerToPackage(PNDIS_PACKET package)
{
    NDIS_STATUS status = 0xFFFF;
    PNDIS_BUFFER buffer = NULL;
    CreateDriverMarkedBuffer(&status, &buffer);
    if (status != NDIS_STATUS_SUCCESS)
    {
        return;
    }
    if ((buffer != NULL) && (package != NULL))
        NdisChainBufferAtFront(package, buffer);
}
по каким блин причинам оно может валится когда делает
NdisChainBufferAtFront -?
Записан
kibork
Гость
« Ответ #1 : 05-02-2007 17:14 » 

точнее если коментируем NdisChainBufferAtFront то все ок.
если нет то винда падает
Записан
aks68
Модератор

il
Offline Offline
Пол: Мужской

« Ответ #2 : 07-02-2007 18:18 » new

День добрый!

1. А валится-то оно как? Какой у нее код ошибки (bugcheck)?
2. Можешь прислать мини-дамп?
3. Заголовок пакета NDIS_PACKET получен от минипорта(протокола) или аллокированный в IM?
4. dataBuffer аллокирован неправильно - вначале необходимо аллокировать пул для буферов данных(при инициализации драйвера), а затем, используя ф-ю NdisAllocateMemoryWithTag аллокировать буферы.
5. Вставлять буфер IMHO лучше сзади.

С уважением,
Акс.
Записан
Kife
Помогающий

by
Offline Offline

« Ответ #3 : 04-04-2007 05:43 » 

ExAllocatePool(NonPagedPool, 6);
ИМХО не так надо делать. приду на работу - кину пример.
« Последнее редактирование: 04-04-2007 05:45 от Kife » Записан

_______
Да поможет нам F1,  и да сохранит нас F2 ...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines