Re[20]: Применим ли Си++ в серьезном коде?
От: Maxim S. Shatskih Россия  
Дата: 14.06.04 21:58
Оценка:
P>Предупреждая твой следующих ход: обработка NDIS_STATUS_PENDING в результате NdisSend
>тоже легко решается.
P>И здесь, и в ProtocolSendComplete.

Да это как раз тривиально в любом языке:

NdisSend(&Status, Binding->LowerAdapter, Packet);
if( Status != NDIS_STATUS_PENDING )
ProtocolSendComplete(Binding, Packet, Status);

Флаг вот только в руки реализовывать __CxxFrameHandler в ядре. На DISPATCH_LEVEL же это вообще невозможно, потому как exceptions основаны на thread local storage (сегмент FS), а на DISPATCH_LEVEL это понятие размыто. Запачкаешь FS:[0] какой-то нити, спасибо за это никто не скажет

Еще нюанс. После NdisSend пакет нам не принадлежит. Надо не забыть занулить поле в классе, чтобы деструктор по выходу из блока не решил уничтожить не-принадлежащий нам пакет. В итоге сложности вырастают, они всего лишь заталкиваются внутрь враппера.

Еще нюанс. Написание враппера вокруг обоих структур, а потом еще и "кода по делу" — дольше будет.

Еще нюанс. В отладчике страшно будет
Занимайтесь LoveCraftом, а не WarCraftом!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.