Hi
We’re currently developing a NDIS driver, and we need to get and set
various properties. A lot of the read properties are rapidly changing and
we would like to be able to poll various parameters frequently, in the
region of 2-3 times a second. We are currently using WMI for this task but
have been very disapointed with the performance (in that is takes far too
long to get info), so my questions are:
-
in the NDIS domain, is WMI a suitable technique for rapidly aquiring
information from the driver? I have read a little about performance
counters, can we utilise these?
-
I have also come across some code which enumerates all NDIS drivers (via
the registry), and allows direct DeviceIO calls to the driver, however,
this ‘back-door’ technique, seems to me, to be far too ‘hacky’, also it’s
not clear how to set values. Is this technique acceptable?
-
Is there any other way?
I hope I’m making sense here, and look forward to any help anyone can give
me.
Mark Riley
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
----- Original Message -----
From:
To: NT Developers Interest List
Sent: Tuesday, April 24, 2001 9:44 AM
Subject: [ntdev] ndis - how to get / set properties
> Hi
>
> We’re currently developing a NDIS driver, and we need to get and set
> various properties. A lot of the read properties are rapidly changing and
> we would like to be able to poll various parameters frequently, in the
> region of 2-3 times a second. We are currently using WMI for this task
but
> have been very disapointed with the performance (in that is takes far
too
> long to get info), so my questions are:
>
> 1. in the NDIS domain, is WMI a suitable technique for rapidly aquiring
> information from the driver? I have read a little about performance
> counters, can we utilise these?
>
> 2. I have also come across some code which enumerates all NDIS drivers
(via
> the registry), and allows direct DeviceIO calls to the driver, however,
> this ‘back-door’ technique, seems to me, to be far too ‘hacky’, also it’s
> not clear how to set values. Is this technique acceptable?
>
If the “backdoor” you are refering to is the use of
IOCTL_NDIS_QUERY_GLOBAL_STATISTICS, then that is usable on NT 4.0 and
Windows 2000+. Its use was illustrated in a sample on the NT 4.0 DDK. That
sample was removed from the W2K DDK - possibly because it would require
manual input of the adapter’s GUID from the command-line; hardly practical.
It may be possible to set information using this IOCTL by appropriately
defining your private query OIDs. For example, an OID that can be
interpreted as :this isn’t really a query; look in the query buffer and set
some information…
> 3. Is there any other way?
The use of a relay NDIS protocol driver to pass private query/set OIDs to
your driver is completely viable on all Windows platforms.
It may be possible to NdisMRegisterDevice and then DeviceIoControl calls.
Windows 2000+ only. WHQL would probably scream.
Others??? Michal?
>
> I hope I’m making sense here, and look forward to any help anyone can give
> me.
>
Good luck,
Thomas F. Divine
PCAUSA - Toolkits & Resources For Network Software Developers
NDIS Protocol - NDIS Intermediate - TDI Client
http: - http:
—
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com</http:></http:>
> ----------
From: Thomas F. Divine[SMTP:xxxxx@pcausa.com]
Reply To: NT Developers Interest List
Sent: Wednesday, April 25, 2001 4:31 AM
To: NT Developers Interest List
Subject: [ntdev] Re: ndis - how to get / set properties
It may be possible to NdisMRegisterDevice and then DeviceIoControl calls.
Windows 2000+ only. WHQL would probably scream.
Others??? Michal?
I do use NdisMRegisterDevice() on w2k and standard IOCTL interface on NT4
and w9x. Drivers aren’t binary compatible and there is special version for
every mentioned OS with a lot of shared code. Note using IOCTL on NT4 needs
something similar as NdisMRegisterDevice() does internally – NDIS registers
own IRP handlers so original must be saved and requests not for your device
must be routed to original handlers. When ready, private IOCTLs with direct
access can be used to make things really fast. WHQL would be a problem, of
course.
Best regards,
Michal Vodicka
Veridicom
(RKK - Skytale)
[WWW: http://www.veridicom.com , http://www.skytale.com]
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
> access can be used to make things really fast. WHQL would be a problem, of
course.
BTW - nVidia’s Detonator 3 videocard driver has NO digital signature.
Not so minor vendor :-)))
Max
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com