I am doing Miniport network driver certification using HCK . While doing a test , i got error like " Supported list does not contain required Oid " . I code miniport.cpp i wrote all supported OID . why these error coming ?
ERRORS :
Variation #6 Check for all required oids
PrintOidName
Oid = 0x00010115, OID_GEN_MAXIMUM_SEND_PACKETS
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x00020101, OID_GEN_XMIT_OK
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x00020102, OID_GEN_RCV_OK
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x00020103, OID_GEN_XMIT_ERROR
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x00020104, OID_GEN_RCV_ERROR
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x00020105, OID_GEN_RCV_NO_BUFFER
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x01020101, OID_802_3_RCV_ERROR_ALIGNMENT
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x01020102, OID_802_3_XMIT_ONE_COLLISION
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x01020103, OID_802_3_XMIT_MORE_COLLISIONS
FAILED: [21478] Supported list does not contain required Oid
//
// Optional OIDs
// #define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116 #define OID_GEN_SUPPORTED_GUIDS 0x00010117 #define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118 // Set only #define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119 // Set only #define OID_GEN_MEDIA_CAPABILITIES 0x00010201 #define OID_GEN_PHYSICAL_MEDIUM 0x00010202
#if ((NTDDI_VERSION >= NTDDI_VISTA) || NDIS_SUPPORT_NDIS6)
//
// new optional for NDIS 6.0
// #define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203 // query only #define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204 // query and set
//
// new for NDIS 6.0. NDIS will handle on behalf of the miniports
// #define OID_GEN_MAC_ADDRESS 0x00010205 // query and set #define OID_GEN_MAX_LINK_SPEED 0x00010206 // query only #define OID_GEN_LINK_STATE 0x00010207 // query only
And when you pass the list of supported OIDs with the call to NdisMSetMiniportAttributes in the NDIS_MINIPORT_ADAPTER_ATTRIBUTES structure does your list of supported OIDs include the ones that it says are missing? The error message seems to say the list of supported OIDS is incorrect, which is different than if you wrote code to handle those OIDs.
Jan
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@gmail.com
Sent: Monday, October 5, 2015 12:31 AM
To: Windows System Software Devs Interest List Subject: [ntdev] Why " Supported list does not contain required Oid " in certification test ?
I am doing Miniport network driver certification using HCK . While doing a test , i got error like " Supported list does not contain required Oid " . I code miniport.cpp i wrote all supported OID . why these error coming ?
ERRORS :
Variation #6 Check for all required oids PrintOidName - Oid = 0x00010115, OID_GEN_MAXIMUM_SEND_PACKETS FAILED: [21478] Supported list does not contain required Oid PrintOidName - Oid = 0x00020101, OID_GEN_XMIT_OK FAILED: [21478] Supported list does not contain required Oid PrintOidName - Oid = 0x00020102, OID_GEN_RCV_OK FAILED: [21478] Supported list does not contain required Oid PrintOidName - Oid = 0x00020103, OID_GEN_XMIT_ERROR FAILED: [21478] Supported list does not contain required Oid PrintOidName - Oid = 0x00020104, OID_GEN_RCV_ERROR FAILED: [21478] Supported list does not contain required Oid PrintOidName - Oid = 0x00020105, OID_GEN_RCV_NO_BUFFER FAILED: [21478] Supported list does not contain required Oid PrintOidName - Oid = 0x01020101, OID_802_3_RCV_ERROR_ALIGNMENT FAILED: [21478] Supported list does not contain required Oid PrintOidName - Oid = 0x01020102, OID_802_3_XMIT_ONE_COLLISION FAILED: [21478] Supported list does not contain required Oid PrintOidName - Oid = 0x01020103, OID_802_3_XMIT_MORE_COLLISIONS FAILED: [21478] Supported list does not contain required Oid
// // Optional OIDs // #define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116 #define OID_GEN_SUPPORTED_GUIDS 0x00010117 #define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118 // Set only #define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119 // Set only #define OID_GEN_MEDIA_CAPABILITIES 0x00010201 #define OID_GEN_PHYSICAL_MEDIUM 0x00010202
#if ((NTDDI_VERSION >= NTDDI_VISTA) || NDIS_SUPPORT_NDIS6) // // new optional for NDIS 6.0 // #define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203 // query only #define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204 // query and set
// // new for NDIS 6.0. NDIS will handle on behalf of the miniports // #define OID_GEN_MAC_ADDRESS 0x00010205 // query and set #define OID_GEN_MAX_LINK_SPEED 0x00010206 // query only #define OID_GEN_LINK_STATE 0x00010207 // query only
(well, it’s been many years since I worked on NDIS drivers, but…)
IIRC, there’s a point where you actually return to NDIS a list of the OIDs your driver supports. The message says that this list does not contain one or more required OIDs, such as OID_GEN_MAXIMUM_SEND_PACKETS.
Again, like your other post, I’m not sure what it is that you don’t understand.
And you didn’t answer my question, did you correctly include those OIDs on the list of OIDs your driver understood? Actually there is a debugger extension that will display what OIDs a miniport claims to support, it’s one of the options to !ndiskd
>my oid request function is like this : > >NDIS_STATUS CMiniport::OidRequest( > __in PNDIS_OID_REQUEST OidRequest >) { > > NDIS_STATUS status = NDIS_STATUS_SUCCESS; > > if ((OidRequest->RequestType == NdisRequestQueryInformation) || (OidRequest->RequestType == NdisRequestQueryStatistics)) > > { > PVOID pInformation = NULL; > ULONG ulInformationLength = 0; > ULONG ulZerro = 0; > > switch (OidRequest->DATA.QUERY_INFORMATION.Oid) > { > > case OID_GEN_HARDWARE_STATUS: > ---- > break; > > case OID_GEN_MAXIMUM_SEND_PACKETS : > – > break; > > etc… > > } > >I included OID_GEN_MAXIMUM_SEND_PACKETS as switch cases and why this error message like >PrintOidName >- Oid = 0x00010115, OID_GEN_MAXIMUM_SEND_PACKETS >FAILED: [21478] Supported list does not contain required Oid > >please explain . > >— >NTDEV is sponsored by OSR > >Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev > >OSR is HIRING!! See http://www.osr.com/careers > >For our schedule of WDF, WDM, debugging and other seminars visit: >http://www.osr.com/seminars > >To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
So i included OID_GEN_MAXIMUM_SEND_PACKETS, OID_GEN_XMIT_OK, OID_GEN_RCV_OK etc . Then why this error " Supported list does not contain required Oid " happening ?
Oid = 0x00010115, OID_GEN_MAXIMUM_SEND_PACKETS
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x00020101, OID_GEN_XMIT_OK
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x00020102, OID_GEN_RCV_OK
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x00020103, OID_GEN_XMIT_ERROR
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x00020104, OID_GEN_RCV_ERROR
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x00020105, OID_GEN_RCV_NO_BUFFER
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x01020101, OID_802_3_RCV_ERROR_ALIGNMENT
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x01020102, OID_802_3_XMIT_ONE_COLLISION
FAILED: [21478] Supported list does not contain required Oid
PrintOidName
Oid = 0x01020103, OID_802_3_XMIT_MORE_COLLISIONS
FAILED: [21478] Supported list does not contain required Oid
and system info :
Date/Time: 10/7/2015 3:25:51 PM
Script: C:\WLK\JobsWorkingDir\Tasks\WTTJobRunAF4B7CDB-825A-4E3A-8DAA-856BA01B98C2\ndistest\scripts\lan\1c_ioctlcoverage.wsf
NDIS Test: 6.3.9600.17369
OS Type: Windows 7 Professional Professional (Laptop)
OS Version: 6.1 Build 7601 (Service Pack 1) Multiprocessor Free 7601.win7sp1_rtm.101119-1850
BIOS Date: 07/08/14
BIOS Name: DELL - 6222004
CPU Type: x86 Family 6 Model 42 Stepping 7, GenuineIntel
Processors: 4
Loop Count: 1
Driver Verifier Selection: Ignore
ndis.sys: 712576 11/20/2010 4:30:08 6.1.7601.17514 Free
Driver Verifier Level: Disabled
WHQL Test Mode: No
Test Device
CLIENTTEST2LAP: mydriver Virtual Network Driver
C:\Windows\system32\DRIVERS\nsv.sys
19376 10/7/2015 15:06:18 4.5.0.2 Free
Driver Verifier Level: Disabled
Ethernet VIRTUAL/ISA
{173BC96E-ABCD-44FD-8E12-77994895B279}
mydriver_nsv
MAXIMUM_TOTAL_SIZE = 1514
LINK_SPEED = 1 Gbps
OID_PNP_CAPABILITIES Flags = 0x0
Magic\Pattern\Link Wake Unspecified\Unspecified\Unspecified
MAC_OPTIONS = 0x98
Lookahead buffer cannot be copied directly
Receives are not Serialized
Transfers can be Pended
NDIS handles Loopback
802.1p Priority is not supported
Mac Address can be Overwritten
802.1q VLAN is not supported
MINIPORT_INFO = 0x2932882
Not a Bus Master
WDM Driver
Does not use Scatter Gather List
Does not support ResetHandlerEx
Does not Indicate Packets
Outstanding packets cannot cause reset to be called
Outstanding requests cannot cause reset to be called
Ignore Token Ring Errors
Not an IM Driver
Is not an Ndis 5 driver
Is not Connection Oriented
Deserialized
Does not require Media Polling
Is not a NetBoot Card
Power Management is not supported
Supports Mac Address Overwrite
Uses Safe Buffer Apis
Is not Hidden
Is not Software Enumerated
Surprise Remove OK
Halt on Suspend
Is not a Hardware Device
Supports Cancel Send Packets
Does not do 64 Bit DMA
Well, there you go. You have the list of OIDs that NDIS sees you as supporting… and you have the list of OIDs that NDIS says you must support but are not supporting.
Because you have a bug. Looks to ME like NDIS is not understanding the list you are building and passing. Time to get out the debugger, right? Do some debugging??
So the problem is my NDIS not detecting my supported oid ? Is it a problems when I
Declare like
m_ulSupportedOidsSize = 44;
m_pSupportedOids = new NDIS_OID[m_ulSupportedOidsSize];
m_pSupportedOids[uIdx++] = OID_GEN_TRANSMIT_BUFFER_SPACE;
Instead of
m_pSupportedOids = {oid…}
We can’t tell you that.
Ok… if I enable windbug for debugging my driver… How can I put break point ? Where can I put break point to know whether driver detect oid ?
The first place I would start is to break just after I create that
structure but before I pass it to NDIS, to make sure that the data in
memory looks like what I expect. Take EXTRA steps to make sure you are
counting correctly. It’s extremely easy to make an off-by-one error in
this kind of code, and it can be difficult to spot it, because your eyes
know what they expect to see.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Media Type 802.3
Physical Medium 802.3
Device Path String with 95 characters [Buffer at 9d8e2590 is not available]
Device Object 8fc5f028
MAC Address 00-44-yy-77-99-44
STATE
Miniport Running
Device PnP Started
Datapath Normal
Interface Up
Media Connected
Power D0
References 0n12
User Handles 0
Total Resets 0
Pending OID None
Flags 2c452000