PDEVICE_EXTENSION DeviceExtension; /* device extension */
PDEVICE_OBJECT LowerDevice; /* lower device*/
LIST_ENTRY IrpListHead; /* irp list*/
+ LIST_ENTRY DoneIrpListHead; /* irp done list head */
+ KSPIN_LOCK IrpListLock; /* irp list lock*/
PUCHAR Buffer; /* iso buffer*/
ULONG BufferSize; /* iso buffer size */
PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor; /* interface descriptor */
-
+ WORK_QUEUE_ITEM CaptureWorkItem; /* work item */
+ PKSWORKER CaptureWorker; /* capture worker */
+ WORK_QUEUE_ITEM StarvationWorkItem; /* work item */
+ PKSWORKER StarvationWorker; /* capture worker */
}PIN_CONTEXT, *PPIN_CONTEXT;
/* filter.c */
/* pin.c*/
+NTSTATUS
+NTAPI
+UsbAudioPinDataIntersect(
+ _In_ PVOID Context,
+ _In_ PIRP Irp,
+ _In_ PKSP_PIN Pin,
+ _In_ PKSDATARANGE DataRange,
+ _In_ PKSDATARANGE MatchingDataRange,
+ _In_ ULONG DataBufferSize,
+ _Out_ PVOID Data,
+ _Out_ PULONG DataSize);
+
+NTSTATUS
+NTAPI
+UsbAudioCaptureComplete(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp,
+ IN PVOID Context);
+
NTSTATUS
NTAPI
USBAudioPinCreate(