Перечитал все ветки здесь про захват пакетов всю эту лабоду. но.
вот код
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 -?