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.