Подскажите,пожалуйста, от чего зависит, какая функция ProtocolReceive или ProtocolReceivePacket вызывается в NDIS IM драйвере, когда приходит пакет из сети?
Это зависит от драйвера нижележащего минипорта. Если он вызовет NdisMIndicateReceivePacket это будет соответствовать вызову ProtocolReceivePacket, если NdisMEthIndicateReceive — то ProtocolReceive. Это верно для драйверов NDIS 4,5.x, для 6.0 несколько сложнее ( добавлен еще один метод индикации приема данных ).