From: Arsalan Ahmad on
Hello all,

I want to create an NDIS miniport driver with stream interface. Please tell
me what should I do as discussed below?

1. Either I create a driver which exposes all DriverEntry(), XXX_Open(),
XXX_Close(), XXX_Read() etc functions. I initialize miniport in
DriverEntry() function.

2. Or I create a driver which exposes XXX_Init(), XXX_DeInit(), XXX_Close(),
XXX_Open(), XXX_Read() functions (no DriverEntry() function) and I
initialize miniport in XXX_Init() function.

Thanks,

Arsalan

From: Stephan Wolf [MVP] on
On Feb 15, 10:50 am, "Arsalan Ahmad" <arsalan_ah...(a)fornntp.com>
wrote:
> Hello all,
>
> I want to create an NDIS miniport driver with stream interface. Please tell
> me what should I do as discussed below?

Before Vista, NDIS miniports should only use NDIS functions.
Otherwsie, your driver will not pass WHQL certification (HCT).

See also NdisMRegisterDevice().

Stephan

From: "Remi de Gravelaine" gravelaine at aton dash sys dot on
> So, you mean I have to specify separate registry entries for my driver
> (one for stream interface and other for NDIS). But does not it mean that
> the device manager will then load two separate drivers???

Your driver DLL will be loaded only once, either by the device manager or by
NDIS, but instanciated twice (once for device, once for NDIS.)

> What if I want to use RegisterDevice() to register my device without
> requiring a need to create registry entries. So when my application run,
> it will use RegisterDevice() to install the driver (stream + miniport)?

RegisterDevice is OK, although superseded by ActivateDevice(Ex) functions.
You may or may not need to setup some Registry keys before the stream driver
activation.

Remi


From: Arsalan Ahmad on
Thanks,

Please tell me how can I debug inside my driver dll. Right now calling
RegisterDevice() from my application is returning NULL and I am unable to
understand the cause for it.

Thanks,

Arsalan

"Remi de Gravelaine" <gravelaine at aton dash sys dot fr> wrote in message
news:%23ncM6uSUHHA.4796(a)TK2MSFTNGP05.phx.gbl...
>> So, you mean I have to specify separate registry entries for my driver
>> (one for stream interface and other for NDIS). But does not it mean that
>> the device manager will then load two separate drivers???
>
> Your driver DLL will be loaded only once, either by the device manager or
> by NDIS, but instanciated twice (once for device, once for NDIS.)
>
>> What if I want to use RegisterDevice() to register my device without
>> requiring a need to create registry entries. So when my application run,
>> it will use RegisterDevice() to install the driver (stream + miniport)?
>
> RegisterDevice is OK, although superseded by ActivateDevice(Ex) functions.
> You may or may not need to setup some Registry keys before the stream
> driver activation.
>
> Remi
>

From: "Remi de Gravelaine" gravelaine at aton dash sys dot on
Well, the first thing to do would be to run a debug version of your image.
You will then be able to look at debug output when you call RegisterDevice,
to put a breakpoint in the XXX_Init code, etc.
Without this support, I hardly see what you can do.
Maybe should you tell us a little bit more about your system (OS version,
device, platform and so on.)

Remi