Every STREAMS driver and module in the subsystem-parallel stack must identify itself as belonging to that stack. This is done by specifying the same nonNULL third argument to StrmRegisterDriver and StrmRegisterModule.
Example: DriverEntry Routine for a Subsystem-Parallel tcpip.sys
#include <ntddk.h> #include <stream.h> #define SUBSYSTEM_NAME "tcpip_up" extern int arpinit(void); extern int tcpinit(void); NTSTATUS DriverEntry( IN PDRIVER_OBJECT driver, IN PUNICODE_STRING device ) { NTSTATUS status; status = StrmRegisterModule(driver, &arpinfo, SUBSYSTEM_NAME); if (status != STATUS_SUCCESS) { return(status); } status = StrmRegisterDriver( driver, &tcpinfo, SUBSYSTEM_NAME, NULL ); if (status != STATUS_SUCCESS) { return(status); } arpinit(); tcpinit(); return(STATUS_SUCCESS); }