99 sizeof(PinConnectionSet) /
sizeof(KSPROPERTY_ITEM),
100 (
const KSPROPERTY_ITEM*)&PinConnectionSet,
106 sizeof(PinStreamSet) /
sizeof(KSPROPERTY_ITEM),
107 (
const KSPROPERTY_ITEM*)&PinStreamSet,
113const GUID KSPROPSETID_Connection = {0x1D58C920L, 0xAC9B, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
114const GUID KSPROPSETID_Stream = {0x65aaba60L, 0x98ae, 0x11cf, {0xa1, 0x0d, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}};
115const GUID KSPROPSETID_Clock = {0xDF12A4C0L, 0xAC17, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
148 DPRINT(
"IKsPin_PinMasterClock\n");
171 This->Pin.Descriptor->Dispatch &&
172 (
This->Pin.Descriptor->Flags & KSPIN_FLAG_IMPLEMENT_CLOCK))
198 DPRINT(
"IKsPin_PinMasterClock ObReferenceObjectByHandle %lx\n",
Status);
202 Property.Id = KSPROPERTY_CLOCK_FUNCTIONTABLE;
207 DPRINT(
"IKsPin_PinMasterClock KSPROPERTY_CLOCK_FUNCTIONTABLE %lx\n",
Status);
224 if (
This->ClockFileObject)
270 DPRINT(
"IKsPin_PinStatePropertyHandler\n");
290 *NewState =
This->Pin.DeviceState;
295 if (
This->Pin.Descriptor->Dispatch->SetDeviceState)
298 OldState =
This->Pin.ClientState;
301 This->Pin.ClientState = *NewState;
305 Status =
This->Pin.Descriptor->Dispatch->SetDeviceState(&
This->Pin, *NewState, OldState);
307 DPRINT(
"IKsPin_PinStatePropertyHandler NewState %lu Result %lx\n", *NewState,
Status);
312 This->Pin.ClientState = OldState;
313 This->Pin.DeviceState = OldState;
314 DPRINT(
"IKsPin_PinStatePropertyHandler failed to set state %lx Result %lx\n", *NewState,
Status);
320 This->Pin.DeviceState = *NewState;
326 This->Pin.DeviceState = *NewState;
327 This->Pin.ClientState = *NewState;
334 DPRINT(
"IKsPin_PinStatePropertyHandler Status %lx\n",
Status);
370 if (
This->Pin.Descriptor->AllocatorFraming)
392 Irp->IoStatus.Information =
Size;
403 DPRINT(
"IKsPin_PinAllocatorFramingPropertyHandler Status %lx\n",
Status);
423 DPRINT(
"IKsPin_PinDataFormatPropertyHandler\n");
443 Irp->IoStatus.Information =
This->Pin.ConnectionFormat->FormatSize;
455 if (
This->Pin.Descriptor->Flags & KSPIN_FLAG_FIXED_FORMAT)
476 DPRINT(
"IKsPin_PinDataFormatPropertyHandler Status %lx\n",
Status);
499 if (
This->BasicHeader.ClientAggregate)
502 Status =
This->BasicHeader.ClientAggregate->lpVtbl->QueryInterface(
This->BasicHeader.ClientAggregate, refiid,
Output);
511 DPRINT(
"IKsPin_fnQueryInterface no interface\n");
548 IN IKsTransport **OutTransport)
559 IN IKsTransport * *OutTransport)
569 IN IKsTransport * TransportIn,
570 OUT IKsTransport ** OutTransportIn,
571 OUT IKsTransport * *OutTransportOut,
584 IN IKsTransport * *OutTransport)
595 OUT IKsTransport * * OutTransportOut)
604 IN struct KSPTRANSPORTCONFIG * TransportConfig,
605 OUT IKsTransport ** OutTransportIn,
606 OUT IKsTransport ** OutTransportOut)
616 IN struct KSPTRANSPORTCONFIG
const * TransportConfig,
617 OUT IKsTransport ** OutTransportIn,
618 OUT IKsTransport ** OutTransportOut)
628 OUT IKsTransport ** OutTransportIn,
629 OUT IKsTransport ** OutTransportOut)
718 IKsReferenceClock * iface,
730 IKsReferenceClock * iface)
740 IKsReferenceClock * iface)
750 IKsReferenceClock * iface)
757 DPRINT1(
"IKsReferenceClock_fnGetTime\n");
759 if (!
This->ClockFileObject || !
This->ClockTable.GetTime)
774 IKsReferenceClock * iface)
780 DPRINT1(
"IKsReferenceClock_fnGetPhysicalTime\n");
783 if (!
This->ClockFileObject || !
This->ClockTable.GetPhysicalTime)
799 IKsReferenceClock * iface,
806 DPRINT1(
"IKsReferenceClock_fnGetCorrelatedTime\n");
808 if (!
This->ClockFileObject || !
This->ClockTable.GetCorrelatedTime)
814 Result =
This->ClockTable.GetCorrelatedTime(
This->ClockFileObject, SystemTime);
824 IKsReferenceClock * iface,
831 DPRINT1(
"IKsReferenceClock_fnGetCorrelatedPhysicalTime\n");
833 if (!
This->ClockFileObject || !
This->ClockTable.GetCorrelatedPhysicalTime)
839 Result =
This->ClockTable.GetCorrelatedPhysicalTime(
This->ClockFileObject, SystemTime);
848 IKsReferenceClock * iface,
856 DPRINT1(
"IKsReferenceClock_fnGetResolution\n");
858 if (!
This->ClockFileObject)
862 DPRINT1(
"IKsReferenceClock_fnGetResolution Using HACK\n");
867 if (!
This->ClockFileObject)
882 IKsReferenceClock * iface,
890 DPRINT1(
"IKsReferenceClock_fnGetState\n");
892 if (!
This->ClockFileObject)
895 DPRINT1(
"IKsReferenceClock_fnGetState Using HACK\n");
900 if (!
This->ClockFileObject)
954 This->AttachedGate = AndGate;
971 This->AttachedGate = OrGate;
985 return This->AttachedGate;
997 DPRINT(
"KsPinAttemptProcessing\n");
1023 IN const GUID* InterfaceId,
1061 IN const GUID* InterfaceId,
1075 OUT PKSPIN* CopySource,
1076 OUT PKSPIN* DelegateBranch)
1103 return This->BasicHeader.Parent.KsFilter;
1118 if (
This->ClockFileObject)
1121 *
Interface = (PIKSREFERENCECLOCK)&
This->lpVtblReferenceClock;
1136 IN PFNKSPINFRAMERETURN FrameReturn)
1141 This->FrameReturn = FrameReturn;
1151 IN PFNKSPINHANDSHAKE Handshake)
1156 This->Handshake = Handshake;
1166 IN PFNKSPINIRPCOMPLETION IrpCompletion)
1171 This->IrpCompletion = IrpCompletion;
1219 DPRINT(
"KsGetPinFromIrp\n");
1290 IN PKSPROCESSPIN ProcessPin)
1309 DPRINT(
"OutOfMappings\n");
1394 DPRINT(
"KsPinGetLeadingEdgeStreamPointer Pin %p State %x Count %lu Remaining %lu\n",
Pin,
State,
1395 This->LeadingEdgeStreamPointer.Length,
1396 This->LeadingEdgeStreamPointer.Offset);
1403 if (!
This->LeadingEdgeStreamPointer.Irp ||
This->LeadingEdgeStreamPointer.StreamPointer.Offset->Remaining == 0)
1410 DPRINT(
"KsPinGetLeadingEdgeStreamPointer NewOffset %lu TotalLength %lu\n",
This->LeadingEdgeStreamPointer.Offset,
This->LeadingEdgeStreamPointer.Length);
1413 return &
This->LeadingEdgeStreamPointer.StreamPointer;
1486 DPRINT1(
"KsStreamPointerAdvanceOffsets InUsed %lu OutUsed %lu Eject %lu\n", InUsed, OutUsed, Eject);
1504 DPRINT(
"KsStreamPointerDelete %p\n", Pointer);
1510 Cur =
This->ClonedStreamPointer;
1512 while(Cur != Pointer && Cur)
1528 This->ClonedStreamPointer = Pointer->
Next;
1547 IN PFNKSSTREAMPOINTER CancelCallback
OPTIONAL,
1549 OUT PKSSTREAM_POINTER* CloneStreamPointer)
1558 DPRINT(
"KsStreamPointerClone StreamPointer %p CancelCallback %p ContextSize %p CloneStreamPointer %p\n",
StreamPointer, CancelCallback,
ContextSize, CloneStreamPointer);
1573 RefCount = (
ULONG_PTR)CurFrame->
Irp->Tail.Overlay.DriverContext[0];
1577 CurFrame->
Irp->Tail.Overlay.DriverContext[0] = (
PVOID)RefCount;
1617 DPRINT(
"KsStreamPointerClone CloneStreamPointer %p\n", *CloneStreamPointer);
1638 DPRINT(
"KsStreamPointerAdvanceOffsets StreamPointer %p InUsed %lu OutUsed %lu Eject %lu\n",
StreamPointer, InUsed, OutUsed, Eject);
1651 DPRINT(
"KsStreamPointerAdvanceOffsets Offset %lu Length %lu NewOffset %lu Remaining %lu LeadingEdge %p DataUsed %lu\n", CurFrame->
Offset, CurFrame->
Length, CurFrame->
Offset + OutUsed,
1781 DPRINT(
"KsPinGetFirstCloneStreamPointer %p\n",
Pin);
1785 if (!
This->ClonedStreamPointer)
1789 return &
This->ClonedStreamPointer->StreamPointer;
1803 DPRINT(
"KsStreamPointerGetNextClone\n");
1813 return &Pointer->
Next->StreamPointer;
1824 DPRINT(
"IKsPin_PinCentricWorker\n");
1830 ASSERT(
This->Pin.Descriptor->Dispatch->Process);
1832 ASSERT(!(
This->Pin.Descriptor->Flags & KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING));
1833 ASSERT(!(
This->Pin.Descriptor->Flags & KSPIN_FLAG_GENERATE_MAPPINGS));
1837 DPRINT(
"IKsPin_PinCentricWorker calling Pin Process Routine\n");
1840 DPRINT(
"IKsPin_PinCentricWorker Status %lx, Offset %lu Length %lu\n",
Status,
1841 This->LeadingEdgeStreamPointer.Offset,
1842 This->LeadingEdgeStreamPointer.Length);
1845 }
while(
This->IrpCount);
1863 DPRINT(
"IKsPin_DispatchKsStream\n");
1873 Status =
KsProbeStreamIrp(
Irp, KSSTREAM_WRITE | KSPROBE_ALLOCATEMDL | KSPROBE_PROBEANDLOCK | KSPROBE_SYSTEMADDRESS,
This->Pin.StreamHeaderSize);
1875 Status =
KsProbeStreamIrp(
Irp, KSSTREAM_READ | KSPROBE_ALLOCATEMDL | KSPROBE_PROBEANDLOCK | KSPROBE_SYSTEMADDRESS,
This->Pin.StreamHeaderSize);
1893 DPRINT(
"NoHeader Canceling Irp %p\n",
Irp);
1916 DPRINT(
"NoHeader->Data Canceling Irp %p\n",
Irp);
1926 if (
This->Pin.Descriptor->Dispatch->Process)
1937 ASSERT(!(
This->Pin.Descriptor->Flags & KSPIN_FLAG_DISPATCH_LEVEL_PROCESSING));
1942 DPRINT(
"IKsPin_DispatchKsStream IrpCount %lu\n",
This->IrpCount);
1954 ProcessPinIndex =
This->Filter->lpVtbl->GetProcessDispatch(
This->Filter);
1962 if (!
Filter->Descriptor->Dispatch->Process)
1965 DPRINT(
"Filter Centric Processing No Process Routine\n");
1979 DPRINT(
"IKsPin_DispatchKsStream FilterCentric: Status %lx \n",
Status);
2028 ASSERT(
This->Pin.Descriptor->AutomationTable);
2037 const KSMETHOD_SET *MethodSet =
NULL;
2038 ULONG MethodItemSize = 0;
2041 if (
This->Pin.Descriptor->AutomationTable->MethodSetsCount)
2043 SetCount =
This->Pin.Descriptor->AutomationTable->MethodSetsCount;
2044 MethodSet =
This->Pin.Descriptor->AutomationTable->MethodSets;
2045 MethodItemSize =
This->Pin.Descriptor->AutomationTable->MethodItemSize;
2053 const KSPROPERTY_SET *PropertySet =
NULL;
2054 ULONG PropertyItemSize = 0;
2057 if (
This->Pin.Descriptor->AutomationTable->PropertySetsCount)
2059 SetCount =
This->Pin.Descriptor->AutomationTable->PropertySetsCount;
2060 PropertySet =
This->Pin.Descriptor->AutomationTable->PropertySets;
2061 PropertyItemSize =
This->Pin.Descriptor->AutomationTable->PropertyItemSize;
2065 KSPROPERTY_ITEM_IRP_STORAGE(
Irp) = (KSPROPERTY_ITEM*)
This;
2080 This->Pin.Descriptor->AutomationTable->EventSetsCount,
2081 (PKSEVENT_SET)
This->Pin.Descriptor->AutomationTable->EventSets,
2082 &
This->BasicHeader.EventList,
2084 (
PVOID)&
This->BasicHeader.EventListLock,
2086 This->Pin.Descriptor->AutomationTable->EventItemSize);
2133 if (
This->Pin.Descriptor->Dispatch->Close)
2184 PKSOBJECT_CREATE_ITEM CreateItem;
2186 DPRINT(
"IKsPin_DispatchCreateClock\n");
2189 CreateItem = KSCREATE_ITEM_IRP_STORAGE(
Irp);
2195 Pin = (PKSPIN)CreateItem->Context;
2211 This->Pin.Descriptor->Dispatch) ||
2212 (
This->Pin.Descriptor->Flags & KSPIN_FLAG_IMPLEMENT_CLOCK))
2214 if (!
This->DefaultClock)
2216 if (
This->Pin.Descriptor->Dispatch &&
This->Pin.Descriptor->Dispatch->Clock)
2218 if (
This->Pin.Descriptor->Dispatch->Clock->Resolution)
2226 (PFNKSSETTIMER)
This->Pin.Descriptor->Dispatch->Clock->SetTimer,
2227 (PFNKSCANCELTIMER)
This->Pin.Descriptor->Dispatch->Clock->CancelTimer,
2228 (PFNKSCORRELATEDTIME)
This->Pin.Descriptor->Dispatch->Clock->CorrelatedTime,
2286 IN PKSDEVICE KsDevice,
2287 IN IKsFilterFactory * FilterFactory,
2296 PKSOBJECT_CREATE_ITEM CreateItem;
2301 ULONG FrameSize = 0;
2302 ULONG NumFrames = 0;
2303 KSAUTOMATION_TABLE AutomationTable;
2314 DPRINT(
"KspCreatePin Communication %lu\n",
Descriptor->PinDescriptor.Communication);
2317 DPRINT(
"KspCreatePin CountItems %lu\n",
Descriptor->AllocatorFraming->CountItems);
2318 DPRINT(
"KspCreatePin PinFlags %lx\n",
Descriptor->AllocatorFraming->PinFlags);
2319 DPRINT(
"KspCreatePin OutputCompression RatioNumerator %lu RatioDenominator %lu RatioConstantMargin %lu\n",
Descriptor->AllocatorFraming->OutputCompression.RatioNumerator,
2320 Descriptor->AllocatorFraming->OutputCompression.RatioDenominator,
Descriptor->AllocatorFraming->OutputCompression.RatioConstantMargin);
2321 DPRINT(
"KspCreatePin PinWeight %lx\n",
Descriptor->AllocatorFraming->PinWeight);
2330 DPRINT(
"KspCreatePin Index %lu MemoryTypeWeight %lx\n",
Index,
Descriptor->AllocatorFraming->FramingItem[
Index].MemoryTypeWeight);
2331 DPRINT(
"KspCreatePin Index %lu PhysicalRange MinFrameSize %lu MaxFrameSize %lu Stepping %lu\n",
Index,
Descriptor->AllocatorFraming->FramingItem[
Index].PhysicalRange.MinFrameSize,
2332 Descriptor->AllocatorFraming->FramingItem[
Index].PhysicalRange.MaxFrameSize,
2333 Descriptor->AllocatorFraming->FramingItem[
Index].PhysicalRange.Stepping);
2335 DPRINT(
"KspCreatePin Index %lu FramingRange MinFrameSize %lu MaxFrameSize %lu Stepping %lu InPlaceWeight %lu NotInPlaceWeight %lu\n",
2337 Descriptor->AllocatorFraming->FramingItem[
Index].FramingRange.Range.MinFrameSize,
2338 Descriptor->AllocatorFraming->FramingItem[
Index].FramingRange.Range.MaxFrameSize,
2339 Descriptor->AllocatorFraming->FramingItem[
Index].FramingRange.Range.Stepping,
2340 Descriptor->AllocatorFraming->FramingItem[
Index].FramingRange.InPlaceWeight,
2341 Descriptor->AllocatorFraming->FramingItem[
Index].FramingRange.NotInPlaceWeight);
2343 FrameSize =
Descriptor->AllocatorFraming->FramingItem[
Index].FramingRange.Range.MaxFrameSize;
2359 DPRINT(
"Index %lu FormatSize %lu Flags %lu SampleSize %lu Reserved %lu KSDATAFORMAT %lu\n",
Index,
2389 Device = (IKsDevice*)&DeviceExtension->DeviceHeader->BasicHeader.OuterUnknown;
2405 DPRINT(
"KspCreatePin OutOfMemory\n");
2410 This->BasicHeader.KsDevice = KsDevice;
2428 This->FrameSize = FrameSize;
2429 This->NumFrames = NumFrames;
2453 if (!
This->Pin.Descriptor)
2466 RtlZeroMemory(&AutomationTable,
sizeof(KSAUTOMATION_TABLE));
2468 AutomationTable.PropertyItemSize =
sizeof(KSPROPERTY_ITEM);
2470 AutomationTable.PropertySetsCount =
sizeof(
PinPropertySet) /
sizeof(KSPROPERTY_SET);
2490 This->Pin.Communication =
Descriptor->PinDescriptor.Communication;
2518 CreateItem[0].Context = (
PVOID)&
This->Pin;
2520 CreateItem[0].Flags = KSCREATE_ITEM_FREEONSTOP;
2524 CreateItem[1].Context = (
PVOID)&
This->Pin;
2526 CreateItem[1].Flags = KSCREATE_ITEM_FREEONSTOP;
2530 CreateItem[2].Context = (
PVOID)&
This->Pin;
2532 CreateItem[2].Flags = KSCREATE_ITEM_FREEONSTOP;
2540 DPRINT(
"KspCreatePin KsAllocateObjectHeader failed %lx\n",
Status);
2559 This->ProcessPin.BytesAvailable = 0;
2560 This->ProcessPin.BytesUsed = 0;
2561 This->ProcessPin.CopySource =
NULL;
2563 This->ProcessPin.DelegateBranch =
NULL;
2564 This->ProcessPin.Flags = 0;
2565 This->ProcessPin.InPlaceCounterpart =
NULL;
2567 This->ProcessPin.StreamPointer = (PKSSTREAM_POINTER)&
This->LeadingEdgeStreamPointer.StreamPointer;
2605 This->LeadingEdgeStreamPointer.StreamPointer.Offset = &
This->LeadingEdgeStreamPointer.StreamPointer.OffsetIn;
2607 This->LeadingEdgeStreamPointer.StreamPointer.Offset = &
This->LeadingEdgeStreamPointer.StreamPointer.OffsetOut;
2633 DPRINT(
"KspCreatePin Status %lx KsDevice %p\n",
Status, KsDevice);
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define InterlockedIncrement
#define InterlockedDecrement
KSDDKAPI VOID NTAPI KsFreeObjectBag(IN KSOBJECT_BAG ObjectBag)
KSDDKAPI NTSTATUS NTAPI _KsEdit(IN KSOBJECT_BAG ObjectBag, IN OUT PVOID *PointerToPointerToItem, IN ULONG NewSize, IN ULONG OldSize, IN ULONG Tag)
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultClock(IN PIRP Irp, IN PKSDEFAULTCLOCK DefaultClock)
KSDDKAPI NTSTATUS NTAPI KsAllocateDefaultClockEx(OUT PKSDEFAULTCLOCK *DefaultClock, IN PVOID Context OPTIONAL, IN PFNKSSETTIMER SetTimer OPTIONAL, IN PFNKSCANCELTIMER CancelTimer OPTIONAL, IN PFNKSCORRELATEDTIME CorrelatedTime OPTIONAL, IN const KSRESOLUTION *Resolution OPTIONAL, IN ULONG Flags)
KSDATAFORMAT * PKSDATAFORMAT
#define NT_SUCCESS(StatCode)
struct _BEEP_DEVICE_EXTENSION * PDEVICE_EXTENSION
NTSTATUS NTAPI CompleteRequest(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
static VOID Wake(_In_ UCHAR Csn)
NTSTATUS NTAPI KsMergeAutomationTables(OUT PKSAUTOMATION_TABLE *AutomationTableAB, IN PKSAUTOMATION_TABLE AutomationTableA OPTIONAL, IN PKSAUTOMATION_TABLE AutomationTableB OPTIONAL, IN KSOBJECT_BAG Bag OPTIONAL)
KSDDKAPI VOID NTAPI KsAcquireControl(IN PVOID Object)
KSDDKAPI VOID NTAPI KsFreeObjectHeader(IN PVOID Header)
VOID NTAPI KsReleaseControl(IN PVOID Object)
KSDDKAPI NTSTATUS NTAPI KsSynchronousIoControlDevice(IN PFILE_OBJECT FileObject, IN KPROCESSOR_MODE RequestorMode, IN ULONG IoControl, IN PVOID InBuffer, IN ULONG InSize, OUT PVOID OutBuffer, IN ULONG OutSize, OUT PULONG BytesReturned)
KSDDKAPI PVOID NTAPI KsGetNextSibling(IN PVOID Object)
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectHeader(OUT KSOBJECT_HEADER *Header, IN ULONG ItemsCount, IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL, IN PIRP Irp, IN KSDISPATCH_TABLE *Table)
KSDDKAPI NTSTATUS NTAPI KsDisableEvent(IN PIRP Irp, IN OUT PLIST_ENTRY EventsList, IN KSEVENTS_LOCKTYPE EventsFlags, IN PVOID EventsLock)
NTSTATUS KspEnableEvent(IN PIRP Irp, IN ULONG EventSetsCount, IN const KSEVENT_SET *EventSet, IN OUT PLIST_ENTRY EventsList OPTIONAL, IN KSEVENTS_LOCKTYPE EventsFlags OPTIONAL, IN PVOID EventsLock OPTIONAL, IN PFNKSALLOCATOR Allocator OPTIONAL, IN ULONG EventItemSize OPTIONAL)
VOID IKsFilter_AddPin(PKSFILTER Filter, PKSPIN Pin)
VOID IKsFilter_RemovePin(PKSFILTER Filter, PKSPIN Pin)
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI VOID NTAPI KsAddIrpToCancelableQueue(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock, IN PIRP Irp, IN KSLIST_ENTRY_LOCATION ListLocation, IN PDRIVER_CANCEL DriverCancel OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KsProbeStreamIrp(IN PIRP Irp, IN ULONG ProbeFlags, IN ULONG HeaderSize)
KSDDKAPI BOOLEAN NTAPI KsDispatchFastReadFailure(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN BOOLEAN Wait, IN ULONG LockKey, OUT PVOID Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
KSDDKAPI NTSTATUS NTAPI KsDispatchSetSecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI NTSTATUS NTAPI KsDispatchQuerySecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI BOOLEAN NTAPI KsDispatchFastIoDeviceControlFailure(IN PFILE_OBJECT FileObject, IN BOOLEAN Wait, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength, IN ULONG IoControlCode, OUT PIO_STATUS_BLOCK IoStatus, IN PDEVICE_OBJECT DeviceObject)
KSDDKAPI PIRP NTAPI KsRemoveIrpFromCancelableQueue(IN OUT PLIST_ENTRY QueueHead, IN PKSPIN_LOCK SpinLock, IN KSLIST_ENTRY_LOCATION ListLocation, IN KSIRP_REMOVAL_OPERATION RemovalOperation)
NTSTATUS NTAPI IKsPin_DispatchDeviceIoControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PKSFILTER NTAPI KsPinGetParentFilter(IN PKSPIN Pin)
VOID NTAPI IKsPin_fnGenerateConnectionEvents(IN IKsPin *iface, IN ULONG EventMask)
ULONG NTAPI IKsPin_fnAddRef(IKsPin *iface)
KSDDKAPI NTSTATUS NTAPI KsStreamPointerLock(IN PKSSTREAM_POINTER StreamPointer)
NTSTATUS NTAPI IKsPin_fnSetTransportConfig(IN IKsPin *iface, IN struct KSPTRANSPORTCONFIG const *TransportConfig, OUT IKsTransport **OutTransportIn, OUT IKsTransport **OutTransportOut)
LONGLONG NTAPI IKsReferenceClock_fnGetTime(IKsReferenceClock *iface)
VOID NTAPI KsPinRegisterIrpCompletionCallback(IN PKSPIN Pin, IN PFNKSPINIRPCOMPLETION IrpCompletion)
VOID NTAPI KsPinRegisterPowerCallbacks(IN PKSPIN Pin, IN PFNKSPINPOWER Sleep OPTIONAL, IN PFNKSPINPOWER Wake OPTIONAL)
NTSTATUS NTAPI IKsPin_Close(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSDDKAPI VOID NTAPI KsStreamPointerAdvanceOffsetsAndUnlock(IN PKSSTREAM_POINTER StreamPointer, IN ULONG InUsed, IN ULONG OutUsed, IN BOOLEAN Eject)
NTSTATUS NTAPI IKsPin_fnQueryInterface(IKsPin *iface, IN REFIID refiid, OUT PVOID *Output)
struct _KSISTREAM_POINTER * PKSISTREAM_POINTER
const GUID KSPROPSETID_Stream
KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetFirstCloneStreamPointer(IN PKSPIN Pin)
NTSTATUS NTAPI IKsPin_fnConnect(IN IKsPin *iface, IN IKsTransport *TransportIn, OUT IKsTransport **OutTransportIn, OUT IKsTransport **OutTransportOut, IN KSPIN_DATAFLOW DataFlow)
NTSTATUS NTAPI IKsPin_PinDataFormatPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
KSDDKAPI PKSPIN NTAPI KsGetPinFromIrp(IN PIRP Irp)
const GUID KSPROPSETID_Connection
NTSTATUS NTAPI IKsPin_PinPipeId(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
KSDDKAPI PKSSTREAM_POINTER NTAPI KsStreamPointerGetNextClone(IN PKSSTREAM_POINTER StreamPointer)
NTSTATUS NTAPI IKsPin_fnResetTransportConfig(IN IKsPin *iface, OUT IKsTransport **OutTransportIn, OUT IKsTransport **OutTransportOut)
KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvance(IN PKSSTREAM_POINTER StreamPointer)
KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetLeadingEdgeStreamPointer(IN PKSPIN Pin, IN KSSTREAM_POINTER_STATE State)
NTSTATUS NTAPI IKsPin_PinAllocatorFramingPropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
KSDDKAPI NTSTATUS NTAPI KsStreamPointerClone(IN PKSSTREAM_POINTER StreamPointer, IN PFNKSSTREAMPOINTER CancelCallback OPTIONAL, IN ULONG ContextSize, OUT PKSSTREAM_POINTER *CloneStreamPointer)
VOID NTAPI KsPinAttemptProcessing(IN PKSPIN Pin, IN BOOLEAN Asynchronous)
LONGLONG NTAPI IKsReferenceClock_fnGetCorrelatedPhysicalTime(IKsReferenceClock *iface, OUT PLONGLONG SystemTime)
VOID NTAPI KsPinGetCopyRelationships(IN PKSPIN Pin, OUT PKSPIN *CopySource, OUT PKSPIN *DelegateBranch)
KSPROPERTY_SET PinPropertySet[]
NTSTATUS IKsPin_PrepareStreamHeader(IN IKsPinImpl *This, IN PKSISTREAM_POINTER StreamPointer)
NTSTATUS NTAPI KsPinGetConnectedPinInterface(IN PKSPIN Pin, IN const GUID *InterfaceId, OUT PVOID *Interface)
LONGLONG NTAPI IKsReferenceClock_fnGetCorrelatedTime(IKsReferenceClock *iface, OUT PLONGLONG SystemTime)
VOID NTAPI IKsPin_PinCentricWorker(IN PVOID Parameter)
VOID NTAPI KsPinAttachOrGate(IN PKSPIN Pin, IN PKSGATE OrGate OPTIONAL)
NTSTATUS NTAPI IKsPin_fnAttemptUnbypass(IN IKsPin *iface)
PFILE_OBJECT NTAPI KsPinGetConnectedPinFileObject(IN PKSPIN Pin)
KSDDKAPI VOID NTAPI KsStreamPointerCancelTimeout(IN PKSSTREAM_POINTER StreamPointer)
KSDDKAPI BOOLEAN NTAPI KsProcessPinUpdate(IN PKSPROCESSPIN ProcessPin)
ULONG NTAPI IKsReferenceClock_fnAddRef(IKsReferenceClock *iface)
static IKsReferenceClockVtbl vt_ReferenceClock
struct _KSISTREAM_POINTER KSISTREAM_POINTER
NTSTATUS NTAPI IKsPin_PinStreamAllocator(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
KSDDKAPI NTSTATUS NTAPI KsStreamPointerSetStatusCode(IN PKSSTREAM_POINTER StreamPointer, IN NTSTATUS Status)
PKSGATE NTAPI KsPinGetAndGate(IN PKSPIN Pin)
VOID NTAPI KsPinRegisterHandshakeCallback(IN PKSPIN Pin, IN PFNKSPINHANDSHAKE Handshake)
const GUID KSPROPSETID_Clock
VOID NTAPI KsPinAttachAndGate(IN PKSPIN Pin, IN PKSGATE AndGate OPTIONAL)
NTSTATUS NTAPI IKsReferenceClock_fnGetState(IKsReferenceClock *iface, OUT PKSSTATE State)
KSDDKAPI PKSSTREAM_POINTER NTAPI KsPinGetTrailingEdgeStreamPointer(IN PKSPIN Pin, IN KSSTREAM_POINTER_STATE State)
VOID NTAPI IKsPin_fnSetResetState(IN IKsPin *iface, IN KSRESET ResetState, OUT IKsTransport **OutTransportOut)
VOID NTAPI KsPinReleaseProcessingMutex(IN PKSPIN Pin)
KSDDKAPI VOID NTAPI KsStreamPointerUnlock(IN PKSSTREAM_POINTER StreamPointer, IN BOOLEAN Eject)
PKSPIN NTAPI KsPinGetNextSiblingPin(IN PKSPIN Pin)
KSDDKAPI NTSTATUS NTAPI KsPinSubmitFrameMdl(IN PKSPIN Pin, IN PMDL Mdl OPTIONAL, IN PKSSTREAM_HEADER StreamHeader OPTIONAL, IN PVOID Context OPTIONAL)
NTSTATUS NTAPI IKsPin_fnTransferKsIrp(IN IKsPin *iface, IN PIRP Irp, IN IKsTransport **OutTransport)
static IKsPinVtbl vt_IKsPin
NTSTATUS NTAPI IKsPin_fnAttemptBypass(IN IKsPin *iface)
PKSPROCESSPIN NTAPI IKsPin_fnGetProcessPin(IN IKsPin *iface)
KSDDKAPI PIRP NTAPI KsStreamPointerGetIrp(IN PKSSTREAM_POINTER StreamPointer, OUT PBOOLEAN FirstFrameInIrp OPTIONAL, OUT PBOOLEAN LastFrameInIrp OPTIONAL)
VOID NTAPI KsPinAcquireProcessingMutex(IN PKSPIN Pin)
PKSPIN NTAPI IKsPin_fnGetStruct(IN IKsPin *iface)
NTSTATUS NTAPI KsPinGetAvailableByteCount(IN PKSPIN Pin, OUT PLONG InputDataBytes OPTIONAL, OUT PLONG OutputBufferBytes OPTIONAL)
VOID NTAPI IKsPin_fnDiscardKsIrp(IN IKsPin *iface, IN PIRP Irp, IN IKsTransport **OutTransport)
NTSTATUS KspCreatePin(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PKSDEVICE KsDevice, IN IKsFilterFactory *FilterFactory, IN IKsFilter *Filter, IN PKSPIN_CONNECT Connect, IN KSPIN_DESCRIPTOR_EX *Descriptor)
NTSTATUS NTAPI IKsPin_PinMasterClock(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
NTSTATUS NTAPI IKsPin_DispatchCreateClock(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PDEVICE_OBJECT NTAPI KsPinGetConnectedPinDeviceObject(IN PKSPIN Pin)
NTSTATUS NTAPI KsPinGetReferenceClockInterface(IN PKSPIN Pin, OUT PIKSREFERENCECLOCK *Interface)
NTSTATUS NTAPI IKsPin_fnClientSetDeviceState(IN IKsPin *iface, IN KSSTATE StateIn, IN KSSTATE StateOut)
NTSTATUS NTAPI KsPinGetConnectedFilterInterface(IN PKSPIN Pin, IN const GUID *InterfaceId, OUT PVOID *Interface)
VOID NTAPI KsPinRegisterFrameReturnCallback(IN PKSPIN Pin, IN PFNKSPINFRAMERETURN FrameReturn)
KSDDKAPI PMDL NTAPI KsStreamPointerGetMdl(IN PKSSTREAM_POINTER StreamPointer)
NTSTATUS NTAPI KsPinSubmitFrame(IN PKSPIN Pin, IN PVOID Data OPTIONAL, IN ULONG Size OPTIONAL, IN PKSSTREAM_HEADER StreamHeader OPTIONAL, IN PVOID Context OPTIONAL)
VOID NTAPI KsPinSetPinClockTime(IN PKSPIN Pin, IN LONGLONG Time)
KSDDKAPI NTSTATUS NTAPI KsStreamPointerAdvanceOffsets(IN PKSSTREAM_POINTER StreamPointer, IN ULONG InUsed, IN ULONG OutUsed, IN BOOLEAN Eject)
NTSTATUS NTAPI IKsPin_fnSetDeviceState(IN IKsPin *iface, IN KSSTATE OldState, IN KSSTATE NewState, IN IKsTransport **OutTransport)
NTSTATUS NTAPI IKsPin_DispatchCreateAllocator(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IKsPin_DispatchKsStream(PDEVICE_OBJECT DeviceObject, PIRP Irp, IKsPinImpl *This)
ULONG NTAPI IKsReferenceClock_fnRelease(IKsReferenceClock *iface)
NTSTATUS NTAPI IKsPin_DispatchCreateNode(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
LONGLONG NTAPI IKsReferenceClock_fnGetPhysicalTime(IKsReferenceClock *iface)
KSDDKAPI VOID NTAPI KsStreamPointerScheduleTimeout(IN PKSSTREAM_POINTER StreamPointer, IN PFNKSSTREAMPOINTER Callback, IN ULONGLONG Interval)
NTSTATUS NTAPI IKsPin_fnGetTransportConfig(IN IKsPin *iface, IN struct KSPTRANSPORTCONFIG *TransportConfig, OUT IKsTransport **OutTransportIn, OUT IKsTransport **OutTransportOut)
ULONG NTAPI IKsPin_fnRelease(IKsPin *iface)
NTSTATUS NTAPI IKsReferenceClock_fnGetResolution(IKsReferenceClock *iface, OUT PKSRESOLUTION Resolution)
NTSTATUS NTAPI IKsPin_PinStatePropertyHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data)
NTSTATUS NTAPI IKsReferenceClock_fnQueryInterface(IKsReferenceClock *iface, IN REFIID refiid, OUT PVOID *Output)
static KSDISPATCH_TABLE PinDispatchTable
KSDDKAPI VOID NTAPI KsStreamPointerDelete(IN PKSSTREAM_POINTER StreamPointer)
#define DEFINE_KSPROPERTY_STREAMSET(PinSet, PropStreamAllocator, PropMasterClock, PropPipeId)
#define DEFINE_KSPROPERTY_CONNECTIONSET(PinSet, PropStateHandler, PropDataFormatHandler, PropAllocatorFraming)
#define KSPROPERTY_TYPE_SET
struct KSIDENTIFIER * PKSPROPERTY
#define KSPROPERTY_TYPE_GET
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeGetCurrentIrql()
#define InitializeListHead(ListHead)
#define KeInitializeSpinLock(sl)
#define ExGetPreviousMode
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
_Must_inspect_result_ _In_ FLT_CONTEXT_TYPE _In_ SIZE_T ContextSize
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
NTSYSAPI void WINAPI DbgBreakPoint(void)
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
long __cdecl _InterlockedIncrement(_Interlocked_operand_ long volatile *_Addend)
POBJECT_TYPE IoFileObjectType
#define KSSTRING_Allocator
struct _KSPROCESSPIN_INDEXENTRY * PKSPROCESSPIN_INDEXENTRY
struct KSSTREAM_HEADER * PKSSTREAM_HEADER
#define IOCTL_KS_PROPERTY
#define KSSTRING_TopologyNode
@ KSPIN_COMMUNICATION_NONE
@ KsAcquireAndRemoveOnlySingleItem
_In_ PKSPIN_CONNECT Connect
#define IOCTL_KS_READ_STREAM
@ KSPROPERTY_CLOCK_RESOLUTION
@ KSSTREAM_POINTER_STATE_LOCKED
#define IOCTL_KS_ENABLE_EVENT
#define IOCTL_KS_WRITE_STREAM
#define IOCTL_KS_DISABLE_EVENT
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
NTSTATUS KspPropertyHandler(IN PIRP Irp, IN ULONG PropertySetsCount, IN const KSPROPERTY_SET *PropertySet, IN PFNKSALLOCATOR Allocator OPTIONAL, IN ULONG PropertyItemSize OPTIONAL)
NTSTATUS NTAPI KspMethodHandlerWithAllocator(IN PIRP Irp, IN ULONG MethodSetsCount, IN const KSMETHOD_SET *MethodSet, IN PFNKSALLOCATOR Allocator OPTIONAL, IN ULONG MethodItemSize OPTIONAL)
VOID FreeItem(IN PVOID Item)
struct KSBASIC_HEADER * PKSBASIC_HEADER
struct KSIOBJECT_HEADER * PKSIOBJECT_HEADER
static PLARGE_INTEGER Time
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
__GNU_EXTENSION typedef __int64 * PLONGLONG
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID NTAPI KeInitializeMutex(IN PKMUTEX Mutex, IN ULONG Level)
LONG NTAPI KeReleaseMutex(IN PKMUTEX Mutex, IN BOOLEAN Wait)
_In_ SYSTEM_POWER_STATE _In_ ULONG _In_ BOOLEAN Asynchronous
#define STATUS_NOT_SUPPORTED
#define STATUS_NOT_IMPLEMENTED
NTSTATUS NTAPI ObReferenceObjectByHandle(IN HANDLE Handle, IN ACCESS_MASK DesiredAccess, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode, OUT PVOID *Object, OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL)
#define STATUS_DEVICE_NOT_READY
#define STATUS_BUFFER_TOO_SMALL
#define STATUS_BUFFER_OVERFLOW
PULONG MinorVersion OPTIONAL
PKSISTREAM_POINTER ClonedStreamPointer
PFNKSPINFRAMERETURN FrameReturn
PKSDEFAULTCLOCK DefaultClock
KSISTREAM_POINTER TrailingStreamPointer
PKSIOBJECT_HEADER ObjectHeader
PFNKSPINHANDSHAKE Handshake
KSCLOCK_FUNCTIONTABLE ClockTable
WORK_QUEUE_ITEM PinWorkQueueItem
KSBASIC_HEADER BasicHeader
PFNKSPINIRPCOMPLETION IrpCompletion
KSISTREAM_POINTER LeadingEdgeStreamPointer
IKsReferenceClockVtbl * lpVtblReferenceClock
PFILE_OBJECT ClockFileObject
KSPIN_INTERFACE Interface
struct _IO_STACK_LOCATION::@1575::@1576 DeviceIoControl
union _IO_STACK_LOCATION::@1575 Parameters
KSSTREAM_POINTER StreamPointer
struct _KSISTREAM_POINTER * Next
PFNKSSTREAMPOINTER Callback
REFERENCE_TIME AvgTimePerFrame
ULONG ulcbPhyiscalFrameAlignment
BDA_TRANSPORT_INFO BdaTransportInfo
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
BOOLEAN NTAPI KeSetTimer(IN OUT PKTIMER Timer, IN LARGE_INTEGER DueTime, IN PKDPC Dpc OPTIONAL)
BOOLEAN NTAPI KeCancelTimer(IN OUT PKTIMER Timer)
#define FIELD_OFFSET(t, f)
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_UNSUCCESSFUL
#define STATUS_INVALID_DEVICE_STATE
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ WDFDEVICE _In_ PVOID _In_opt_ PMDL Mdl
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_ ULONG _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesReturned
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_In_ WDFTIMER _In_ LONGLONG DueTime
#define IsEqualGUIDAligned(guid1, guid2)
KSDDKAPI ULONG NTAPI KsDecrementCountedWorker(IN PKSWORKER Worker)
KSDDKAPI ULONG NTAPI KsIncrementCountedWorker(IN PKSWORKER Worker)
KSDDKAPI NTSTATUS NTAPI KsRegisterCountedWorker(IN WORK_QUEUE_TYPE WorkQueueType, IN PWORK_QUEUE_ITEM CountedWorkItem, OUT PKSWORKER *Worker)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
#define ExInitializeWorkItem(Item, Routine, Context)
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
#define ObDereferenceObject
_Inout_opt_ PVOID Parameter