FilterPause (Compact 2013)
3/26/2014
NDIS calls a filter driver's FilterPause function to begin a pause operation for the specified filter module.
Syntax
NDIS_STATUS
FilterPause(
IN NDIS_HANDLE FilterModuleContext,
IN PNDIS_FILTER_PAUSE_PARAMETERS FilterPauseParameters
);
Parameters
- FilterModuleContext
A handle to the context area for the filter module that the filter driver should pause. The filter driver created and initialized this context area in the FilterAttach function.
- FilterPauseParameters
A pointer to an NDIS_FILTER_PAUSE_PARAMETERS structure that defines the pause parameters for the filter module.
Return Value
NDIS drivers cannot fail a pause request. The filter driver should call the NdisWriteEventLogEntry function together with parameters that specify the reason for any errors that occur.
FilterPause returns one of the following status values:
Value |
Description |
---|---|
NDIS_STATUS_SUCCESS |
FilterPause successfully paused the specified filter module. |
NDIS_STATUS_PENDING |
The filter driver will complete the request asynchronously with a call to the NdisFPauseComplete function. |
Remarks
FilterPause is a required function. NDIS can call FilterPause when the filter module is in the Running state. The filter module enters the Pausing state at the start of execution in the FilterPause function.
A filter driver performs the following operations when NDIS calls FilterPause:
- Must call the NdisFSendNetBufferListsComplete function for any queued send buffers that an overlying driver created.
- Must call the NdisFReturnNetBufferLists function for any queued receive buffers that an underlying driver created.
- Must wait for NDIS to return all outstanding send requests that the driver originated to the FilterSendNetBufferListsComplete function.
- Must wait for NDIS to return all outstanding receive indications that the driver originated to the FilterReturnNetBufferLists function.
After the filter driver returns NDIS_STATUS_SUCCESS from FilterPause or calls the NdisFPauseComplete function, the pause operation is complete. The filter module is in the Paused state.
In the Pausing or Paused states, a filter driver should continue to handle OID requests or status indications. The driver should reject calls to its FilterSendNetBufferLists function. The driver can pass on calls to its FilterReceiveNetBufferLists function. However, the driver cannot pass any buffers that it created. The driver must not originate any receive indications or send requests.
In the Paused state, the filter module must not generate send requests or receive indications.
NDIS calls the FilterRestart function to initiate a restart request for a filter module that is in the Paused state.
NDIS calls FilterPause at IRQL = PASSIVE_LEVEL.
Requirements
Header |
filter.h |
See Also
Reference
NDIS Filter Driver Functions
FilterAttach
FilterReceiveNetBufferLists
FilterRestart
FilterReturnNetBufferLists
FilterSendNetBufferLists
FilterSendNetBufferListsComplete
NDIS_FILTER_PAUSE_PARAMETERS
NDIS_OBJECT_HEADER
NdisFPauseComplete
NdisFReturnNetBufferLists
NdisFSendNetBufferListsComplete