NoLock rule (ndis)

[This documentation is preliminary and is subject to change.]

The NoLock rule specifies that certain NDIS APIs should not called when a spinlock is held.

Driver model NDIS

How to test

At compile time

Run Static Driver Verifier and specify the NoLock rule.

Use the following steps to run an analysis of your code:
  1. Prepare your code (use role type declarations).
  2. Run Static Driver Verifier.
  3. View and analyze the results.

For more information, see Using Static Driver Verifier to Find Defects in Drivers.

Applies to

NDIS_LOWER_IRQL

NDIS_RAISE_IRQL_TO_DISPATCH

NDIS_RELEASE_MUTEX

NDIS_WAIT_FOR_MUTEX

NdisAcquireReadWriteLock

NdisAdvanceNetBufferDataStart

NdisAdvanceNetBufferListDataStart

NdisAllocateFromNPagedLookasideList

NdisAllocateMemoryWithTagPriority

NdisAnsiStringToUnicodeString

NdisCancelOidRequest

NdisCancelSendNetBufferLists

NdisCancelTimerObject

NdisClAddParty

NdisClCloseAddressFamily

NdisClCloseCall

NdisClDeregisterSap

NdisClDropParty

NdisClGetProtocolVcContextFromTapiCallId

NdisClIncomingCallComplete

NdisClMakeCall

NdisClModifyCallQoS

NdisClNotifyCloseAddressFamilyComplete

NdisClOpenAddressFamilyEx

NdisCloseAdapterEx

NdisCloseConfiguration

NdisCloseFile

NdisClRegisterSap

NdisCmActivateVc

NdisCmAddPartyComplete

NdisCmCloseAddressFamilyComplete

NdisCmCloseCallComplete

NdisCmDeactivateVc

NdisCmDeregisterSapComplete

NdisCmDispatchCallConnected

NdisCmDispatchIncomingCall

NdisCmDispatchIncomingCallQoSChange

NdisCmDispatchIncomingCloseCall

NdisCmDispatchIncomingDropParty

NdisCmDropPartyComplete

NdisCmMakeCallComplete

NdisCmModifyCallQoSComplete

NdisCmNotifyCloseAddressFamily

NdisCmOpenAddressFamilyComplete

NdisCmRegisterAddressFamilyEx

NdisCmRegisterSapComplete

NdisCoAssignInstanceName

NdisCoCreateVc

NdisCoDeleteVc

NdisCoGetTapiCallId

NdisCompleteBindAdapterEx

NdisCompleteNetPnPEvent

NdisCompleteUnbindAdapterEx

NdisCoOidRequest

NdisCoOidRequestComplete

NdisCopyReceiveNetBufferListInfo

NdisCopySendNetBufferListInfo

NdisCoSendNetBufferLists

NdisDeleteNPagedLookasideList

NdisDeregisterDeviceEx

NdisDeregisterProtocolDriver

NdisDprAcquireSpinLock

NdisDprReleaseSpinLock

NdisEnumerateFilterModules

NdisEqualMemory

NdisEqualString

NdisEqualUnicodeString

NdisFCancelOidRequest

NdisFCancelSendNetBufferLists

NdisFDeregisterFilterDriver

NdisFDevicePnPEventNotify

NdisFIndicateReceiveNetBufferLists

NdisFIndicateStatus

NdisFNetPnPEvent

NdisFOidRequest

NdisFOidRequestComplete

NdisFPauseComplete

NdisFreeMemory

NdisFreeSpinLock

NdisFreeString

NdisFreeToNPagedLookasideList

NdisFRegisterFilterDriver

NdisFRestartComplete

NdisFRestartFilter

NdisFReturnNetBufferLists

NdisFSendNetBufferLists

NdisFSendNetBufferListsComplete

NdisFSetAttributes

NdisGeneratePartialCancelId

NdisGetCurrentProcessorCounts

NdisGetDataBuffer

NdisGetMdlPhysicalArraySize

NdisGetPoolFromNetBuffer

NdisGetPoolFromNetBufferList

NdisGetRoutineAddress

NdisGetSharedDataAlignment

NdisGetVersion

NdisIfAddIfStackEntry

NdisIfAllocateNetLuidIndex

NdisIfDeleteIfStackEntry

NdisIfDeregisterInterface

NdisIfDeregisterProvider

NdisIfFreeNetLuidIndex

NdisIfGetInterfaceIndexFromNetLuid

NdisIfGetNetLuidFromInterfaceIndex

NdisIfQueryBindingIfIndex

NdisIfRegisterInterface

NdisIfRegisterProvider

NdisIMAssociateMiniport

