Funzione KsPinDataIntersectionEx (ks.h)

La funzione KsPinDataIntersectionEx gestisce il KSPROPERTY_PIN_DATAINTERSECTION tramite una funzione di callback.

Sintassi

KSDDKAPI NTSTATUS KsPinDataIntersectionEx(
  [in]           PIRP                    Irp,
  [in]           PKSP_PIN                Pin,
  [out]          PVOID                   Data,
  [in]           ULONG                   DescriptorsCount,
  [in]           const KSPIN_DESCRIPTOR  *Descriptor,
  [in]           ULONG                   DescriptorSize,
  [in, optional] PFNKSINTERSECTHANDLEREX IntersectHandler,
  [in, optional] PVOID                   HandlerContext
);

Parametri

[in] Irp

Specifica l'IRP che descrive la richiesta di proprietà.

[in] Pin

Specifica la proprietà specifica su cui viene eseguita una query.

[out] Data

Specifica i dati specifici della proprietà pin.

[in] DescriptorsCount

Specifica il numero di strutture del descrittore.

[in] Descriptor

Specifica il puntatore all'elenco di strutture di informazioni di aggiunta.

[in] DescriptorSize

Dimensioni delle strutture del descrittore, in byte.

[in, optional] IntersectHandler

Contiene la funzione di callback KStrIntersectHandlerEx facoltativa definita dal minidriver per confrontare gli intervalli di dati.

[in, optional] HandlerContext

Contesto facoltativo fornito al gestore.

Valore restituito

Restituisce STATUS_SUCCESS; in caso contrario, un errore specifico della proprietà gestita.

Commenti

KsPinDataIntersectionEx è molto simile a KsPinDataIntersection, ad eccezione di alcune delle piccole differenze seguenti:

  • In KsPinDataIntersectionEx vengono passate le dimensioni del descrittore, una funzionalità che consente descrittori estesi.
  • La funzione di callback di intersezione dei dati viene creata in modo diverso nella versione estesa (Callback NTSTATUS (Context, Irp, Pin, DataRange, MatchingDataRange, DataBufferSize, DataSize)) rispetto a KsPinDataIntersection (Callback NTSTATUS (Irp, Pin, DataRange, Data)).
  • La lunghezza del buffer di output (Dati) viene passata come parametro alla funzione di callback di intersezione dei dati (DataBufferSize) anziché essere estratta dalla posizione dello stack di I/O corrente.
  • La funzione di callback di intersezione dei dati viene passata a un parametro Context (lo stesso parametro Context passato a KsPinDataIntersectionEx).
  • Le dimensioni del formato risultante vengono passate di nuovo in DataSize anziché Irp->IoStatus.Information.
Queste differenze ad eccezione di KsPinDataIntersection e KsPinDataIntersectionEx funzionano in modo analogo.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione ks.h (include Ks.h)

Vedi anche

KStrIntersectHandlerEx