NdisScheduleWorkItem (Windows Embedded CE 6.0)

1/6/2010

This function inserts a given work item into a queue from which a system worker thread removes the item and gives control to the callback function that the driver previously supplied to NdisInitializeWorkItem.

Syntax

NDIS_STATUS NdisScheduleWorkItem(
  PNDIS_WORK_ITEM WorkItem
);

Parameters

  • WorkItem
    [in] Points to the work item that was set up by a preceding call to NdisInitializeWorkItem.

Return Value

None.

Remarks

A driver must not wait for its callback routine to complete an operation if it is already holding one synchronization object and might attempt to acquire another. For example, a NDIS driver should release any currently held spin locks, and so forth before it calls NdisScheduleWorkItem. A highest-level NDIS protocol driver also must release any currently held semaphores, mutexes, resource variables, and so forth before it calls NdisScheduleWorkItem. Releasing all synchronization resources before queuing a synchronous worker-thread operation prevents deadlocks.

A serialized miniport driver should never attempt to queue a worker-thread callback routine, because there is no way for such a driver to synchronize access to its NIC context areas with a worker-thread callback. Consequently, such a serialized NDIS driver cannot share anything in its per-adapter context area with a worker-thread callback function without causing intermittent system crashes.

Requirements

Header ndis.h
Windows Embedded CE Windows CE .NET 4.0 and later

See Also

Reference

NDIS Library Functions
NdisFreeMemory
NdisInitializeWorkItem