NdisIMCancelInitializeDeviceInstance

NdisIMDeInitializeDeviceInstance

NdisIMGetBindingContext

NdisIMInitializeDeviceInstanceEx

NdisInitAnsiString

NdisInitializeListHead

NdisInitializeNPagedLookasideList

NdisInitializeSListHead

NdisInitializeString

NdisInitUnicodeString

NdisInterlockedAddUlong

NdisInterlockedDecrement

NdisInterlockedInsertHeadList

NdisInterlockedInsertTailList

NdisInterlockedPopEntrySList

NdisInterlockedPushEntrySList

NdisInterlockedRemoveHeadList

NdisMAllocateNetBufferSGList

NdisMAllocateSharedMemory

NdisMAllocateSharedMemoryAsyncEx

NdisMapFile

NdisMCmActivateVc

NdisMCmAddPartyComplete

NdisMCmCloseAddressFamilyComplete

NdisMCmCloseCallComplete

NdisMCmCreateVc

NdisMCmDeactivateVc

NdisMCmDeleteVc

NdisMCmDeregisterSapComplete

NdisMCmDispatchCallConnected

NdisMCmDispatchIncomingCall

NdisMCmDispatchIncomingCallQoSChange

NdisMCmDispatchIncomingCloseCall

NdisMCmDispatchIncomingDropParty

NdisMCmDropPartyComplete

NdisMCmMakeCallComplete

NdisMCmModifyCallQoSComplete

NdisMCmNotifyCloseAddressFamily

NdisMCmOidRequest

NdisMCmOidRequestComplete

NdisMCmOpenAddressFamilyComplete

NdisMCmRegisterAddressFamilyEx

NdisMCmRegisterSapComplete

NdisMCoActivateVcComplete

NdisMCoDeactivateVcComplete

NdisMCoIndicateReceiveNetBufferLists

NdisMCoIndicateStatusEx

NdisMCompleteDmaTransfer

NdisMCoOidRequestComplete

NdisMCoSendNetBufferListsComplete

NdisMCreateLog

NdisMDeregisterDmaChannel

NdisMDeregisterInterruptEx

NdisMDeregisterIoPortRange

NdisMDeregisterMiniportDriver

NdisMDeregisterScatterGatherDma

NdisMFlushLog

NdisMFreeNetBufferSGList

NdisMFreePort

NdisMFreeSharedMemory

NdisMGetBusData

NdisMGetDeviceProperty

NdisMGetDmaAlignment

NdisMIndicateReceiveNetBufferLists

NdisMIndicateStatusEx

NdisMMapIoSpace

NdisMNetPnPEvent

NdisMOidRequestComplete

NdisMPauseComplete

NdisMQueryAdapterInstanceName

NdisMQueueDpc

NdisMReadDmaCounter

NdisMRegisterDmaChannel

NdisMRegisterInterruptEx

NdisMRegisterIoPortRange

NdisMRegisterMiniportDriver

NdisMRegisterScatterGatherDma

NdisMRemoveMiniport

NdisMResetComplete

NdisMRestartComplete

NdisMSendNetBufferListsComplete

NdisMSetBusData

NdisMSetMiniportAttributes

NdisMSetupDmaTransfer

NdisMSleep

NdisMUnmapIoSpace

NdisMWriteLogData

NdisOpenAdapterEx

NdisOpenConfigurationEx

NdisOpenConfigurationKeyByIndex

NdisOpenConfigurationKeyByName

NdisOpenFile

NdisQueryAdapterInstanceName

NdisQueryDepthSList

NdisQueryMdl

NdisQueryMdlOffset

NdisQueryNetBufferPhysicalCount

NdisQueueIoWorkItem

NdisReadConfiguration

NdisReadNetworkAddress

NdisReEnumerateProtocolBindings

NdisRegisterDeviceEx

NdisRegisterProtocolDriver

NdisReleaseReadWriteLock

NdisReleaseSpinLock

NdisResetEvent

NdisRetreatNetBufferDataStart

NdisRetreatNetBufferListDataStart

NdisReturnNetBufferLists

NdisSendNetBufferLists

NdisSetOptionalHandlers

NdisSetTimerObject

NdisSystemProcessorCount

NdisUnbindAdapter

NdisUnicodeStringToAnsiString

NdisUnmapFile

NdisUpcaseUnicodeString

NdisWaitEvent

NdisWriteConfiguration

NdisWriteErrorLogEntry

NdisWriteEventLogEntry

NetAllocateMdl

NetFreeMdl

 

 

Send comments about this topic to Microsoft

Build date: 5/1/2012