Methods and apparatuses are provided that allow kernel mode data traffic
and user mode data traffic to share a common network communication port.
One apparatus includes user mode logic, kernel mode logic, and kernel
mode to user mode interface logic. The interface logic is configured to
receive data packets and selectively distribute the data packet to either
the user mode or kernel mode logic. The interface logic includes
"virtual" bridge logic and "virtual" miniport logic. The bridge logic
determines if a received data packet is a user mode or kernel mode data
packet. If it is a kernel mode data packet, then the bridge logic
provides the data packet to the kernel mode logic. If it is a user mode
data packet, then the bridge logic stores the data packet in memory for
subsequent use by the user mode logic. The bridge logic also receives
outgoing kernel mode data packets from the kernel mode logic and provides
them to a network communication port, and retrieves outgoing user mode
data packets from memory and provides them to the same network
communication port. The miniport logic provides an interface between the
memory accessed by the bridge logic and user mode logic. The miniport
logic accepts outgoing user mode data packets and stores them in the
memory for subsequent access by the bridge logic, and retrieves incoming
user mode data packets stored in memory by the bridge logic.