KsPinAttemptProcessing function (ks.h)

The KsPinAttemptProcessing function is used to resume processing on a specific pin on a pin-centric filter. It attempts to initiate processing on Pin by sending a processing dispatch call to Pin's processing object.

Syntax

void KsPinAttemptProcessing(
  [in] PKSPIN  Pin,
  [in] BOOLEAN Asynchronous
);

Parameters

[in] Pin

A pointer to a KSPIN structure that represents the AVStream pin object on which to attempt processing.

Warning

This parameter is mandatory. If you call KsPinAttemptProcessing with a Pin value of NULL, system instability may result.

[in] Asynchronous

This parameter indicates the minidriver's preference whether the processing should occur synchronously or asynchronously. If TRUE, processing is always asynchronous. However, synchronous processing only happens under certain circumstances. For more information, see the Remarks section below.

Return value

None

Remarks

A minidriver may need to call KsPinAttemptProcessing to resume processing in various situations. For example, if the client has shut off the processing control gate with KsGateTurnInputOff, call this function when ready to attempt processing. Note that this only causes a processing dispatch if the process control gate is in the open state. Another situation involves the minidriver having previously returning STATUS_PENDING to a processing dispatch. For more details, see Restarting Processing in AVStream and Flow Control Gates in AVStream.

The processing dispatch occurs either synchronously or asynchronously, and only if the processing control gate is open. The Asynchronous flag specifies the minidriver's preference. If the minidriver requests an asynchronous process dispatch, the dispatch is always asynchronous. However, even if the caller sets Asynchronous to FALSE, a synchronous dispatch only occurs if the system is currently running at an IRQL less than the maximum processing IRQL. In other words, if the minidriver does not specify dispatch level processing and the call is made at IRQL = DISPATCH_LEVEL, then the call occurs in an asynchronous work item at PASSIVE_LEVEL regardless of the value of Asynchronous. For more information, see Filter-Centric Processing and Pin-Centric Processing.

Requirements

Requirement Value
Target Platform Universal
Header ks.h (include Ks.h)
Library Ks.lib
IRQL <=DISPATCH_LEVEL (See Remarks)

See also

KSFILTER_DISPATCH

KsFilterAttemptProcessing

KsGateCaptureThreshold