From: rf on
Hello, is it possible to independently control multiple instances of a driver
interface?

I have an NDIS5 protocol driver that binds to multiple NDIS drivers. Using
an interface that I register in the protocol driver, I want to notify my
application of changes from ANY of the bound NDIS drivers. This works fine
for a single binding.

My problem is that IoSetDeviceInterfaceState does not differentiate between
different instances of the interface that I've registered (via
IoRegisterDeviceInterface).

Currently, my protocol driver calls IoRegisterDeviceInterface for each NDIS
driver to which it binds. The returned 'SymbolicLinkName' is indeed
different for each binding. However, if I call IoSetDeviceInterfaceState on
two different registered interaces, the calls seem to override one another.
For example, if I try to ENABLE one instance of the interface and DISABLE
another instance of the interface, my application only receives the DISABLE
notification. If I ENABLE both instances, my application only receives one
notification.

I can see in the registry that there are in fact different instances
registered below my interface GUID.

My question is: can multiple instances of an interface be controlled
independently?

Thanks in advance,
Rick


From: Doron Holan [MSFT] on
you need to also pass a unique ReferenceString for each instnace if you are
registering more than one instance of the same GUID

d

--

This posting is provided "AS IS" with no warranties, and confers no rights.


"rf" <rf(a)discussions.microsoft.com> wrote in message
news:DF003654-3FFA-40D1-A37A-C67CA439DFBF(a)microsoft.com...
> Hello, is it possible to independently control multiple instances of a
> driver
> interface?
>
> I have an NDIS5 protocol driver that binds to multiple NDIS drivers.
> Using
> an interface that I register in the protocol driver, I want to notify my
> application of changes from ANY of the bound NDIS drivers. This works
> fine
> for a single binding.
>
> My problem is that IoSetDeviceInterfaceState does not differentiate
> between
> different instances of the interface that I've registered (via
> IoRegisterDeviceInterface).
>
> Currently, my protocol driver calls IoRegisterDeviceInterface for each
> NDIS
> driver to which it binds. The returned 'SymbolicLinkName' is indeed
> different for each binding. However, if I call IoSetDeviceInterfaceState
> on
> two different registered interaces, the calls seem to override one
> another.
> For example, if I try to ENABLE one instance of the interface and DISABLE
> another instance of the interface, my application only receives the
> DISABLE
> notification. If I ENABLE both instances, my application only receives
> one
> notification.
>
> I can see in the registry that there are in fact different instances
> registered below my interface GUID.
>
> My question is: can multiple instances of an interface be controlled
> independently?
>
> Thanks in advance,
> Rick
>
>
From: rf on
Thanks for the response; I thought that I had already tried that but I'll
check it out and see if it helps.

Rick

"Doron Holan [MSFT]" wrote:

> you need to also pass a unique ReferenceString for each instnace if you are
> registering more than one instance of the same GUID
>
> d
>
> --
>
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
>
> "rf" <rf(a)discussions.microsoft.com> wrote in message
> news:DF003654-3FFA-40D1-A37A-C67CA439DFBF(a)microsoft.com...
> > Hello, is it possible to independently control multiple instances of a
> > driver
> > interface?
> >
> > I have an NDIS5 protocol driver that binds to multiple NDIS drivers.
> > Using
> > an interface that I register in the protocol driver, I want to notify my
> > application of changes from ANY of the bound NDIS drivers. This works
> > fine
> > for a single binding.
> >
> > My problem is that IoSetDeviceInterfaceState does not differentiate
> > between
> > different instances of the interface that I've registered (via
> > IoRegisterDeviceInterface).
> >
> > Currently, my protocol driver calls IoRegisterDeviceInterface for each
> > NDIS
> > driver to which it binds. The returned 'SymbolicLinkName' is indeed
> > different for each binding. However, if I call IoSetDeviceInterfaceState
> > on
> > two different registered interaces, the calls seem to override one
> > another.
> > For example, if I try to ENABLE one instance of the interface and DISABLE
> > another instance of the interface, my application only receives the
> > DISABLE
> > notification. If I ENABLE both instances, my application only receives
> > one
> > notification.
> >
> > I can see in the registry that there are in fact different instances
> > registered below my interface GUID.
> >
> > My question is: can multiple instances of an interface be controlled
> > independently?
> >
> > Thanks in advance,
> > Rick
> >
> >
> .
>