Eliyas Yakub [MSFT] wrote:
> It should work. My guess is that your app has not opened the device for
> overlapped I/O. Read this tip for more info:
> http://www.microsoft.com/whdc/driver...rlappedIo.mspx
Interesting to see three completely different answers (Tom=no,
Eliyas=yes, Max=N/A).
Max is probably right in that setting OID_802_11_RSSI_TRIGGER should
only be done by one application, i.e. usually the XP+ built-in WZC.
Eliyas is probably right in that there can be multiple concurrent IOCTL
request outstanding.
Tom, well, I checked the NDISPROT sources (DDK build 3790.1830) and
think all used resources are on the stack and thus there should not be
any contention. Also, if there are several user-mode threads passing
IOCTLs to the driver, these are handled independently and one should
not block the other(s).
Also, in general, NDIS should be able to handle any number of OID
requests from protocol(s) to miniport(s). The only restriction is that
OID requests are passed in a serualized manner, one after the other, to
the miniport. [This is due to historical reasons as the
NdisMQueryInformationComplete() and NdisMSetInformationComplete()
functions do not allow the miniport to tell NDIS *which* request is
complete - so it can only be the last one.]
Bottom line: I guess the OPs approach should work if he follows Eliyas'
advice to open the device for overlapped I/O. However, I am not sure as
to whether he will experience any race conditions with WZC for the
OID_802_11_RSSI_TRIGGER.
Stephan