Description of NDIS 6.0
NdisRequestMethod
Applies to Window Vista

Background

NDIS 6.0 provides a new NdisOidRequest library call as a replacement for the NdisRequest call used in prior NDIS versions. The new NDIS library call uses a new NDIS_OID_REQUEST structure instead of the NDIS_REQUEST structure used in prior NDIS versions.

NDIS_OID_REQUEST adds some new fields that are documented in Windows Driver Kit (WDK) 6000, including:

bulletHeader
bulletPortNumber
bulletTimeout
bulletRequestId
bulletRequestHandle

In addition, some fields are renamed.

For those familiar with earlier NDIS versions the new mechanism should be fairly familiar.

WDK 6000 describes several NdisRequestTypes, but doesn't identify the new NdisRequestMethod type.

 

NdisRequestMethod

A NDIS "method request" uses the METHOD_INFORMATION structure within the DATA union of the NDIS_OID_REQUEST structure.

A NDIS method request can perform both input and output operations within one request. It is actually simple:

bulletOid - Specifies the NDIS object identifier of the requested operation.
 
bulletInformationBuffer - A pointer to a buffer that be used for input (read by the underlying driver), output (written by the underlying driver) or both input and output.
 
bulletInputBufferLength - The number of bytes in the buffer at InformationBuffer that the driver can read.
 
bulletOutputBufferLength - The number of bytes in the buffer at InformationBuffer that the driver can write.
 
bulletMethodId - Specifies the "method" to be performed.
 
bulletBytesWritten - The number of bytes that the underlying driver has written to InformationBuffer.
 
bulletBytesRead - The number of bytes that the underlying driver has read from InformationBuffer.
 
bulletBytesNeeded - The underlying driver can return the needed size of InformationBuffer if it is too small to perform a requested operation.

 

Example Usage

The Native 802.11 OID_DOT11_ENUM_BSS_LIST request provides an example of use if NdisRequestMethod. For this OID  the InformationBuffer member of the OidRequest parameter contains a three-character country string as defined in the IEEE 802.11d-2001 standard. The underlying Native 802.11 driver completes the method request by overwriting the InformationBuffer member with a DOT11_BYTE_ARRAY structure

Here is a PCAGizmo trace that logs OID_DOT11_ENUM_BSS_LIST use of NdisRequestMethod:

0067  38.214502 sec  FilterOidRequestHandler(0)  83 Bytes
Oid   : OID_DOT11_ENUM_BSS_LIST(0x0E010179) - NdisRequestMethod
IB Len: 3;  Information( 3 Bytes):
000000:  00 00 00                :                            ................
0068  38.214605 sec  FilterOidRequestCompleteHandler(0)  92 Bytes
Oid   : OID_DOT11_ENUM_BSS_LIST(0x0E010179) - NdisRequestMethod
Status: NDIS_STATUS_BUFFER_OVERFLOW (0x80000005)
IB Len: 20;  Written: 12; Read: 12; Needed: 12
Information( 12 Bytes):
000000:  80 01 10 00 00 00 00 00 : 41 01 00 00                ........A.......
0069  38.214826 sec  FilterOidRequestHandler(0)  83 Bytes
Oid   : OID_DOT11_ENUM_BSS_LIST(0x0E010179) - NdisRequestMethod
IB Len: 3;  Information( 3 Bytes):
000000:  00 00 00                :                            ................
0070  38.214895 sec  FilterOidRequestCompleteHandler(0)  413 Bytes
Oid   : OID_DOT11_ENUM_BSS_LIST(0x0E010179) - NdisRequestMethod
Status: NDIS_STATUS_SUCCESS (0x00000000)
IB Len: 333;  Written: 333; Read: 333; Needed: 333
Information( 333 Bytes):
000000:  80 01 10 00 41 01 00 00 : 41 01 00 00 00 00 00 00    ....A...A.......
000010:  85 09 00 00 7B 7B 7B 7B : 7B 7B 7B 7B 00 03 2F 00    ....{{{{{{{{../.
000020:  62 9A 7B 7B 01 00 00 00 : A4 FF FF FF 06 00 00 00    b.{{............
000030:  01 7B 64 00 28 F4 13 21 : 52 06 00 00 80 49 19 CE    .{d.(..!R....I..
000040:  4C D5 C6 01 11 00 7B 7B : 11 00 00 00 00 06 70 63    L.....{{......pc
000050:  61 75 73 61 01 04 82 84 : 8B 96 03 01 03 00 00 00    ausa............
000060:  00 8F 09 00 00 7B 7B 7B : 7B 7B 7B 7B 7B 00 0C 41    .....{{{{{{{{..A
000070:  D7 E1 ED 7B 7B 01 00 00 : 00 C8 FF FF FF 4E 00 00    ...{{........N..
000080:  00 01 7B 64 00 8A E1 2F : 8E 73 02 00 00 5E 83 33    ..{d.../.s...^.3
000090:  CE 4C D5 C6 01 11 04 7B : 7B 4A 00 00 00 00 0A 70    .L.....{{J.....p
0000A0:  63 61 75 73 61 2D 67 65 : 65 01 08 82 84 8B 96 24    causa-gee......$
0000B0:  30 48 6C 03 01 06 05 04 : 01 03 00 00 2A 01 04 2F    0Hl.........*../
0000C0:  01 04 32 04 0C 12 18 60 : DD 05 00 10 18 01 00 DD    ..2....`........
0000D0:  16 00 50 F2 01 01 00 00 : 50 F2 02 01 00 00 50 F2    ..P.....P.....P.
0000E0:  02 01 00 00 50 F2 02 00 : 00 00 00 85 09 00 00 7B    ....P..........{
0000F0:  7B 7B 7B 7B 7B 7B 7B 00 : 12 0E 09 A2 91 7B 7B 01    {{{{{{{......{{.
000100:  00 00 00 A5 FF FF FF 07 : 00 00 00 01 7B 64 00 B1    ............{d..
000110:  01 88 9A D1 01 00 00 8E : 70 20 CE 4C D5 C6 01 31    ........p .L...1
000120:  04 7B 7B 26 00 00 00 00 : 08 57 45 53 54 33 36 33    .{{&.....WEST363
000130:  38 01 04 82 84 8B 96 03 : 01 06 05 04 01 03 00 00    8...............
000140:  2A 01 03 32 08 0C 12 18 : 24 30 48 60 6C             *..2....$0H`l...

Additional PCAGizmo OID traces can be found at the URL:

    http://ndis.com/papers/ieee802_11_notes.htm

 

Topic Status

November 16, 2006 Information posted.
 

PCAUSA Home · Privacy Statement · Products · Ordering · Support · Utilities · Resources
Mailing Lists  · PCAUSA Newsletter · PCAUSA Discussion List
Rawether for Windows, Rawether .NET, WinDis 32 and NDIS Press are trademarks of Printing Communications Assoc., Inc. (PCAUSA)
Microsoft, MS, Windows, Windows Vista, Windows 95, Windows 98, Windows Millennium, Windows 2000, and Win32 are registered trademarks and Visual C++ and Windows NT are trademarks of the Microsoft Corporation.
Copyright © 1996-2007 Printing Communications Assoc., Inc. (PCAUSA)
Last modified: January 20, 2007