diff --git a/reactos/include/ddk/ndis.h b/reactos/include/ddk/ndis.h index d9d82e4cfc4..9eb6e2d3176 100644 --- a/reactos/include/ddk/ndis.h +++ b/reactos/include/ddk/ndis.h @@ -42,7 +42,7 @@ #include "netevent.h" #include -typedef int NDIS_STATUS, *PNDIS_STATUS; +typedef _Return_type_success_(return >= 0) int NDIS_STATUS, *PNDIS_STATUS; #include "ntddndis.h" @@ -54,6 +54,8 @@ typedef unsigned int UINT, *PUINT; extern "C" { #endif +__drv_Mode_impl(NDIS_INCLUDED) + #ifndef __NET_PNP__ #define __NET_PNP__ @@ -625,12 +627,15 @@ typedef struct _LOCK_STATE { /* Timer */ +_IRQL_requires_(DISPATCH_LEVEL) +_IRQL_requires_same_ +_Function_class_(NDIS_TIMER_FUNCTION) typedef VOID (NTAPI NDIS_TIMER_FUNCTION)( - IN PVOID SystemSpecific1, - IN PVOID FunctionContext, - IN PVOID SystemSpecific2, - IN PVOID SystemSpecific3); + _In_ PVOID SystemSpecific1, + _In_ PVOID FunctionContext, + _In_ PVOID SystemSpecific2, + _In_ PVOID SystemSpecific3); typedef NDIS_TIMER_FUNCTION *PNDIS_TIMER_FUNCTION; typedef struct _NDIS_TIMER { @@ -926,7 +931,7 @@ typedef enum _NDIS_PARAMETER_TYPE { typedef struct _BINARY_DATA { USHORT Length; - PVOID Buffer; + _Field_size_bytes_(Length) PVOID Buffer; } BINARY_DATA; typedef struct _NDIS_CONFIGURATION_PARAMETER { @@ -965,17 +970,17 @@ typedef struct _NDIS_WAN_LINE_UP { typedef NTSTATUS (NTAPI *TDI_REGISTER_CALLBACK)( - IN PUNICODE_STRING DeviceName, - OUT HANDLE *TdiHandle); + _In_ PUNICODE_STRING DeviceName, + _Out_ HANDLE *TdiHandle); typedef NTSTATUS (NTAPI *TDI_PNP_HANDLER)( - IN PUNICODE_STRING UpperComponent, - IN PUNICODE_STRING LowerComponent, - IN PUNICODE_STRING BindList, - IN PVOID ReconfigBuffer, - IN UINT ReconfigBufferSize, - IN UINT Operation); + _In_ PUNICODE_STRING UpperComponent, + _In_ PUNICODE_STRING LowerComponent, + _In_ PUNICODE_STRING BindList, + _In_ PVOID ReconfigBuffer, + _In_ UINT ReconfigBufferSize, + _In_ UINT Operation); typedef struct _OID_LIST OID_LIST, *POID_LIST; @@ -1517,40 +1522,45 @@ typedef NDIS_STATUS /* Prototypes for NDIS 5.0 protocol characteristics */ +_IRQL_requires_(PASSIVE_LEVEL) typedef VOID (NTAPI *CO_SEND_COMPLETE_HANDLER)( - IN NDIS_STATUS Status, - IN NDIS_HANDLE ProtocolVcContext, - IN PNDIS_PACKET Packet); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE ProtocolVcContext, + _In_ PNDIS_PACKET Packet); +_IRQL_requires_max_(DISPATCH_LEVEL) typedef VOID (NTAPI *CO_STATUS_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN NDIS_HANDLE ProtocolVcContext OPTIONAL, - IN NDIS_STATUS GeneralStatus, - IN PVOID StatusBuffer, - IN UINT StatusBufferSize); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_opt_ NDIS_HANDLE ProtocolVcContext, + _In_ NDIS_STATUS GeneralStatus, + _In_ PVOID StatusBuffer, + _In_ UINT StatusBufferSize); +_IRQL_requires_max_(DISPATCH_LEVEL) typedef UINT (NTAPI *CO_RECEIVE_PACKET_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN NDIS_HANDLE ProtocolVcContext, - IN PNDIS_PACKET Packet); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ NDIS_HANDLE ProtocolVcContext, + _In_ PNDIS_PACKET Packet); +_IRQL_requires_max_(DISPATCH_LEVEL) typedef NDIS_STATUS (NTAPI *CO_REQUEST_HANDLER)( - IN NDIS_HANDLE ProtocolAfContext, - IN NDIS_HANDLE ProtocolVcContext OPTIONAL, - IN NDIS_HANDLE ProtocolPartyContext OPTIONAL, - IN OUT PNDIS_REQUEST NdisRequest); + _In_ NDIS_HANDLE ProtocolAfContext, + _In_opt_ NDIS_HANDLE ProtocolVcContext, + _In_opt_ NDIS_HANDLE ProtocolPartyContext, + _Inout_ PNDIS_REQUEST NdisRequest); +_IRQL_requires_max_(DISPATCH_LEVEL) typedef VOID (NTAPI *CO_REQUEST_COMPLETE_HANDLER)( - IN NDIS_STATUS Status, - IN NDIS_HANDLE ProtocolAfContext OPTIONAL, - IN NDIS_HANDLE ProtocolVcContext OPTIONAL, - IN NDIS_HANDLE ProtocolPartyContext OPTIONAL, - IN PNDIS_REQUEST NdisRequest); + _In_ NDIS_STATUS Status, + _In_opt_ NDIS_HANDLE ProtocolAfContext, + _In_opt_ NDIS_HANDLE ProtocolVcContext, + _In_opt_ NDIS_HANDLE ProtocolPartyContext, + _In_ PNDIS_REQUEST NdisRequest); typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS { UCHAR MajorVersion; @@ -1694,55 +1704,55 @@ typedef struct _NDIS_CLIENT_CHARACTERISTICS { typedef VOID (NTAPI *OPEN_ADAPTER_COMPLETE_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN NDIS_STATUS Status, - IN NDIS_STATUS OpenErrorStatus); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ NDIS_STATUS Status, + _In_ NDIS_STATUS OpenErrorStatus); typedef VOID (NTAPI *CLOSE_ADAPTER_COMPLETE_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN NDIS_STATUS Status); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ NDIS_STATUS Status); typedef VOID (NTAPI *RESET_COMPLETE_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN NDIS_STATUS Status); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ NDIS_STATUS Status); typedef VOID (NTAPI *REQUEST_COMPLETE_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN PNDIS_REQUEST NdisRequest, - IN NDIS_STATUS Status); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ PNDIS_REQUEST NdisRequest, + _In_ NDIS_STATUS Status); typedef VOID (NTAPI *STATUS_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN NDIS_STATUS GeneralStatus, - IN PVOID StatusBuffer, - IN UINT StatusBufferSize); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ NDIS_STATUS GeneralStatus, + _In_ PVOID StatusBuffer, + _In_ UINT StatusBufferSize); typedef VOID (NTAPI *STATUS_COMPLETE_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext); + _In_ NDIS_HANDLE ProtocolBindingContext); typedef VOID (NTAPI *SEND_COMPLETE_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN PNDIS_PACKET Packet, - IN NDIS_STATUS Status); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ PNDIS_PACKET Packet, + _In_ NDIS_STATUS Status); typedef VOID (NTAPI *WAN_SEND_COMPLETE_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN PNDIS_WAN_PACKET Packet, - IN NDIS_STATUS Status); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ PNDIS_WAN_PACKET Packet, + _In_ NDIS_STATUS Status); typedef VOID (NTAPI *TRANSFER_DATA_COMPLETE_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN PNDIS_PACKET Packet, - IN NDIS_STATUS Status, - IN UINT BytesTransferred); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ PNDIS_PACKET Packet, + _In_ NDIS_STATUS Status, + _In_ UINT BytesTransferred); typedef VOID (NTAPI *WAN_TRANSFER_DATA_COMPLETE_HANDLER)( @@ -1750,23 +1760,23 @@ typedef VOID typedef NDIS_STATUS (NTAPI *RECEIVE_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext, - IN NDIS_HANDLE MacReceiveContext, - IN PVOID HeaderBuffer, - IN UINT HeaderBufferSize, - IN PVOID LookAheadBuffer, - IN UINT LookaheadBufferSize, - IN UINT PacketSize); + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ NDIS_HANDLE MacReceiveContext, + _In_ PVOID HeaderBuffer, + _In_ UINT HeaderBufferSize, + _In_ PVOID LookAheadBuffer, + _In_ UINT LookaheadBufferSize, + _In_ UINT PacketSize); typedef NDIS_STATUS (NTAPI *WAN_RECEIVE_HANDLER)( - IN NDIS_HANDLE NdisLinkHandle, - IN PUCHAR Packet, - IN ULONG PacketSize); + _In_ NDIS_HANDLE NdisLinkHandle, + _In_ PUCHAR Packet, + _In_ ULONG PacketSize); typedef VOID (NTAPI *RECEIVE_COMPLETE_HANDLER)( - IN NDIS_HANDLE ProtocolBindingContext); + _In_ NDIS_HANDLE ProtocolBindingContext); /* Protocol characteristics for NDIS 3.0 protocols */ @@ -1906,115 +1916,114 @@ typedef NDIS_PROTOCOL_CHARACTERISTICS *PNDIS_PROTOCOL_CHARACTERISTICS; typedef BOOLEAN (NTAPI *W_CHECK_FOR_HANG_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext); + _In_ NDIS_HANDLE MiniportAdapterContext); typedef VOID (NTAPI *W_DISABLE_INTERRUPT_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext); + _In_ NDIS_HANDLE MiniportAdapterContext); typedef VOID (NTAPI *W_ENABLE_INTERRUPT_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext); + _In_ NDIS_HANDLE MiniportAdapterContext); typedef VOID (NTAPI *W_HALT_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext); + _In_ NDIS_HANDLE MiniportAdapterContext); typedef VOID (NTAPI *W_HANDLE_INTERRUPT_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext); + _In_ NDIS_HANDLE MiniportAdapterContext); typedef NDIS_STATUS (NTAPI *W_INITIALIZE_HANDLER)( - OUT PNDIS_STATUS OpenErrorStatus, - OUT PUINT SelectedMediumIndex, - IN PNDIS_MEDIUM MediumArray, - IN UINT MediumArraySize, - IN NDIS_HANDLE MiniportAdapterContext, - IN NDIS_HANDLE WrapperConfigurationContext); + _Out_ PNDIS_STATUS OpenErrorStatus, + _Out_ PUINT SelectedMediumIndex, + _In_ PNDIS_MEDIUM MediumArray, + _In_ UINT MediumArraySize, + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ NDIS_HANDLE WrapperConfigurationContext); typedef VOID (NTAPI *W_ISR_HANDLER)( - OUT PBOOLEAN InterruptRecognized, - OUT PBOOLEAN QueueMiniportHandleInterrupt, - IN NDIS_HANDLE MiniportAdapterContext); + _Out_ PBOOLEAN InterruptRecognized, + _Out_ PBOOLEAN QueueMiniportHandleInterrupt, + _In_ NDIS_HANDLE MiniportAdapterContext); typedef NDIS_STATUS (NTAPI *W_QUERY_INFORMATION_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN NDIS_OID Oid, - IN PVOID InformationBuffer, - IN ULONG InformationBufferLength, - OUT PULONG BytesWritten, - OUT PULONG BytesNeeded); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ NDIS_OID Oid, + _In_ PVOID InformationBuffer, + _In_ ULONG InformationBufferLength, + _Out_ PULONG BytesWritten, + _Out_ PULONG BytesNeeded); typedef NDIS_STATUS (NTAPI *W_RECONFIGURE_HANDLER)( - OUT PNDIS_STATUS OpenErrorStatus, - IN NDIS_HANDLE MiniportAdapterContext, - IN NDIS_HANDLE WrapperConfigurationContext); + _Out_ PNDIS_STATUS OpenErrorStatus, + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ NDIS_HANDLE WrapperConfigurationContext); typedef NDIS_STATUS (NTAPI *W_RESET_HANDLER)( - OUT PBOOLEAN AddressingReset, - IN NDIS_HANDLE MiniportAdapterContext); + _Out_ PBOOLEAN AddressingReset, + _In_ NDIS_HANDLE MiniportAdapterContext); typedef NDIS_STATUS (NTAPI *W_SEND_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN PNDIS_PACKET Packet, - IN UINT Flags); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ PNDIS_PACKET Packet, + _In_ UINT Flags); typedef NDIS_STATUS (NTAPI *WM_SEND_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN NDIS_HANDLE NdisLinkHandle, - IN PNDIS_WAN_PACKET Packet); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ NDIS_HANDLE NdisLinkHandle, + _In_ PNDIS_WAN_PACKET Packet); typedef NDIS_STATUS (NTAPI *W_SET_INFORMATION_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN NDIS_OID Oid, - IN PVOID InformationBuffer, - IN ULONG InformationBufferLength, - OUT PULONG BytesRead, - OUT PULONG BytesNeeded); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ NDIS_OID Oid, + _In_ PVOID InformationBuffer, + _In_ ULONG InformationBufferLength, + _Out_ PULONG BytesRead, + _Out_ PULONG BytesNeeded); typedef NDIS_STATUS (NTAPI *W_TRANSFER_DATA_HANDLER)( - OUT PNDIS_PACKET Packet, - OUT PUINT BytesTransferred, - IN NDIS_HANDLE MiniportAdapterContext, - IN NDIS_HANDLE MiniportReceiveContext, - IN UINT ByteOffset, - IN UINT BytesToTransfer); + _Out_ PNDIS_PACKET Packet, + _Out_ PUINT BytesTransferred, + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ NDIS_HANDLE MiniportReceiveContext, + _In_ UINT ByteOffset, + _In_ UINT BytesToTransfer); typedef NDIS_STATUS -(NTAPI *WM_TRANSFER_DATA_HANDLER)( - VOID); +(NTAPI *WM_TRANSFER_DATA_HANDLER)(VOID); typedef VOID (NTAPI *ADAPTER_SHUTDOWN_HANDLER)( - IN PVOID ShutdownContext); + _In_ PVOID ShutdownContext); typedef VOID (NTAPI *W_RETURN_PACKET_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN PNDIS_PACKET Packet); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ PNDIS_PACKET Packet); typedef VOID (NTAPI *W_SEND_PACKETS_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN PPNDIS_PACKET PacketArray, - IN UINT NumberOfPackets); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ PPNDIS_PACKET PacketArray, + _In_ UINT NumberOfPackets); typedef VOID (NTAPI *W_ALLOCATE_COMPLETE_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN PVOID VirtualAddress, - IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress, - IN ULONG Length, - IN PVOID Context); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ PVOID VirtualAddress, + _In_ PNDIS_PHYSICAL_ADDRESS PhysicalAddress, + _In_ ULONG Length, + _In_ PVOID Context); /* NDIS structures available only to miniport drivers */ @@ -2064,40 +2073,48 @@ typedef struct _NDIS40_MINIPORT_CHARACTERISTICS { /* Extensions for NDIS 5.0 miniports */ +_IRQL_requires_max_(DISPATCH_LEVEL) +_Function_class_(MINIPORT_CO_CREATE_VC) typedef NDIS_STATUS (NTAPI MINIPORT_CO_CREATE_VC)( - IN NDIS_HANDLE MiniportAdapterContext, - IN NDIS_HANDLE NdisVcHandle, - OUT PNDIS_HANDLE MiniportVcContext); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ NDIS_HANDLE NdisVcHandle, + _Out_ PNDIS_HANDLE MiniportVcContext); typedef MINIPORT_CO_CREATE_VC *W_CO_CREATE_VC_HANDLER; +_IRQL_requires_max_(DISPATCH_LEVEL) +_Function_class_(MINIPORT_CO_DELETE_VC) typedef NDIS_STATUS (NTAPI MINIPORT_CO_DELETE_VC)( - IN NDIS_HANDLE MiniportVcContext); + _In_ NDIS_HANDLE MiniportVcContext); typedef MINIPORT_CO_DELETE_VC *W_CO_DELETE_VC_HANDLER; +_IRQL_requires_max_(DISPATCH_LEVEL) +_Function_class_(MINIPORT_CO_ACTIVATE_VC) typedef NDIS_STATUS (NTAPI MINIPORT_CO_ACTIVATE_VC)( - IN NDIS_HANDLE MiniportVcContext, - IN OUT PCO_CALL_PARAMETERS CallParameters); + _In_ NDIS_HANDLE MiniportVcContext, + _Inout_ PCO_CALL_PARAMETERS CallParameters); typedef MINIPORT_CO_ACTIVATE_VC *W_CO_ACTIVATE_VC_HANDLER; +_IRQL_requires_max_(DISPATCH_LEVEL) +_Function_class_(MINIPORT_CO_DEACTIVATE_VC) typedef NDIS_STATUS (NTAPI MINIPORT_CO_DEACTIVATE_VC)( - IN NDIS_HANDLE MiniportVcContext); + _In_ NDIS_HANDLE MiniportVcContext); typedef MINIPORT_CO_DEACTIVATE_VC *W_CO_DEACTIVATE_VC_HANDLER; typedef VOID (NTAPI *W_CO_SEND_PACKETS_HANDLER)( - IN NDIS_HANDLE MiniportVcContext, - IN PPNDIS_PACKET PacketArray, - IN UINT NumberOfPackets); + _In_ NDIS_HANDLE MiniportVcContext, + _In_ PPNDIS_PACKET PacketArray, + _In_ UINT NumberOfPackets); typedef NDIS_STATUS (NTAPI *W_CO_REQUEST_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN NDIS_HANDLE MiniportVcContext OPTIONAL, - IN OUT PNDIS_REQUEST NdisRequest); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_opt_ NDIS_HANDLE MiniportVcContext, + _Inout_ PNDIS_REQUEST NdisRequest); #ifdef __cplusplus @@ -2131,19 +2148,19 @@ typedef struct _NDIS50_MINIPORT_CHARACTERISTICS { typedef VOID (NTAPI *W_CANCEL_SEND_PACKETS_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN PVOID CancelId); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ PVOID CancelId); typedef VOID (NTAPI *W_PNP_EVENT_NOTIFY_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN NDIS_DEVICE_PNP_EVENT PnPEvent, - IN PVOID InformationBuffer, - IN ULONG InformationBufferLength); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ NDIS_DEVICE_PNP_EVENT PnPEvent, + _In_ PVOID InformationBuffer, + _In_ ULONG InformationBufferLength); typedef VOID (NTAPI *W_MINIPORT_SHUTDOWN_HANDLER)( - IN PVOID ShutdownContext); + _In_ PVOID ShutdownContext); #ifdef __cplusplus @@ -2284,18 +2301,18 @@ typedef struct _NDIS_BIND_PATHS { typedef VOID (NTAPI *ETH_RCV_COMPLETE_HANDLER)( - IN PETH_FILTER Filter); + _In_ PETH_FILTER Filter); typedef VOID (NTAPI *ETH_RCV_INDICATE_HANDLER)( - IN PETH_FILTER Filter, - IN NDIS_HANDLE MacReceiveContext, - IN PCHAR Address, - IN PVOID HeaderBuffer, - IN UINT HeaderBufferSize, - IN PVOID LookaheadBuffer, - IN UINT LookaheadBufferSize, - IN UINT PacketSize); + _In_ PETH_FILTER Filter, + _In_ NDIS_HANDLE MacReceiveContext, + _In_ PCHAR Address, + _In_ PVOID HeaderBuffer, + _In_ UINT HeaderBufferSize, + _In_ PVOID LookaheadBuffer, + _In_ UINT LookaheadBufferSize, + _In_ UINT PacketSize); typedef VOID (NTAPI *FDDI_RCV_COMPLETE_HANDLER)( @@ -2315,36 +2332,36 @@ typedef VOID typedef VOID (NTAPI *FILTER_PACKET_INDICATION_HANDLER)( - IN NDIS_HANDLE Miniport, - IN PPNDIS_PACKET PacketArray, - IN UINT NumberOfPackets); + _In_ NDIS_HANDLE Miniport, + _In_ PPNDIS_PACKET PacketArray, + _In_ UINT NumberOfPackets); typedef VOID (NTAPI *TR_RCV_COMPLETE_HANDLER)( - IN PTR_FILTER Filter); + _In_ PTR_FILTER Filter); typedef VOID (NTAPI *TR_RCV_INDICATE_HANDLER)( - IN PTR_FILTER Filter, - IN NDIS_HANDLE MacReceiveContext, - IN PVOID HeaderBuffer, - IN UINT HeaderBufferSize, - IN PVOID LookaheadBuffer, - IN UINT LookaheadBufferSize, - IN UINT PacketSize); + _In_ PTR_FILTER Filter, + _In_ NDIS_HANDLE MacReceiveContext, + _In_ PVOID HeaderBuffer, + _In_ UINT HeaderBufferSize, + _In_ PVOID LookaheadBuffer, + _In_ UINT LookaheadBufferSize, + _In_ UINT PacketSize); typedef VOID (NTAPI *WAN_RCV_COMPLETE_HANDLER)( - IN NDIS_HANDLE MiniportAdapterHandle, - IN NDIS_HANDLE NdisLinkContext); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ NDIS_HANDLE NdisLinkContext); typedef VOID (NTAPI *WAN_RCV_HANDLER)( - OUT PNDIS_STATUS Status, - IN NDIS_HANDLE MiniportAdapterHandle, - IN NDIS_HANDLE NdisLinkContext, - IN PUCHAR Packet, - IN ULONG PacketSize); + _Out_ PNDIS_STATUS Status, + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ NDIS_HANDLE NdisLinkContext, + _In_ PUCHAR Packet, + _In_ ULONG PacketSize); typedef VOID (FASTCALL *NDIS_M_DEQUEUE_WORK_ITEM)( @@ -2366,51 +2383,51 @@ typedef NDIS_STATUS typedef VOID (NTAPI *NDIS_M_REQ_COMPLETE_HANDLER)( - IN NDIS_HANDLE MiniportAdapterHandle, - IN NDIS_STATUS Status); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ NDIS_STATUS Status); typedef VOID (NTAPI *NDIS_M_RESET_COMPLETE_HANDLER)( - IN NDIS_HANDLE MiniportAdapterHandle, - IN NDIS_STATUS Status, - IN BOOLEAN AddressingReset); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ NDIS_STATUS Status, + _In_ BOOLEAN AddressingReset); typedef VOID (NTAPI *NDIS_M_SEND_COMPLETE_HANDLER)( - IN NDIS_HANDLE MiniportAdapterHandle, - IN PNDIS_PACKET Packet, - IN NDIS_STATUS Status); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ PNDIS_PACKET Packet, + _In_ NDIS_STATUS Status); typedef VOID (NTAPI *NDIS_M_SEND_RESOURCES_HANDLER)( - IN NDIS_HANDLE MiniportAdapterHandle); + _In_ NDIS_HANDLE MiniportAdapterHandle); typedef BOOLEAN (FASTCALL *NDIS_M_START_SENDS)( - IN PNDIS_MINIPORT_BLOCK Miniport); + _In_ PNDIS_MINIPORT_BLOCK Miniport); typedef VOID (NTAPI *NDIS_M_STATUS_HANDLER)( - IN NDIS_HANDLE MiniportHandle, - IN NDIS_STATUS GeneralStatus, - IN PVOID StatusBuffer, - IN UINT StatusBufferSize); + _In_ NDIS_HANDLE MiniportHandle, + _In_ NDIS_STATUS GeneralStatus, + _In_ PVOID StatusBuffer, + _In_ UINT StatusBufferSize); typedef VOID (NTAPI *NDIS_M_STS_COMPLETE_HANDLER)( - IN NDIS_HANDLE MiniportAdapterHandle); + _In_ NDIS_HANDLE MiniportAdapterHandle); typedef VOID (NTAPI *NDIS_M_TD_COMPLETE_HANDLER)( - IN NDIS_HANDLE MiniportAdapterHandle, - IN PNDIS_PACKET Packet, - IN NDIS_STATUS Status, - IN UINT BytesTransferred); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ PNDIS_PACKET Packet, + _In_ NDIS_STATUS Status, + _In_ UINT BytesTransferred); typedef VOID (NTAPI *NDIS_WM_SEND_COMPLETE_HANDLER)( - IN NDIS_HANDLE MiniportAdapterHandle, - IN PVOID Packet, - IN NDIS_STATUS Status); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ PVOID Packet, + _In_ NDIS_STATUS Status); #if ARCNET @@ -2647,38 +2664,38 @@ struct _NDIS_MINIPORT_BLOCK { typedef NDIS_STATUS (NTAPI *WAN_SEND_HANDLER)( - IN NDIS_HANDLE MacBindingHandle, - IN NDIS_HANDLE LinkHandle, - IN PVOID Packet); + _In_ NDIS_HANDLE MacBindingHandle, + _In_ NDIS_HANDLE LinkHandle, + _In_ PVOID Packet); typedef VOID (NTAPI *SEND_PACKETS_HANDLER)( - IN NDIS_HANDLE MiniportAdapterContext, - IN PPNDIS_PACKET PacketArray, - IN UINT NumberOfPackets); + _In_ NDIS_HANDLE MiniportAdapterContext, + _In_ PPNDIS_PACKET PacketArray, + _In_ UINT NumberOfPackets); typedef NDIS_STATUS (NTAPI *SEND_HANDLER)( - IN NDIS_HANDLE NdisBindingHandle, - IN PNDIS_PACKET Packet); + _In_ NDIS_HANDLE NdisBindingHandle, + _In_ PNDIS_PACKET Packet); typedef NDIS_STATUS (NTAPI *TRANSFER_DATA_HANDLER)( - IN NDIS_HANDLE NdisBindingHandle, - IN NDIS_HANDLE MacReceiveContext, - IN UINT ByteOffset, - IN UINT BytesToTransfer, - OUT PNDIS_PACKET Packet, - OUT PUINT BytesTransferred); + _In_ NDIS_HANDLE NdisBindingHandle, + _In_ NDIS_HANDLE MacReceiveContext, + _In_ UINT ByteOffset, + _In_ UINT BytesToTransfer, + _Out_ PNDIS_PACKET Packet, + _Out_ PUINT BytesTransferred); typedef NDIS_STATUS (NTAPI *RESET_HANDLER)( - IN NDIS_HANDLE NdisBindingHandle); + _In_ NDIS_HANDLE NdisBindingHandle); typedef NDIS_STATUS (NTAPI *REQUEST_HANDLER)( - IN NDIS_HANDLE NdisBindingHandle, - IN PNDIS_REQUEST NdisRequest); + _In_ NDIS_HANDLE NdisBindingHandle, + _In_ PNDIS_REQUEST NdisRequest); #endif /* NDIS_LEGACY_DRIVER */ @@ -2758,49 +2775,55 @@ struct _NDIS_OPEN_BLOCK #define NDIS_M_MAX_LOOKAHEAD 526 +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisInitializeTimer( - PNDIS_TIMER Timer, - PNDIS_TIMER_FUNCTION TimerFunction, - PVOID FunctionContext); + _Inout_ PNDIS_TIMER Timer, + _In_ PNDIS_TIMER_FUNCTION TimerFunction, + _In_opt_ _Points_to_data_ PVOID FunctionContext); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCancelTimer( - PNDIS_TIMER Timer, - PBOOLEAN TimerCancelled); + _In_ PNDIS_TIMER Timer, + _Out_ _At_(*TimerCancelled, _Must_inspect_result_) PBOOLEAN TimerCancelled); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisSetTimer( - PNDIS_TIMER Timer, - UINT MillisecondsToDelay); + _In_ PNDIS_TIMER Timer, + _In_ UINT MillisecondsToDelay); NDISAPI VOID NTAPI NdisSetPeriodicTimer( - PNDIS_TIMER NdisTimer, - UINT MillisecondsPeriod); + _In_ PNDIS_TIMER NdisTimer, + _In_ UINT MillisecondsPeriod); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisSetTimerEx( - PNDIS_TIMER NdisTimer, - UINT MillisecondsToDelay, - PVOID FunctionContext); + _In_ PNDIS_TIMER NdisTimer, + _In_ UINT MillisecondsToDelay, + _In_ PVOID FunctionContext); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI PVOID NTAPI NdisGetRoutineAddress( - PNDIS_STRING NdisRoutineName); + _In_ PNDIS_STRING NdisRoutineName); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI UINT NTAPI @@ -2808,29 +2831,32 @@ NdisGetVersion(VOID); #if NDIS_LEGACY_DRIVER +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisAllocateBuffer( - OUT PNDIS_STATUS Status, - OUT PNDIS_BUFFER *Buffer, - IN NDIS_HANDLE PoolHandle OPTIONAL, - IN PVOID VirtualAddress, - IN UINT Length); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_BUFFER *Buffer, + _In_opt_ NDIS_HANDLE PoolHandle, + _In_reads_bytes_(Length) PVOID VirtualAddress, + _In_ UINT Length); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisAllocateBufferPool( - OUT PNDIS_STATUS Status, - OUT PNDIS_HANDLE PoolHandle, - IN UINT NumberOfDescriptors); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_HANDLE PoolHandle, + _In_ UINT NumberOfDescriptors); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisFreeBufferPool( - IN NDIS_HANDLE PoolHandle); + _In_ NDIS_HANDLE PoolHandle); /* NDISAPI @@ -2841,104 +2867,118 @@ NdisFreeBuffer( */ #define NdisFreeBuffer IoFreeMdl +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisAllocatePacketPool( - OUT PNDIS_STATUS Status, - OUT PNDIS_HANDLE PoolHandle, - IN UINT NumberOfDescriptors, - IN UINT ProtocolReservedLength); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_HANDLE PoolHandle, + _In_ UINT NumberOfDescriptors, + _In_ UINT ProtocolReservedLength); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisAllocatePacketPoolEx( - OUT PNDIS_STATUS Status, - OUT PNDIS_HANDLE PoolHandle, - IN UINT NumberOfDescriptors, - IN UINT NumberOfOverflowDescriptors, - IN UINT ProtocolReservedLength); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_HANDLE PoolHandle, + _In_ UINT NumberOfDescriptors, + _In_ UINT NumberOfOverflowDescriptors, + _In_ UINT ProtocolReservedLength); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisSetPacketPoolProtocolId( - IN NDIS_HANDLE PacketPoolHandle, - IN UINT ProtocolId); + _In_ NDIS_HANDLE PacketPoolHandle, + _In_ UINT ProtocolId); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI UINT NTAPI NdisPacketPoolUsage( - IN NDIS_HANDLE PoolHandle); + _In_ NDIS_HANDLE PoolHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI UINT NTAPI NdisPacketSize( - IN UINT ProtocolReservedSize); + _In_ UINT ProtocolReservedSize); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_HANDLE NTAPI NdisGetPoolFromPacket( - IN PNDIS_PACKET Packet); + _In_ PNDIS_PACKET Packet); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI PNDIS_PACKET_STACK NTAPI NdisIMGetCurrentPacketStack( - IN PNDIS_PACKET Packet, - OUT BOOLEAN * StacksRemaining); + _In_ PNDIS_PACKET Packet, + _Out_ BOOLEAN *StacksRemaining); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisFreePacketPool( - IN NDIS_HANDLE PoolHandle); + _In_ NDIS_HANDLE PoolHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisFreePacket( - IN PNDIS_PACKET Packet); + _In_ PNDIS_PACKET Packet); +_IRQL_requires_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisDprFreePacket( - IN PNDIS_PACKET Packet); + _In_ PNDIS_PACKET Packet); +_IRQL_requires_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisDprFreePacketNonInterlocked( - IN PNDIS_PACKET Packet); + _In_ PNDIS_PACKET Packet); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisAllocatePacket( - OUT PNDIS_STATUS Status, - OUT PNDIS_PACKET *Packet, - IN NDIS_HANDLE PoolHandle); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_PACKET *Packet, + _In_ NDIS_HANDLE PoolHandle); +_IRQL_requires_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisDprAllocatePacket( - OUT PNDIS_STATUS Status, - OUT PNDIS_PACKET *Packet, - IN NDIS_HANDLE PoolHandle); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_PACKET *Packet, + _In_ NDIS_HANDLE PoolHandle); +_IRQL_requires_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisDprAllocatePacketNonInterlocked( - OUT PNDIS_STATUS Status, - OUT PNDIS_PACKET *Packet, - IN NDIS_HANDLE PoolHandle); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_PACKET *Packet, + _In_ NDIS_HANDLE PoolHandle); /* * VOID @@ -3091,16 +3131,17 @@ NdisUnchainBufferAtBack( IN OUT PNDIS_PACKET Packet, OUT PNDIS_BUFFER *Buffer); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCopyFromPacketToPacket( - IN PNDIS_PACKET Destination, - IN UINT DestinationOffset, - IN UINT BytesToCopy, - IN PNDIS_PACKET Source, - IN UINT SourceOffset, - OUT PUINT BytesCopied); + _In_ PNDIS_PACKET Destination, + _In_ UINT DestinationOffset, + _In_ UINT BytesToCopy, + _In_ PNDIS_PACKET Source, + _In_ UINT SourceOffset, + _Out_ PUINT BytesCopied); NDISAPI VOID @@ -3114,67 +3155,77 @@ NdisCopyFromPacketToPacketSafe( OUT PUINT BytesCopied, IN MM_PAGE_PRIORITY Priority); +_IRQL_requires_max_(DISPATCH_LEVEL) +__drv_preferredFunction("NdisAllocateMemoryWithTag", "Obsolete") NDISAPI NDIS_STATUS NTAPI NdisAllocateMemory( - OUT PVOID *VirtualAddress, - IN UINT Length, - IN UINT MemoryFlags, - IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress); + _At_(*VirtualAddress, __drv_allocatesMem(Mem)) _Outptr_result_bytebuffer_(Length) + PVOID *VirtualAddress, + _In_ UINT Length, + _In_ UINT MemoryFlags, + _In_ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress); #define NdisInitializeWorkItem(_WI_, _R_, _C_) { \ (_WI_)->Context = _C_; \ (_WI_)->Routine = _R_; \ } +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisScheduleWorkItem( - IN PNDIS_WORK_ITEM WorkItem); + _In_ __drv_aliasesMem PNDIS_WORK_ITEM WorkItem); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisSetPacketStatus( - IN PNDIS_PACKET Packet, - IN NDIS_STATUS Status, - IN NDIS_HANDLE Handle, - IN ULONG Code); + _In_ PNDIS_PACKET Packet, + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE Handle, + _In_ ULONG Code); #endif /* NDIS_LEGACY_DRIVER */ +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisOpenFile( - OUT PNDIS_STATUS Status, - OUT PNDIS_HANDLE FileHandle, - OUT PUINT FileLength, - IN PNDIS_STRING FileName, - IN NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_HANDLE FileHandle, + _Out_ PUINT FileLength, + _In_ PNDIS_STRING FileName, + _In_ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisCloseFile( - IN NDIS_HANDLE FileHandle); + _In_ NDIS_HANDLE FileHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMapFile( - OUT PNDIS_STATUS Status, - OUT PVOID *MappedBuffer, - IN NDIS_HANDLE FileHandle); + _Out_ PNDIS_STATUS Status, + _Out_ PVOID *MappedBuffer, + _In_ NDIS_HANDLE FileHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisUnmapFile( - IN NDIS_HANDLE FileHandle); + _In_ NDIS_HANDLE FileHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI ULONG NTAPI @@ -3183,16 +3234,17 @@ NdisGetSharedDataAlignment(VOID); #define NdisFlushBuffer(Buffer,WriteToDevice) \ KeFlushIoBuffers((Buffer),!(WriteToDevice), TRUE) +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCopyBuffer( - OUT PNDIS_STATUS Status, - OUT PNDIS_BUFFER *Buffer, - IN NDIS_HANDLE PoolHandle, - IN PVOID MemoryDescriptor, - IN UINT Offset, - IN UINT Length); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_BUFFER *Buffer, + _In_ NDIS_HANDLE PoolHandle, + _In_ PVOID MemoryDescriptor, + _In_ UINT Offset, + _In_ UINT Length); /* * VOID @@ -3663,13 +3715,17 @@ NdisDestroyLookaheadBufferFromSharedMemory( #define NdisMUpdateSharedMemory(_H, _L, _V, _P) \ NdisUpdateSharedMemory(_H, _L, _V, _P) +_When_(MemoryFlags==0, _IRQL_requires_max_(DISPATCH_LEVEL)) +_When_(MemoryFlags==NDIS_MEMORY_CONTIGUOUS, _IRQL_requires_(PASSIVE_LEVEL)) +_When_(MemoryFlags==NDIS_MEMORY_NONCACHED, _IRQL_requires_max_(APC_LEVEL)) NDISAPI VOID NTAPI NdisFreeMemory( - IN PVOID VirtualAddress, - IN UINT Length, - IN UINT MemoryFlags); + _In_reads_bytes_(Length) __drv_freesMem(Mem) PVOID VirtualAddress, + _In_ UINT Length, + _In_ _Pre_satisfies_(MemoryFlags == 0 || MemoryFlags == NDIS_MEMORY_NONCACHED || MemoryFlags == NDIS_MEMORY_CONTIGUOUS) + UINT MemoryFlags); NDISAPI VOID @@ -3696,24 +3752,28 @@ NdisImmediateWriteSharedMemory( IN PUCHAR Buffer, IN ULONG Length); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisMAllocateSharedMemory( - IN NDIS_HANDLE MiniportAdapterHandle, - IN ULONG Length, - IN BOOLEAN Cached, - OUT PVOID *VirtualAddress, - OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ ULONG Length, + _In_ BOOLEAN Cached, + _Outptr_result_bytebuffer_(Length) _At_(*VirtualAddress, _Must_inspect_result_) + PVOID *VirtualAddress, + _Out_ _At_(*PhysicalAddress, _Must_inspect_result_) + PNDIS_PHYSICAL_ADDRESS PhysicalAddress); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMAllocateSharedMemoryAsync( - IN NDIS_HANDLE MiniportAdapterHandle, - IN ULONG Length, - IN BOOLEAN Cached, - IN PVOID Context); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ ULONG Length, + _In_ BOOLEAN Cached, + _In_ PVOID Context); #if defined(NDIS50) @@ -3848,23 +3908,28 @@ typedef VOID /* Configuration routines */ #if NDIS_LEGACY_DRIVER +_IRQL_requires_(PASSIVE_LEVEL) +_Success_(*Status >= 0) NDISAPI VOID NTAPI NdisOpenConfiguration( - OUT PNDIS_STATUS Status, - OUT PNDIS_HANDLE ConfigurationHandle, - IN NDIS_HANDLE WrapperConfigurationContext); + _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_HANDLE ConfigurationHandle, + _In_ NDIS_HANDLE WrapperConfigurationContext); #endif +_IRQL_requires_(PASSIVE_LEVEL) +_Success_(*Status >= 0) NDISAPI VOID NTAPI NdisReadNetworkAddress( - OUT PNDIS_STATUS Status, - OUT PVOID *NetworkAddress, - OUT PUINT NetworkAddressLength, - IN NDIS_HANDLE ConfigurationHandle); + _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, + _Outptr_result_bytebuffer_to_(*NetworkAddressLength, *NetworkAddressLength) + PVOID *NetworkAddress, + _Out_ PUINT NetworkAddressLength, + _In_ NDIS_HANDLE ConfigurationHandle); NDISAPI VOID @@ -3887,43 +3952,47 @@ NdisReadEisaSlotInformationEx( #if NDIS_LEGACY_MINIPORT +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI ULONG NTAPI NdisReadPciSlotInformation( - IN NDIS_HANDLE NdisAdapterHandle, - IN ULONG SlotNumber, - IN ULONG Offset, - OUT PVOID Buffer, - IN ULONG Length); + _In_ NDIS_HANDLE NdisAdapterHandle, + _In_ ULONG SlotNumber, + _In_ ULONG Offset, + _Out_writes_bytes_(Length) PVOID Buffer, + _In_ ULONG Length); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI ULONG NTAPI NdisWritePciSlotInformation( - IN NDIS_HANDLE NdisAdapterHandle, - IN ULONG SlotNumber, - IN ULONG Offset, - IN PVOID Buffer, - IN ULONG Length); + _In_ NDIS_HANDLE NdisAdapterHandle, + _In_ ULONG SlotNumber, + _In_ ULONG Offset, + _In_reads_bytes_(Length) PVOID Buffer, + _In_ ULONG Length); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI ULONG NTAPI NdisReadPcmciaAttributeMemory( - IN NDIS_HANDLE NdisAdapterHandle, - IN ULONG Offset, - OUT PVOID Buffer, - IN ULONG Length); + _In_ NDIS_HANDLE NdisAdapterHandle, + _In_ ULONG Offset, + _Out_writes_bytes_(Length) PVOID Buffer, + _In_ ULONG Length); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI ULONG NTAPI NdisWritePcmciaAttributeMemory( - IN NDIS_HANDLE NdisAdapterHandle, - IN ULONG Offset, - IN PVOID Buffer, - IN ULONG Length); + _In_ NDIS_HANDLE NdisAdapterHandle, + _In_ ULONG Offset, + _In_reads_bytes_(Length) PVOID Buffer, + _In_ ULONG Length); #endif /* NDIS_LEGACY_MINIPORT */ @@ -4301,46 +4370,53 @@ NdisDprReleaseSpinLock( /* Miscellaneous routines */ +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisCloseConfiguration( - IN NDIS_HANDLE ConfigurationHandle); + _In_ __drv_freesMem(mem) NDIS_HANDLE ConfigurationHandle); +_IRQL_requires_(PASSIVE_LEVEL) +_Success_(*Status >= 0) NDISAPI VOID NTAPI NdisReadConfiguration( - OUT PNDIS_STATUS Status, - OUT PNDIS_CONFIGURATION_PARAMETER *ParameterValue, - IN NDIS_HANDLE ConfigurationHandle, - IN PNDIS_STRING Keyword, - IN NDIS_PARAMETER_TYPE ParameterType); + _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_CONFIGURATION_PARAMETER *ParameterValue, + _In_ NDIS_HANDLE ConfigurationHandle, + _In_ PNDIS_STRING Keyword, + _In_ NDIS_PARAMETER_TYPE ParameterType); +_IRQL_requires_(PASSIVE_LEVEL) +_Success_(*Status >= 0) NDISAPI VOID NTAPI NdisWriteConfiguration( - OUT PNDIS_STATUS Status, - IN NDIS_HANDLE WrapperConfigurationContext, - IN PNDIS_STRING Keyword, - IN PNDIS_CONFIGURATION_PARAMETER ParameterValue); + _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, + _In_ NDIS_HANDLE WrapperConfigurationContext, + _In_ PNDIS_STRING Keyword, + _In_ PNDIS_CONFIGURATION_PARAMETER ParameterValue); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID __cdecl NdisWriteErrorLogEntry( - IN NDIS_HANDLE NdisAdapterHandle, - IN NDIS_ERROR_CODE ErrorCode, - IN ULONG NumberOfErrorValues, - IN ...); + _In_ NDIS_HANDLE NdisAdapterHandle, + _In_ NDIS_ERROR_CODE ErrorCode, + _In_ ULONG NumberOfErrorValues, + ...); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisInitializeString( - OUT PNDIS_STRING Destination, - IN PUCHAR Source); + _Out_ _At_(Destination->Buffer, __drv_allocatesMem(Mem)) PNDIS_STRING Destination, + _In_opt_z_ PUCHAR Source); /* * VOID @@ -4359,6 +4435,7 @@ NdisGetCurrentSystemTime( #define NdisGetCurrentSystemTime KeQuerySystemTime #if NDIS_SUPPORT_60_COMPATIBLE_API +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI CCHAR NTAPI @@ -4392,15 +4469,16 @@ NdisGetCurrentProcessorCpuUsage( /* NDIS 4.0 extensions */ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMFreeSharedMemory( - IN NDIS_HANDLE MiniportAdapterHandle, - IN ULONG Length, - IN BOOLEAN Cached, - IN PVOID VirtualAddress, - IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ ULONG Length, + _In_ BOOLEAN Cached, + _In_reads_bytes_(Length) PVOID VirtualAddress, + _In_ NDIS_PHYSICAL_ADDRESS PhysicalAddress); NDISAPI VOID @@ -4440,21 +4518,24 @@ NdisPciAssignResources( /* NDIS 5.0 extensions */ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisAllocateMemoryWithTag( - OUT PVOID *VirtualAddress, - IN UINT Length, - IN ULONG Tag); + _At_(*VirtualAddress, __drv_allocatesMem(Mem)) _Outptr_result_bytebuffer_(Length) + PVOID *VirtualAddress, + _In_ UINT Length, + _In_ ULONG Tag); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisGetCurrentProcessorCounts( - OUT PULONG pIdleCount, - OUT PULONG pKernelAndUser, - OUT PULONG pIndex); + _Out_ PULONG pIdleCount, + _Out_ PULONG pKernelAndUser, + _Out_ PULONG pIndex); #if NDIS_LEGACY_DRIVER NDISAPI @@ -4466,26 +4547,34 @@ NdisGetSystemUpTime( #if NDIS_SUPPORT_60_COMPATIBLE_API +_IRQL_requires_max_(DISPATCH_LEVEL) +_IRQL_raises_(DISPATCH_LEVEL) +_When_(fWrite, _Acquires_exclusive_lock_(*Lock)) +_When_(!fWrite, _Acquires_shared_lock_(*Lock)) NDISAPI VOID NTAPI NdisAcquireReadWriteLock( - IN OUT PNDIS_RW_LOCK Lock, - IN BOOLEAN fWrite, - OUT PLOCK_STATE LockState); + _Inout_ PNDIS_RW_LOCK Lock, + _In_ BOOLEAN fWrite, + _Out_ _IRQL_saves_ PLOCK_STATE LockState); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisInitializeReadWriteLock( - OUT PNDIS_RW_LOCK Lock); + _Out_ PNDIS_RW_LOCK Lock); +_IRQL_requires_(DISPATCH_LEVEL) +_Requires_lock_held_(*Lock) +_Releases_lock_(*Lock) NDISAPI VOID NTAPI NdisReleaseReadWriteLock( - IN OUT PNDIS_RW_LOCK Lock, - IN PLOCK_STATE LockState); + _Inout_ PNDIS_RW_LOCK Lock, + _In_ _IRQL_restores_ PLOCK_STATE LockState); #if NDIS_SUPPORT_NDIS6 @@ -4508,369 +4597,428 @@ NdisDprReleaseReadWriteLock( #endif /* NDIS_SUPPORT_60_COMPATIBLE_API */ +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMDeregisterDevice( - IN NDIS_HANDLE NdisDeviceHandle); + _In_ NDIS_HANDLE NdisDeviceHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisMGetDeviceProperty( - IN NDIS_HANDLE MiniportAdapterHandle, - IN OUT PDEVICE_OBJECT *PhysicalDeviceObject OPTIONAL, - IN OUT PDEVICE_OBJECT *FunctionalDeviceObject OPTIONAL, - IN OUT PDEVICE_OBJECT *NextDeviceObject OPTIONAL, - IN OUT PCM_RESOURCE_LIST *AllocatedResources OPTIONAL, - IN OUT PCM_RESOURCE_LIST *AllocatedResourcesTranslated OPTIONAL); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _Inout_opt_ PDEVICE_OBJECT *PhysicalDeviceObject, + _Inout_opt_ PDEVICE_OBJECT *FunctionalDeviceObject, + _Inout_opt_ PDEVICE_OBJECT *NextDeviceObject, + _Inout_opt_ PCM_RESOURCE_LIST *AllocatedResources, + _Inout_opt_ PCM_RESOURCE_LIST *AllocatedResourcesTranslated); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMInitializeScatterGatherDma( - IN NDIS_HANDLE MiniportAdapterHandle, - IN BOOLEAN Dma64BitAddresses, - IN ULONG MaximumPhysicalMapping); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ BOOLEAN Dma64BitAddresses, + _In_ ULONG MaximumPhysicalMapping); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMPromoteMiniport( - IN NDIS_HANDLE MiniportAdapterHandle); + _In_ NDIS_HANDLE MiniportAdapterHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMQueryAdapterInstanceName( - OUT PNDIS_STRING AdapterInstanceName, - IN NDIS_HANDLE MiniportAdapterHandle); + _Out_ PNDIS_STRING AdapterInstanceName, + _In_ NDIS_HANDLE MiniportAdapterHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMRegisterDevice( - IN NDIS_HANDLE NdisWrapperHandle, - IN PNDIS_STRING DeviceName, - IN PNDIS_STRING SymbolicName, - IN PDRIVER_DISPATCH MajorFunctions[], - OUT PDEVICE_OBJECT *pDeviceObject, - OUT NDIS_HANDLE *NdisDeviceHandle); + _In_ NDIS_HANDLE NdisWrapperHandle, + _In_ PNDIS_STRING DeviceName, + _In_ PNDIS_STRING SymbolicName, + _In_reads_(IRP_MJ_PNP) PDRIVER_DISPATCH *MajorFunctions, + _Out_ PDEVICE_OBJECT *pDeviceObject, + _Out_ NDIS_HANDLE *NdisDeviceHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisMRegisterUnloadHandler( - IN NDIS_HANDLE NdisWrapperHandle, - IN PDRIVER_UNLOAD UnloadHandler); + _In_ NDIS_HANDLE NdisWrapperHandle, + _In_ PDRIVER_UNLOAD UnloadHandler); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMRemoveMiniport( - IN NDIS_HANDLE MiniportAdapterHandle); + _In_ NDIS_HANDLE MiniportAdapterHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMSetMiniportSecondary( - IN NDIS_HANDLE MiniportAdapterHandle, - IN NDIS_HANDLE PrimaryMiniportAdapterHandle); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ NDIS_HANDLE PrimaryMiniportAdapterHandle); +_IRQL_requires_max_(APC_LEVEL) +_Success_(*Status >= 0) NDISAPI VOID NTAPI NdisOpenConfigurationKeyByIndex( - OUT PNDIS_STATUS Status, - IN NDIS_HANDLE ConfigurationHandle, - IN ULONG Index, - OUT PNDIS_STRING KeyName, - OUT PNDIS_HANDLE KeyHandle); + _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, + _In_ NDIS_HANDLE ConfigurationHandle, + _In_ ULONG Index, + _Out_ PNDIS_STRING KeyName, + _Out_ PNDIS_HANDLE KeyHandle); +_IRQL_requires_max_(APC_LEVEL) +_Success_(*Status >= 0) NDISAPI VOID NTAPI NdisOpenConfigurationKeyByName( - OUT PNDIS_STATUS Status, - IN NDIS_HANDLE ConfigurationHandle, - IN PNDIS_STRING SubKeyName, - OUT PNDIS_HANDLE SubKeyHandle); + _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, + _In_ NDIS_HANDLE ConfigurationHandle, + _In_ PNDIS_STRING SubKeyName, + _Out_ PNDIS_HANDLE SubKeyHandle); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisQueryAdapterInstanceName( - OUT PNDIS_STRING AdapterInstanceName, - IN NDIS_HANDLE NdisBindingHandle); + _Out_ PNDIS_STRING AdapterInstanceName, + _In_ NDIS_HANDLE NdisBindingHandle); +_Must_inspect_result_ NDISAPI NDIS_STATUS NTAPI NdisQueryBindInstanceName( - OUT PNDIS_STRING pAdapterInstanceName, - IN NDIS_HANDLE BindingContext); + _Out_ PNDIS_STRING pAdapterInstanceName, + _In_ NDIS_HANDLE BindingContext); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisWriteEventLogEntry( - IN PVOID LogHandle, - IN NDIS_STATUS EventCode, - IN ULONG UniqueEventValue, - IN USHORT NumStrings, - IN PVOID StringsList OPTIONAL, - IN ULONG DataSize, - IN PVOID Data OPTIONAL); + _In_ _Points_to_data_ PVOID LogHandle, + _In_ NDIS_STATUS EventCode, + _In_ ULONG UniqueEventValue, + _In_ USHORT NumStrings, + _In_opt_ PVOID StringsList, + _In_ ULONG DataSize, + _In_reads_bytes_opt_(DataSize) PVOID Data); /* Connectionless services */ +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisClAddParty( - IN NDIS_HANDLE NdisVcHandle, - IN NDIS_HANDLE ProtocolPartyContext, - IN OUT PCO_CALL_PARAMETERS CallParameters, - OUT PNDIS_HANDLE NdisPartyHandle); + _In_ NDIS_HANDLE NdisVcHandle, + _In_ NDIS_HANDLE ProtocolPartyContext, + _In_ PCO_CALL_PARAMETERS CallParameters, + _Out_ PNDIS_HANDLE NdisPartyHandle); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisClCloseAddressFamily( - IN NDIS_HANDLE NdisAfHandle); + _In_ NDIS_HANDLE NdisAfHandle); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisClCloseCall( - IN NDIS_HANDLE NdisVcHandle, - IN NDIS_HANDLE NdisPartyHandle OPTIONAL, - IN PVOID Buffer OPTIONAL, - IN UINT Size); + _In_ NDIS_HANDLE NdisVcHandle, + _In_opt_ NDIS_HANDLE NdisPartyHandle, + _In_reads_bytes_opt_(Size) PVOID Buffer, + _In_ UINT Size); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisClDeregisterSap( - IN NDIS_HANDLE NdisSapHandle); + _In_ NDIS_HANDLE NdisSapHandle); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisClDropParty( - IN NDIS_HANDLE NdisPartyHandle, - IN PVOID Buffer OPTIONAL, - IN UINT Size); + _In_ NDIS_HANDLE NdisPartyHandle, + _In_reads_bytes_opt_(Size) PVOID Buffer, + _In_opt_ UINT Size); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisClIncomingCallComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisVcHandle, - IN PCO_CALL_PARAMETERS CallParameters); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisVcHandle, + _In_ PCO_CALL_PARAMETERS CallParameters); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisClMakeCall( - IN NDIS_HANDLE NdisVcHandle, - IN OUT PCO_CALL_PARAMETERS CallParameters, - IN NDIS_HANDLE ProtocolPartyContext OPTIONAL, - OUT PNDIS_HANDLE NdisPartyHandle OPTIONAL); + _In_ NDIS_HANDLE NdisVcHandle, + _Inout_ PCO_CALL_PARAMETERS CallParameters, + _In_opt_ NDIS_HANDLE ProtocolPartyContext, + _Out_opt_ PNDIS_HANDLE NdisPartyHandle); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisClModifyCallQoS( - IN NDIS_HANDLE NdisVcHandle, - IN PCO_CALL_PARAMETERS CallParameters); - + _In_ NDIS_HANDLE NdisVcHandle, + _In_ PCO_CALL_PARAMETERS CallParameters); +_Must_inspect_result_ +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisClOpenAddressFamily( - IN NDIS_HANDLE NdisBindingHandle, - IN PCO_ADDRESS_FAMILY AddressFamily, - IN NDIS_HANDLE ProtocolAfContext, - IN PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics, - IN UINT SizeOfClCharacteristics, - OUT PNDIS_HANDLE NdisAfHandle); + _In_ NDIS_HANDLE NdisBindingHandle, + _In_ PCO_ADDRESS_FAMILY AddressFamily, + _In_ NDIS_HANDLE ProtocolAfContext, + _In_ PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics, + _In_ UINT SizeOfClCharacteristics, + _Out_ PNDIS_HANDLE NdisAfHandle); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisClRegisterSap( - IN NDIS_HANDLE NdisAfHandle, - IN NDIS_HANDLE ProtocolSapContext, - IN PCO_SAP Sap, - OUT PNDIS_HANDLE NdisSapHandle); + _In_ NDIS_HANDLE NdisAfHandle, + _In_ NDIS_HANDLE ProtocolSapContext, + _In_ PCO_SAP Sap, + _Out_ PNDIS_HANDLE NdisSapHandle); /* Call Manager services */ +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisCmActivateVc( - IN NDIS_HANDLE NdisVcHandle, - IN OUT PCO_CALL_PARAMETERS CallParameters); + _In_ NDIS_HANDLE NdisVcHandle, + _Inout_ PCO_CALL_PARAMETERS CallParameters); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmAddPartyComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisPartyHandle, - IN NDIS_HANDLE CallMgrPartyContext OPTIONAL, - IN PCO_CALL_PARAMETERS CallParameters); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisPartyHandle, + _In_opt_ NDIS_HANDLE CallMgrPartyContext, + _In_ PCO_CALL_PARAMETERS CallParameters); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmCloseAddressFamilyComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisAfHandle); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisAfHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmCloseCallComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisVcHandle, - IN NDIS_HANDLE NdisPartyHandle OPTIONAL); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisVcHandle, + _In_opt_ NDIS_HANDLE NdisPartyHandle); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisCmDeactivateVc( - IN NDIS_HANDLE NdisVcHandle); + _In_ NDIS_HANDLE NdisVcHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmDeregisterSapComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisSapHandle); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisSapHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmDispatchCallConnected( - IN NDIS_HANDLE NdisVcHandle); + _In_ NDIS_HANDLE NdisVcHandle); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisCmDispatchIncomingCall( - IN NDIS_HANDLE NdisSapHandle, - IN NDIS_HANDLE NdisVcHandle, - IN PCO_CALL_PARAMETERS CallParameters); + _In_ NDIS_HANDLE NdisSapHandle, + _In_ NDIS_HANDLE NdisVcHandle, + _In_ PCO_CALL_PARAMETERS CallParameters); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmDispatchIncomingCallQoSChange( - IN NDIS_HANDLE NdisVcHandle, - IN PCO_CALL_PARAMETERS CallParameters); + _In_ NDIS_HANDLE NdisVcHandle, + _In_ PCO_CALL_PARAMETERS CallParameters); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmDispatchIncomingCloseCall( - IN NDIS_STATUS CloseStatus, - IN NDIS_HANDLE NdisVcHandle, - IN PVOID Buffer OPTIONAL, - IN UINT Size); + _In_ NDIS_STATUS CloseStatus, + _In_ NDIS_HANDLE NdisVcHandle, + _In_reads_bytes_opt_(Size) PVOID Buffer, + _In_ UINT Size); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmDispatchIncomingDropParty( - IN NDIS_STATUS DropStatus, - IN NDIS_HANDLE NdisPartyHandle, - IN PVOID Buffer OPTIONAL, - IN UINT Size); + _In_ NDIS_STATUS DropStatus, + _In_ NDIS_HANDLE NdisPartyHandle, + _In_reads_bytes_opt_(Size) PVOID Buffer, + _In_ UINT Size); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmDropPartyComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisPartyHandle); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisPartyHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmMakeCallComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisVcHandle, - IN NDIS_HANDLE NdisPartyHandle OPTIONAL, - IN NDIS_HANDLE CallMgrPartyContext OPTIONAL, - IN PCO_CALL_PARAMETERS CallParameters); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisVcHandle, + _In_opt_ NDIS_HANDLE NdisPartyHandle, + _In_opt_ NDIS_HANDLE CallMgrPartyContext, + _In_ PCO_CALL_PARAMETERS CallParameters); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmModifyCallQoSComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisVcHandle, - IN PCO_CALL_PARAMETERS CallParameters); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisVcHandle, + _In_ PCO_CALL_PARAMETERS CallParameters); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmOpenAddressFamilyComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisAfHandle, - IN NDIS_HANDLE CallMgrAfContext); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisAfHandle, + _In_ NDIS_HANDLE CallMgrAfContext); +_Must_inspect_result_ +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisCmRegisterAddressFamily( - IN NDIS_HANDLE NdisBindingHandle, - IN PCO_ADDRESS_FAMILY AddressFamily, - IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics, - IN UINT SizeOfCmCharacteristics); + _In_ NDIS_HANDLE NdisBindingHandle, + _In_ PCO_ADDRESS_FAMILY AddressFamily, + _In_ PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics, + _In_ UINT SizeOfCmCharacteristics); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCmRegisterSapComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisSapHandle, - IN NDIS_HANDLE CallMgrSapContext); - + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisSapHandle, + _In_ NDIS_HANDLE CallMgrSapContext); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMCmActivateVc( - IN NDIS_HANDLE NdisVcHandle, - IN PCO_CALL_PARAMETERS CallParameters); + _In_ NDIS_HANDLE NdisVcHandle, + _In_ PCO_CALL_PARAMETERS CallParameters); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMCmCreateVc( - IN NDIS_HANDLE MiniportAdapterHandle, - IN NDIS_HANDLE NdisAfHandle, - IN NDIS_HANDLE MiniportVcContext, - OUT PNDIS_HANDLE NdisVcHandle); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ NDIS_HANDLE NdisAfHandle, + _In_ NDIS_HANDLE MiniportVcContext, + _Out_ PNDIS_HANDLE NdisVcHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMCmDeactivateVc( - IN NDIS_HANDLE NdisVcHandle); + _In_ NDIS_HANDLE NdisVcHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMCmDeleteVc( - IN NDIS_HANDLE NdisVcHandle); + _In_ NDIS_HANDLE NdisVcHandle); NDISAPI NDIS_STATUS @@ -4881,132 +5029,150 @@ NdisMCmRegisterAddressFamily( IN PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics, IN UINT SizeOfCmCharacteristics); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMCmRequest( - IN NDIS_HANDLE NdisAfHandle, - IN NDIS_HANDLE NdisVcHandle OPTIONAL, - IN NDIS_HANDLE NdisPartyHandle OPTIONAL, - IN OUT PNDIS_REQUEST NdisRequest); + _In_ NDIS_HANDLE NdisAfHandle, + _In_opt_ NDIS_HANDLE NdisVcHandle, + _In_opt_ NDIS_HANDLE NdisPartyHandle, + _Inout_ PNDIS_REQUEST NdisRequest); /* Connection-oriented services */ +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisCoCreateVc( - IN NDIS_HANDLE NdisBindingHandle, - IN NDIS_HANDLE NdisAfHandle OPTIONAL, - IN NDIS_HANDLE ProtocolVcContext, - IN OUT PNDIS_HANDLE NdisVcHandle); + _In_ NDIS_HANDLE NdisBindingHandle, + _In_opt_ NDIS_HANDLE NdisAfHandle , + _In_ NDIS_HANDLE ProtocolVcContext, + _Inout_ PNDIS_HANDLE NdisVcHandle); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisCoDeleteVc( - IN NDIS_HANDLE NdisVcHandle); + _In_ NDIS_HANDLE NdisVcHandle); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisCoRequest( - IN NDIS_HANDLE NdisBindingHandle, - IN NDIS_HANDLE NdisAfHandle OPTIONAL, - IN NDIS_HANDLE NdisVcHandle OPTIONAL, - IN NDIS_HANDLE NdisPartyHandle OPTIONAL, - IN OUT PNDIS_REQUEST NdisRequest); + _In_ NDIS_HANDLE NdisBindingHandle, + _In_opt_ NDIS_HANDLE NdisAfHandle, + _In_opt_ NDIS_HANDLE NdisVcHandle, + _In_opt_ NDIS_HANDLE NdisPartyHandle, + _Inout_ PNDIS_REQUEST NdisRequest); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCoRequestComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisAfHandle, - IN NDIS_HANDLE NdisVcHandle OPTIONAL, - IN NDIS_HANDLE NdisPartyHandle OPTIONAL, - IN PNDIS_REQUEST NdisRequest); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisAfHandle, + _In_opt_ NDIS_HANDLE NdisVcHandle, + _In_opt_ NDIS_HANDLE NdisPartyHandle, + _In_ PNDIS_REQUEST NdisRequest); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCoSendPackets( - IN NDIS_HANDLE NdisVcHandle, - IN PPNDIS_PACKET PacketArray, - IN UINT NumberOfPackets); + _In_ NDIS_HANDLE NdisVcHandle, + _In_ PPNDIS_PACKET PacketArray, + _In_ UINT NumberOfPackets); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMCoActivateVcComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisVcHandle, - IN PCO_CALL_PARAMETERS CallParameters); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisVcHandle, + _In_ PCO_CALL_PARAMETERS CallParameters); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMCoDeactivateVcComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisVcHandle); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisVcHandle); +_IRQL_requires_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMCoIndicateReceivePacket( - IN NDIS_HANDLE NdisVcHandle, - IN PPNDIS_PACKET PacketArray, - IN UINT NumberOfPackets); + _In_ NDIS_HANDLE NdisVcHandle, + _In_ PPNDIS_PACKET PacketArray, + _In_ UINT NumberOfPackets); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMCoIndicateStatus( - IN NDIS_HANDLE MiniportAdapterHandle, - IN NDIS_HANDLE NdisVcHandle OPTIONAL, - IN NDIS_STATUS GeneralStatus, - IN PVOID StatusBuffer OPTIONAL, - IN ULONG StatusBufferSize); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_opt_ NDIS_HANDLE NdisVcHandle, + _In_ NDIS_STATUS GeneralStatus, + _In_reads_bytes_opt_(StatusBufferSize) PVOID StatusBuffer, + _In_ ULONG StatusBufferSize); +_IRQL_requires_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMCoReceiveComplete( - IN NDIS_HANDLE MiniportAdapterHandle); + _In_ NDIS_HANDLE MiniportAdapterHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMCoRequestComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE MiniportAdapterHandle, - IN PNDIS_REQUEST Request); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ PNDIS_REQUEST Request); +_IRQL_requires_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMCoSendComplete( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisVcHandle, - IN PNDIS_PACKET Packet); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisVcHandle, + _In_ PNDIS_PACKET Packet); /* NDIS 5.0 extensions for intermediate drivers */ +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisIMAssociateMiniport( - IN NDIS_HANDLE DriverHandle, - IN NDIS_HANDLE ProtocolHandle); + _In_ NDIS_HANDLE DriverHandle, + _In_ NDIS_HANDLE ProtocolHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisIMCancelInitializeDeviceInstance( - IN NDIS_HANDLE DriverHandle, - IN PNDIS_STRING DeviceInstance); + _In_ NDIS_HANDLE DriverHandle, + _In_ PNDIS_STRING DeviceInstance); NDISAPI VOID @@ -5022,31 +5188,35 @@ NdisIMCopySendPerPacketInfo( IN PNDIS_PACKET DstPacket, IN PNDIS_PACKET SrcPacket); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisIMDeregisterLayeredMiniport( - IN NDIS_HANDLE DriverHandle); + _In_ NDIS_HANDLE DriverHandle); +_IRQL_requires_max_(APC_LEVEL) NDISAPI NDIS_HANDLE NTAPI NdisIMGetBindingContext( - IN NDIS_HANDLE NdisBindingHandle); + _In_ NDIS_HANDLE NdisBindingHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_HANDLE NTAPI NdisIMGetDeviceContext( - IN NDIS_HANDLE MiniportAdapterHandle); + _In_ NDIS_HANDLE MiniportAdapterHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisIMInitializeDeviceInstanceEx( - IN NDIS_HANDLE DriverHandle, - IN PNDIS_STRING DriverInstance, - IN NDIS_HANDLE DeviceContext OPTIONAL); + _In_ NDIS_HANDLE DriverHandle, + _In_ PNDIS_STRING DriverInstance, + _In_opt_ NDIS_HANDLE DeviceContext); /* NDISAPI @@ -5119,15 +5289,18 @@ NdisInitializeWrapper( IN PVOID SystemSpecific2, IN PVOID SystemSpecific3); +_Must_inspect_result_ +_IRQL_requires_(PASSIVE_LEVEL) +__drv_preferredFunction("NdisMInitializeScatterGatherDma", "See details in NdisMAllocateMapRegisters documentation") NDISAPI NDIS_STATUS NTAPI NdisMAllocateMapRegisters( - IN NDIS_HANDLE MiniportAdapterHandle, - IN UINT DmaChannel, - IN NDIS_DMA_SIZE DmaSize, - IN ULONG PhysicalMapRegistersNeeded, - IN ULONG MaximumPhysicalMapping); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ UINT DmaChannel, + _In_ NDIS_DMA_SIZE DmaSize, + _In_ ULONG PhysicalMapRegistersNeeded, + _In_ ULONG MaximumPhysicalMapping); /* * VOID @@ -5165,41 +5338,45 @@ NdisMAllocateMapRegisters( ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB); \ } +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisMCloseLog( - IN NDIS_HANDLE LogHandle); + _In_ NDIS_HANDLE LogHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMCreateLog( - IN NDIS_HANDLE MiniportAdapterHandle, - IN UINT Size, - OUT PNDIS_HANDLE LogHandle); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ UINT Size, + _Out_ PNDIS_HANDLE LogHandle); NDISAPI VOID NTAPI NdisMDeregisterAdapterShutdownHandler( - IN NDIS_HANDLE MiniportHandle); + _In_ NDIS_HANDLE MiniportHandle); #if NDIS_LEGACY_MINIPORT +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisMDeregisterInterrupt( - IN PNDIS_MINIPORT_INTERRUPT Interrupt); + _In_ PNDIS_MINIPORT_INTERRUPT Interrupt); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisMRegisterAdapterShutdownHandler( - IN NDIS_HANDLE MiniportHandle, - IN PVOID ShutdownContext, - IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler); + _In_ NDIS_HANDLE MiniportHandle, + _In_ PVOID ShutdownContext, + _In_ ADAPTER_SHUTDOWN_HANDLER ShutdownHandler); NDISAPI NDIS_STATUS @@ -5230,14 +5407,15 @@ NdisMSynchronizeWithInterrupt( IN PVOID SynchronizeContext); #endif /* NDIS_LEGACY_MINIPORT */ +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisMDeregisterIoPortRange( - IN NDIS_HANDLE MiniportAdapterHandle, - IN UINT InitialPort, - IN UINT NumberOfPorts, - IN PVOID PortOffset); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ UINT InitialPort, + _In_ UINT NumberOfPorts, + _In_ PVOID PortOffset); /* * VOID @@ -5326,17 +5504,19 @@ NdisMDeregisterIoPortRange( ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FddiDB); \ } +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMFlushLog( - IN NDIS_HANDLE LogHandle); + _In_ NDIS_HANDLE LogHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisMFreeMapRegisters( - IN NDIS_HANDLE MiniportAdapterHandle); + _In_ NDIS_HANDLE MiniportAdapterHandle); /* * VOID @@ -5391,14 +5571,16 @@ NdisMFreeMapRegisters( (SystemSpecific2), \ (SystemSpecific3)) +_Must_inspect_result_ +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMMapIoSpace( - OUT PVOID *VirtualAddress, - IN NDIS_HANDLE MiniportAdapterHandle, - IN NDIS_PHYSICAL_ADDRESS PhysicalAddress, - IN UINT Length); + _Outptr_result_bytebuffer_(Length) PVOID *VirtualAddress, + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ NDIS_PHYSICAL_ADDRESS PhysicalAddress, + _In_ UINT Length); /* * VOID @@ -5409,14 +5591,16 @@ NdisMMapIoSpace( #define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \ (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status) +_Must_inspect_result_ +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMRegisterIoPortRange( - OUT PVOID *PortOffset, - IN NDIS_HANDLE MiniportAdapterHandle, - IN UINT InitialPort, - IN UINT NumberOfPorts); + _Out_ PVOID *PortOffset, + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ UINT InitialPort, + _In_ UINT NumberOfPorts); NDISAPI VOID @@ -5425,28 +5609,31 @@ NdisMSetTimer( IN PNDIS_MINIPORT_TIMER Timer, IN UINT MillisecondsToDelay); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMInitializeTimer( - IN OUT PNDIS_MINIPORT_TIMER Timer, - IN NDIS_HANDLE MiniportAdapterHandle, - IN PNDIS_TIMER_FUNCTION TimerFunction, - IN PVOID FunctionContext); + _Inout_ PNDIS_MINIPORT_TIMER Timer, + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_ PNDIS_TIMER_FUNCTION TimerFunction, + _In_ PVOID FunctionContext); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMSetPeriodicTimer( - IN PNDIS_MINIPORT_TIMER Timer, - IN UINT MillisecondPeriod); + _In_ PNDIS_MINIPORT_TIMER Timer, + _In_ UINT MillisecondPeriod); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisMCancelTimer( - IN PNDIS_MINIPORT_TIMER Timer, - OUT PBOOLEAN TimerCancelled); + _In_ PNDIS_MINIPORT_TIMER Timer, + _Out_ _At_(*TimerCancelled, _Must_inspect_result_) PBOOLEAN TimerCancelled); #if !defined(NDIS_WRAPPER) @@ -5457,7 +5644,7 @@ NdisMCancelTimer( * IN NDIS_STATUS Status, * IN BOOLEAN AddressingReset); */ -#define NdisMResetComplete(MiniportAdapterHandle, \ +#define NdisMResetComplete(MiniportAdapterHandle, \ Status, \ AddressingReset) \ { \ @@ -5550,11 +5737,12 @@ NdisMSetAttributesEx( (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \ MiniportAdapterHandle, Status) +_IRQL_requires_max_(APC_LEVEL) NDISAPI VOID NTAPI NdisMSleep( - IN ULONG MicrosecondsToSleep); + _In_ ULONG MicrosecondsToSleep); /* * VOID @@ -5597,64 +5785,73 @@ NdisMSleep( ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->TrDB); \ } +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisMWriteLogData( - IN NDIS_HANDLE LogHandle, - IN PVOID LogBuffer, - IN UINT LogBufferSize); + _In_ NDIS_HANDLE LogHandle, + _In_reads_bytes_(LogBufferSize) PVOID LogBuffer, + _In_ UINT LogBufferSize); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisMQueryAdapterResources( - OUT PNDIS_STATUS Status, - IN NDIS_HANDLE WrapperConfigurationContext, - OUT PNDIS_RESOURCE_LIST ResourceList, - IN OUT PUINT BufferSize); + _Out_ PNDIS_STATUS Status, + _In_ NDIS_HANDLE WrapperConfigurationContext, + _Out_ PNDIS_RESOURCE_LIST ResourceList, + _Inout_ PUINT BufferSize); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisTerminateWrapper( - IN NDIS_HANDLE NdisWrapperHandle, - IN PVOID SystemSpecific); + _In_ NDIS_HANDLE NdisWrapperHandle, + _In_opt_ PVOID SystemSpecific); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisMUnmapIoSpace( - IN NDIS_HANDLE MiniportAdapterHandle, - IN PVOID VirtualAddress, - IN UINT Length); + _In_ NDIS_HANDLE MiniportAdapterHandle, + _In_reads_bytes_(Length) PVOID VirtualAddress, + _In_ UINT Length); /* Event functions */ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisInitializeEvent( - OUT PNDIS_EVENT Event); + _Out_ PNDIS_EVENT Event); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisSetEvent( - IN PNDIS_EVENT Event); + _In_ PNDIS_EVENT Event); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisResetEvent( - IN PNDIS_EVENT Event); + _In_ PNDIS_EVENT Event); +_When_(MsToWait != 0, _Check_return_) +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI BOOLEAN NTAPI NdisWaitEvent( - IN PNDIS_EVENT Event, - IN UINT Timeout); + _In_ PNDIS_EVENT Event, + _In_ UINT Timeout); /* NDIS intermediate miniport structures */ @@ -5664,11 +5861,12 @@ typedef VOID (NTAPI *W_MINIPORT_CALLBACK)( /* Routines for intermediate miniport drivers */ +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisIMDeInitializeDeviceInstance( - IN NDIS_HANDLE NdisMiniportHandle); + _In_ NDIS_HANDLE NdisMiniportHandle); /* * NDIS_STATUS @@ -5717,10 +5915,10 @@ NDISAPI NDIS_STATUS NTAPI NdisIMRegisterLayeredMiniport( - IN NDIS_HANDLE NdisWrapperHandle, - IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, - IN UINT CharacteristicsLength, - OUT PNDIS_HANDLE DriverHandle); + _In_ NDIS_HANDLE NdisWrapperHandle, + _In_ PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, + _In_ UINT CharacteristicsLength, + _Out_ PNDIS_HANDLE DriverHandle); NDISAPI VOID @@ -5750,101 +5948,111 @@ NdisSendPackets( IN PPNDIS_PACKET PacketArray, IN UINT NumberOfPackets); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisRequest( - OUT PNDIS_STATUS Status, - IN NDIS_HANDLE NdisBindingHandle, - IN PNDIS_REQUEST NdisRequest); + _Out_ PNDIS_STATUS Status, + _In_ NDIS_HANDLE NdisBindingHandle, + _In_ PNDIS_REQUEST NdisRequest); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisReset( - OUT PNDIS_STATUS Status, - IN NDIS_HANDLE NdisBindingHandle); + _Out_ PNDIS_STATUS Status, + _In_ NDIS_HANDLE NdisBindingHandle); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisDeregisterProtocol( - OUT PNDIS_STATUS Status, - IN NDIS_HANDLE NdisProtocolHandle); + _Out_ PNDIS_STATUS Status, + _In_ NDIS_HANDLE NdisProtocolHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisOpenAdapter( - OUT PNDIS_STATUS Status, - OUT PNDIS_STATUS OpenErrorStatus, - OUT PNDIS_HANDLE NdisBindingHandle, - OUT PUINT SelectedMediumIndex, - IN PNDIS_MEDIUM MediumArray, - IN UINT MediumArraySize, - IN NDIS_HANDLE NdisProtocolHandle, - IN NDIS_HANDLE ProtocolBindingContext, - IN PNDIS_STRING AdapterName, - IN UINT OpenOptions, - IN PSTRING AddressingInformation OPTIONAL); + _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_STATUS OpenErrorStatus, + _Out_ PNDIS_HANDLE NdisBindingHandle, + _Out_ PUINT SelectedMediumIndex, + _In_reads_(MediumArraySize) PNDIS_MEDIUM MediumArray, + _In_ UINT MediumArraySize, + _In_ NDIS_HANDLE NdisProtocolHandle, + _In_ NDIS_HANDLE ProtocolBindingContext, + _In_ PNDIS_STRING AdapterName, + _In_ UINT OpenOptions, + _In_opt_ PSTRING AddressingInformation); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisCloseAdapter( - OUT PNDIS_STATUS Status, - IN NDIS_HANDLE NdisBindingHandle); + _Out_ PNDIS_STATUS Status, + _In_ NDIS_HANDLE NdisBindingHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisCompleteBindAdapter( - IN NDIS_HANDLE BindAdapterContext, - IN NDIS_STATUS Status, - IN NDIS_STATUS OpenStatus); + _In_ NDIS_HANDLE BindAdapterContext, + _In_ NDIS_STATUS Status, + _In_ NDIS_STATUS OpenStatus); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisCompleteUnbindAdapter( - IN NDIS_HANDLE UnbindAdapterContext, - IN NDIS_STATUS Status); + _In_ NDIS_HANDLE UnbindAdapterContext, + _In_ NDIS_STATUS Status); NDISAPI VOID NTAPI NdisSetProtocolFilter( - OUT PNDIS_STATUS Status, - IN NDIS_HANDLE NdisBindingHandle, - IN RECEIVE_HANDLER ReceiveHandler, - IN RECEIVE_PACKET_HANDLER ReceivePacketHandler, - IN NDIS_MEDIUM Medium, - IN UINT Offset, - IN UINT Size, - IN PUCHAR Pattern); + _At_(*Status, _Must_inspect_result_) _Out_ PNDIS_STATUS Status, + _In_ NDIS_HANDLE NdisBindingHandle, + _In_ RECEIVE_HANDLER ReceiveHandler, + _In_ RECEIVE_PACKET_HANDLER ReceivePacketHandler, + _In_ NDIS_MEDIUM Medium, + _In_ UINT Offset, + _In_ UINT Size, + _In_ PUCHAR Pattern); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisGetDriverHandle( - IN PNDIS_HANDLE NdisBindingHandle, - OUT PNDIS_HANDLE NdisDriverHandle); + _In_ PNDIS_HANDLE NdisBindingHandle, + _Out_ PNDIS_HANDLE NdisDriverHandle); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisOpenProtocolConfiguration( - OUT PNDIS_STATUS Status, - OUT PNDIS_HANDLE ConfigurationHandle, - IN PNDIS_STRING ProtocolSection); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_HANDLE ConfigurationHandle, + _In_ PNDIS_STRING ProtocolSection); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisCompletePnPEvent( - IN NDIS_STATUS Status, - IN NDIS_HANDLE NdisBindingHandle, - IN PNET_PNP_EVENT NetPnPEvent); + _In_ NDIS_STATUS Status, + _In_ NDIS_HANDLE NdisBindingHandle, + _In_ PNET_PNP_EVENT NetPnPEvent); /* * VOID @@ -5856,62 +6064,71 @@ NdisCompletePnPEvent( #define NdisQuerySendFlags(_Packet,_Flags) *(_Flags) = (_Packet)->Private.Flags +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisReturnPackets( - IN PNDIS_PACKET *PacketsToReturn, - IN UINT NumberOfPackets); + _In_reads_(NumberOfPackets) PNDIS_PACKET *PacketsToReturn, + _In_ UINT NumberOfPackets); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI PNDIS_PACKET NTAPI NdisGetReceivedPacket( - IN PNDIS_HANDLE NdisBindingHandle, - IN PNDIS_HANDLE MacContext); + _In_ PNDIS_HANDLE NdisBindingHandle, + _In_ PNDIS_HANDLE MacContext); +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI VOID NTAPI NdisCancelSendPackets( - IN NDIS_HANDLE NdisBindingHandle, - IN PVOID CancelId); + _In_ NDIS_HANDLE NdisBindingHandle, + _In_ _Points_to_data_ PVOID CancelId); +_Must_inspect_result_ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI NDIS_STATUS NTAPI NdisQueryPendingIOCount( - IN PVOID NdisBindingHandle, - OUT PULONG IoCount); + _In_ _Points_to_data_ PVOID NdisBindingHandle, + _Out_ PULONG IoCount); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisRegisterProtocol( - OUT PNDIS_STATUS Status, - OUT PNDIS_HANDLE NdisProtocolHandle, - IN PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics, - IN UINT CharacteristicsLength); + _Out_ PNDIS_STATUS Status, + _Out_ PNDIS_HANDLE NdisProtocolHandle, + _In_ PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics, + _In_ UINT CharacteristicsLength); #endif /* NDIS_LEGACY_PROTOCOL */ +_IRQL_requires_max_(DISPATCH_LEVEL) NDISAPI UCHAR NTAPI NdisGeneratePartialCancelId(VOID); +_IRQL_requires_(PASSIVE_LEVEL) NDISAPI VOID NTAPI NdisReEnumerateProtocolBindings( - IN NDIS_HANDLE NdisProtocolHandle); + _In_ NDIS_HANDLE NdisProtocolHandle); NDISAPI VOID NTAPI NdisRegisterTdiCallBack( - IN TDI_REGISTER_CALLBACK RegisterCallback, - IN TDI_PNP_HANDLER PnPHandler); + _In_ TDI_REGISTER_CALLBACK RegisterCallback, + _In_ TDI_PNP_HANDLER PnPHandler); NDISAPI VOID