次の方法で共有


PCAM_PROCESS_PACKET_ROUTINE_EX コールバック関数 (usbcamdi.h)

カメラ ミニドライバーの CamProcessUSBPacketEx コールバック関数は、USB パケットを処理します。

構文

PCAM_PROCESS_PACKET_ROUTINE_EX PcamProcessPacketRoutineEx;

ULONG PcamProcessPacketRoutineEx(
  PDEVICE_OBJECT BusDeviceObject,
  PVOID DeviceContext,
  PVOID CurrentFrameContext,
  PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket,
  PVOID SyncBuffer,
  PUSBD_ISO_PACKET_DESCRIPTOR DataPacket,
  PVOID DataBuffer,
  PBOOLEAN FrameComplete,
  PULONG PacketFlag,
  PULONG ValidDataOffset
)
{...}

パラメーター

BusDeviceObject

USB ハブによって作成されたカメラ ミニドライバーのデバイス オブジェクトへのポインター。

DeviceContext

カメラ ミニドライバーのデバイス コンテキストへのポインター。

CurrentFrameContext

カメラ ミニドライバーのフレーム コンテキストへのポインター。

SyncPacket

同期パイプから USBD_ISO_PACKET_DESCRIPTOR 構造体へのポインター。 インターフェイスにパイプが 1 つしかない場合、この値は NULL です

SyncBuffer

SyncPacket のデータへのポインター。

DataPacket

データ パイプからの等時性パケット記述子を指定します。

DataBuffer

DataPacket へのポインター。

FrameComplete

カメラ ミニドライバーが新しいビデオ フレームの最初のデータ パケットかどうかを示すために設定されるブール値へのポインター。

PacketFlag

ミニドライバーが現在のフレームの内容を示すように設定する値へのポインター。 次のいずれかの値に設定する必要があります。

フラグ 説明
USBCAMD_PROCESSPACKETEX_DropFrame 現在のフレームは変更できません。 読み取り IRP はリサイクルする必要があります。
USBCAMD_PROCESSPACKETEX_NextFrameIsStill フレームは静止画像です。
USBCAMD_PROCESSPACKETEX_CurrentFrameIsStill 現在のフレームは、引き続きピン用です。

ValidDataOffset

パケットの先頭からのオフセットを示す ULONG 値へのポインター。 USBCAMD は、このオフセットからコピーを開始する必要があります。 これにより、帯域内信号の場合に余分なバッファコピーが不要になります。 カメラが帯域内シグナリングを使用していない場合は、 ValidDataOffset を 0 に設定する必要があります。

戻り値

この関数は、コピーする必要があるバイト数を返します。

注釈

ミニドライバーは、可能な限り迅速に CamProcessUSBPacketEx 関数を完了する必要があります。 画像処理は 、CamProcessRawVideoFrameEx 関数に遅延させる必要があります。

このコールバック関数は、等時性パイプでのみ使用されます (ビデオまたはストリーミング中)。

元の USBCAMD では 、CamProcessUSBPacketEx は呼び出されません。

この関数は省略可能です。

要件

要件
対象プラットフォーム デスクトップ
Header usbcamdi.h (Usbcamdi.h を含む)
IRQL DISPATCH_LEVEL

こちらもご覧ください

CamProcessRawVideoFrameEx

USBD_ISO_PACKET_DESCRIPTOR