Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Many entry points that are found in the NDIS 5.x NDIS_PROTOCOL_CHARACTERISTICS structure are removed from the NDIS 6.0 version of the structure. The NDIS 6.0 version of the structure is named NDIS_PROTOCOL_DRIVER_CHARACTERISTICS.
Most NDIS 6.0 data structures contain structure version information in the object header member, which is the first member of the structure. The version information is specified in the NDIS_OBJECT_HEADER structure.
The object header has three members: Type, Size, and Revision . If the header information is incorrect, calls to NDIS 6.0 functions will fail. The following example illustrates the header initialization:
ProtocolChar.Header.Type = NDIS_OBJECT_TYPE_PROTOCOL_DRIVER_CHARACTERISTICS,
ProtocolChar.Header.Size = sizeof(NDIS_PROTOCOL_DRIVER_CHARACTERISTICS);
ProtocolChar.Header.Revision = NDIS_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_1;
In the following examples, ProtocolChar is a structure of type NDIS_PROTOCOL_DRIVER_CHARACTERISTICS. Strikeouts indicate the changed NDIS 5.x driver equivalent.
Set the NDIS 6.0 protocol drivers' major and minor version numbers to 6 and 0, respectively.
ProtocolChar.MajorNdisVersion = 5;
ProtocolChar.MajorNdisVersion = 6;
ProtocolChar.MinorNdisVersion = 1;
ProtocolChar.MinorNdisVersion = 0;
NDIS 6.0 protocol drivers must specify a driver version. The driver version is independent of the NDIS major and minor version.
ProtocolChar.MajorDriverVersion = PROTOCOL_MAJOR_DRIVER_VERSION;
ProtocolChar.MinorDriverVersion = PROTOCOL_MINOR_DRIVER_VERSION;
Replace the ProtocolBindAdapter function with the ProtocolBindAdapterEx function.
ProtocolChar.BindAdapterHandler = ProtocolBindAdapter;
ProtocolChar.BindAdapterHandlerEx = ProtocolBindAdapterEx;
Replace the ProtocolUnbindAdapter function with the ProtocolUnbindAdapterEx function.
ProtocolChar.UnbindAdapterHandler = ProtocolUnbindAdapter;
ProtocolChar.UnbindAdapterHandlerEx = ProtocolUnbindAdapterEx;
Replace the ProtocolOpenAdapterComplete function with the ProtocolOpenAdapterCompleteEx function.
ProtocolChar.OpenAdapterCompleteHandler = ProtocolOpenAdapterComplete;
ProtocolChar.OpenAdapterCompleteHandlerEx = ProtocolOpenAdapterCompleteEx;
Replace the ProtocolCloseAdapterComplete function with the ProtocolCloseAdapterCompleteEx function.
ProtocolChar.CloseAdapterCompleteHandler = ProtocolCloseAdapterComplete;
ProtocolChar.CloseAdapterCompleteHandlerEx = ProtocolCloseAdapterCompleteEx;
Replace the ProtocolPnPEvent function with the ProtocolNetPnPEvent function.
ProtocolChar.PnPEventHandler = ProtocolPnPEvent;
ProtocolChar.NetPnPEventHandler = ProtocolNetPnPEvent;
Replace the ProtocolRequestComplete function with the ProtocolOidRequestComplete function:
ProtocolChar.RequestCompleteHandler = ProtocolRequestComplete;
ProtocolChar.OidRequestCompleteHandler = ProtocolOidRequestComplete;
To register optional services, provide an entry point for the ProtocolSetOptions function.
ProtocolChar.SetOptionsHandler = ProtocolSetOptions;
Send and receive functions that use the NET_BUFFER and NET_BUFFER_LIST structures replace functions that use NDIS_PACKET structures:
ProtocolChar.ReceivePacketHandler = ProtocolReceivePacket;
ProtocolChar.SendPacketsCompleteHandler = ProtocolSendPacketsComplete;
ProtocolChar.ReceiveNetBufferListsHandler = ProtocolReceiveNetBufferLists;
ProtocolChar.SendNetBufferListsCompleteHandler = ProtocolSendNetBufferListsComplete;
For more information about the NET_BUFFER and NET_BUFFER_LIST structures, see NET_BUFFER Architecture.
To support system uninstall of a driver, replace the ProtocolUnload function, if any, with the ProtocolUninstall function.
ProtocolChar.UnloadHandler = ProtocolUnload;
ProtocolChar.UninstallHandler = ProtocolUninstall;