B.8.5.2 Binding a Stream to a Network Adapter Device
Usually, the lower edge of a STREAMS stack must be bound to one or more network adapter devices. This is best done by having the plumbing daemon for the stack issue a DATAL_IBIND IOCTL command to the dndis driver (open \Device\Streams\dndis).
Example: Associating a Stream with the Lance Network Adapter
#include <dl_ctrl.h>
cf_ndisdrv()
{
int result;
HANDLE fd;
struct strioctl StrIoctl;
struct datal_ibind DatalIbind;
fd = s_open("\Device\Streams\dndis", 0, 0);
strncpy(
DatalIbind.buffer,
"\Device\Lance01",
sizeof(DatalIbind.buffer) - 1
);
RtlInitString(&DatalIbind.adapter_name, DatalIbind.buffer);
Strioctl.ic_cmd = DATAL_IBIND;
StrIoctl.ic_len = sizeof(DatalIbind);
StriIoctl.ic_dp = (char *) &DatalIbind;
result = s_ioctl(fd, I_STR, &StrIoctl);
// now I_LINK fd under the ip driver
...
}