в общем очередное уточнение вопроса:
Когда приходит пакет - вызывается ProtocolReceive ей передается помимо всего прочего HeaderBuffer и LookaheadBuffer - они readonly и PacketSize
в случае если PacketSize>LookAheadBufferSize то после вызова NdisMEthIndicateReceive мы попадаем в MiniportTransferData - там все просто и понятно, но вот если PacketSize<LookAheadBufferSize то нужно модифицировать этот самый LookAheadBuffer - как это сделать правильно, а то у меня переодически система падает на синий экран смерти
остальное всё вроде работает.