diff --git a/reactos/include/ddk/drmk.h b/reactos/include/ddk/drmk.h index 2c400b436da..5d0fc75f206 100644 --- a/reactos/include/ddk/drmk.h +++ b/reactos/include/ddk/drmk.h @@ -35,40 +35,47 @@ extern "C" { #endif -NTAPI NTSTATUS +NTSTATUS +NTAPI DrmAddContentHandlers( IN ULONG ContentId, IN PVOID *paHandlers, IN ULONG NumHandlers); -NTAPI NTSTATUS +NTSTATUS +NTAPI DrmCreateContentMixed( IN PULONG paContentId, IN ULONG cContentId, OUT PULONG pMixedContentId); -NTAPI NTSTATUS +NTSTATUS +NTAPI DrmDestroyContent( IN ULONG ContentId); -NTAPI NTSTATUS +NTSTATUS +NTAPI DrmForwardContentToDeviceObject( IN ULONG ContentId, IN PVOID Reserved, IN PCDRMFORWARD DrmForward); -NTAPI NTSTATUS +NTSTATUS +NTAPI DrmForwardContentToFileObject( IN ULONG ContentId, IN PFILE_OBJECT FileObject); -NTAPI NTSTATUS +NTSTATUS +NTAPI DrmForwardContentToInterface( IN ULONG ContentId, IN PUNKNOWN pUnknown, IN ULONG NumMethods); -NTAPI NTSTATUS +NTSTATUS +NTAPI DrmGetContentRights( IN ULONG ContentId, OUT PDRMRIGHTS DrmRights); diff --git a/reactos/include/psdk/ks.h b/reactos/include/psdk/ks.h index decc544a9f0..c5c005bcb41 100644 --- a/reactos/include/psdk/ks.h +++ b/reactos/include/psdk/ks.h @@ -249,8 +249,18 @@ typedef KSIDENTIFIER KSDEGRADE, *PKSDEGRADE; typedef KSIDENTIFIER KSPIN_INTERFACE, *PKSPIN_INTERFACE; typedef KSIDENTIFIER KSPIN_MEDIUM, *PKSPIN_MEDIUM; -typedef union -{ +#if !defined( _MSC_VER ) +typedef struct { + ULONG FormatSize; + ULONG Flags; + ULONG SampleSize; + ULONG Reserved; + GUID MajorFormat; + GUID SubFormat; + GUID Specifier; +} KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE; +#else +typedef union { struct { ULONG FormatSize; ULONG Flags; @@ -262,9 +272,13 @@ typedef union }; LONGLONG Alignment; } KSDATAFORMAT, *PKSDATAFORMAT, KSDATARANGE, *PKSDATARANGE; +#endif typedef struct { + ULONG Size; + ULONG Flags; + GUID Attribute; } KSATTRIBUTE, *PKSATTRIBUTE; @@ -1171,20 +1185,37 @@ enum VARENUM { typedef struct { -} KS_FRAMING_ITEM, *PKS_FRAMING_ITEM; - -typedef struct -{ + ULONG MinFrameSize; + ULONG MaxFrameSize; + ULONG Stepping; } KS_FRAMING_RANGE, *PKS_FRAMING_RANGE; typedef struct { - /* Obsolete */ + KS_FRAMING_RANGE Range; + ULONG InPlaceWeight; + ULONG NotInPlaceWeight; } KS_FRAMING_RANGE_WEIGHTED, *PKS_FRAMING_RANGE_WEIGHTED; -/* ??? */ typedef struct { + GUID MemoryType; + GUID BusType; + ULONG MemoryFlags; + ULONG BusFlags; + ULONG Flags; + ULONG Frames; + ULONG FileAlignment; + ULONG MemoryTypeWeight; + KS_FRAMING_RANGE PhysicalRange; + KS_FRAMING_RANGE_WEIGHTED FramingRange; +} KS_FRAMING_ITEM, *PKS_FRAMING_ITEM; + +typedef struct +{ + ULONG RatioNumerator; + ULONG RatioDenominator; + ULONG RatioConstantMargin; } KS_COMPRESSION, *PKS_COMPRESSION; @@ -1236,12 +1267,48 @@ typedef struct #define KSPROPERTY_ITEM_IRP_STORAGE(Irp) (*(const KSPROPERTY_ITEM**)&(Irp)->Tail.Overlay.DriverContext[3]) #define KSPROPERTY_ATTRIBUTES_IRP_STORAGE(Irp) (*(PKSATTRIBUTE_LIST*)&(Irp)->Tail.Overlay.DriverContext[2]) -#endif +typedef +VOID +(*PFNREFERENCEDEVICEOBJECT)( + IN PVOID Context + ); + +typedef +VOID +(*PFNDEREFERENCEDEVICEOBJECT)( + IN PVOID Context + ); + +typedef +NTSTATUS +(*PFNQUERYREFERENCESTRING)( + IN PVOID Context, + IN OUT PWCHAR *String + ); typedef struct { + INTERFACE Interface; + PFNREFERENCEDEVICEOBJECT ReferenceDeviceObject; + PFNDEREFERENCEDEVICEOBJECT DereferenceDeviceObject; + PFNQUERYREFERENCESTRING QueryReferenceString; } BUS_INTERFACE_REFERENCE, *PBUS_INTERFACE_REFERENCE; +typedef struct +{ + KDPC Dpc; + ULONG ReferenceCount; + KSPIN_LOCK AccessLock; +} KSDPC_ITEM, *PKSDPC_ITEM; + +typedef struct +{ + KSDPC_ITEM DpcItem; + LIST_ENTRY BufferList; +} KSBUFFER_ITEM, *PKSBUFFER_ITEM; + +#endif + typedef struct { GUID Manufacturer; @@ -1252,10 +1319,6 @@ typedef struct ULONG Revision; } KSCOMPONENTID, *PKSCOMPONENTID; -typedef struct -{ -} KSBUFFER_ITEM, *PKSBUFFER_ITEM; - /* =============================================================== Properties */ @@ -1265,40 +1328,85 @@ typedef struct #define KSPROPERTY_MEMBER_VALUES 0x00000003 #define KSPROPERTY_MEMBER_FLAG_DEFAULT KSPROPERTY_MEMBER_RANGES +typedef enum { + KS_SEEKING_NoPositioning, + KS_SEEKING_AbsolutePositioning, + KS_SEEKING_RelativePositioning, + KS_SEEKING_IncrementalPositioning, + KS_SEEKING_PositioningBitsMask = 0x3, + KS_SEEKING_SeekToKeyFrame, + KS_SEEKING_ReturnTime = 0x8 +} KS_SEEKING_FLAGS; + typedef struct { + LONGLONG Current; + LONGLONG Stop; + KS_SEEKING_FLAGS CurrentFlags; + KS_SEEKING_FLAGS StopFlags; } KSPROPERTY_POSITIONS, *PKSPROPERTY_POSITIONS; typedef struct { -} KSPROPERTY_SERIAL, *PKSPROPERTY_SERIAL; - -typedef struct -{ + GUID PropertySet; + ULONG Count; } KSPROPERTY_SERIALHDR, *PKSPROPERTY_SERIALHDR; typedef struct { -#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) - struct _SIGNED { -#else + KSIDENTIFIER PropTypeSet; + ULONG Id; + ULONG PropertyLength; +} KSPROPERTY_SERIAL, *PKSPROPERTY_SERIAL; + + +typedef union +{ struct { -#endif LONG SignedMinimum; LONG SignedMaximum; - }; + #if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) - struct _UNSIGNED { + }_SIGNED; #else - struct { -#endif + }; +#endif + + struct { ULONG UnsignedMinimum; ULONG UnsignedMaximum; - }; +#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) + }_UNSIGNED; +#else + }; +#endif + } KSPROPERTY_BOUNDS_LONG, *PKSPROPERTY_BOUNDS_LONG; -typedef struct +typedef union { + struct { + LONGLONG SignedMinimum; + LONGLONG SignedMaximum; +#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) + }_SIGNED64; +#else + }; +#endif + + struct { +#if defined(_NTDDK_) + ULONGLONG UnsignedMinimum; + ULONGLONG UnsignedMaximum; +#else + DWORDLONG UnsignedMinimum; + DWORDLONG UnsignedMaximum; +#endif +#if defined( _KS_NO_ANONYMOUS_STRUCTURES_ ) + }_UNSIGNED64; +#else + }; +#endif } KSPROPERTY_BOUNDS_LONGLONG, *PKSPROPERTY_BOUNDS_LONGLONG; typedef struct @@ -1312,6 +1420,8 @@ typedef struct typedef struct { + LONGLONG Earliest; + LONGLONG Latest; } KSPROPERTY_MEDIAAVAILABLE, *PKSPROPERTY_MEDIAAVAILABLE; @@ -1406,11 +1516,14 @@ typedef struct typedef struct { +#if defined(_NTDDK_) + ULONGLONG SteppingDelta; +#else + DWORDLONG SteppingDelta; +#endif + KSPROPERTY_BOUNDS_LONGLONG Bounds; } KSPROPERTY_STEPPING_LONGLONG, *PKSPROPERTY_STEPPING_LONGLONG; - - - /* =============================================================== Allocator Framing */ @@ -1434,6 +1547,11 @@ typedef struct typedef struct { + ULONG CountItems; // count of FramingItem-s below. + ULONG PinFlags; + KS_COMPRESSION OutputCompression; + ULONG PinWeight; // this pin framing's Weight graph-wide + KS_FRAMING_ITEM FramingItem[1]; } KSALLOCATOR_FRAMING_EX, *PKSALLOCATOR_FRAMING_EX; @@ -1443,6 +1561,9 @@ typedef struct typedef struct { + PVOID Context; + ULONG Proportion; + LONGLONG DeltaTime; } KSQUALITY, *PKSQUALITY; typedef struct @@ -1453,10 +1574,17 @@ typedef struct typedef struct { + LONGLONG PresentationStart; + LONGLONG Duration; + KSPIN_INTERFACE Interface; + LONG Rate; + ULONG Flags; } KSRATE, *PKSRATE; typedef struct { + KSPROPERTY Property; + KSRATE Rate; } KSRATE_CAPABILITY, *PKSRATE_CAPABILITY; typedef struct @@ -1467,6 +1595,62 @@ typedef struct typedef struct { + ULONG NotificationType; + union { + struct { + HANDLE Event; + ULONG_PTR Reserved[2]; + } EventHandle; + struct { + HANDLE Semaphore; + ULONG Reserved; + LONG Adjustment; + } SemaphoreHandle; +#if defined(_NTDDK_) + struct { + PVOID Event; + KPRIORITY Increment; + ULONG_PTR Reserved; + } EventObject; + struct { + PVOID Semaphore; + KPRIORITY Increment; + LONG Adjustment; + } SemaphoreObject; + struct { + PKDPC Dpc; + ULONG ReferenceCount; + ULONG_PTR Reserved; + } Dpc; + struct { + PWORK_QUEUE_ITEM WorkQueueItem; + WORK_QUEUE_TYPE WorkQueueType; + ULONG_PTR Reserved; + } WorkItem; + struct { + PWORK_QUEUE_ITEM WorkQueueItem; + PKSWORKER KsWorkerObject; + ULONG_PTR Reserved; + } KsWorkItem; +#endif + struct { + PVOID Unused; + LONG_PTR Alignment[2]; + } Alignment; + }; +} KSEVENTDATA, *PKSEVENTDATA; + +typedef struct +{ + ULONG Size; + ULONG Flags; + union { + HANDLE ObjectHandle; + PVOID ObjectPointer; + }; + PVOID Reserved; + KSEVENT Event; + KSEVENTDATA EventData; } KSRELATIVEEVENT, *PKSRELATIVEEVENT; @@ -1483,6 +1667,8 @@ typedef struct typedef struct { + LONGLONG Time; + LONGLONG SystemTime; } KSCORRELATED_TIME, *PKSCORRELATED_TIME; typedef struct @@ -1495,10 +1681,15 @@ typedef struct typedef struct { + LONGLONG TimeBase; + LONGLONG Interval; } KSINTERVAL, *PKSINTERVAL; typedef struct { + LONGLONG Duration; + ULONG FrameFlags; + ULONG Reserved; } KSFRAMETIME, *PKSFRAMETIME; @@ -1506,23 +1697,39 @@ typedef struct Clocks */ -typedef struct -{ -} KSCLOCK, *PKSCLOCK, *PKSDEFAULTCLOCK; /* OK ? */ +typedef PVOID PKSDEFAULTCLOCK; typedef struct { + ULONG CreateFlags; } KSCLOCK_CREATE, *PKSCLOCK_CREATE; +#if defined(_NTDDK_) + +typedef +LONGLONG +(FASTCALL *PFNKSCLOCK_GETTIME)( + IN PFILE_OBJECT FileObject + ); +typedef +LONGLONG +(FASTCALL *PFNKSCLOCK_CORRELATEDTIME)( + IN PFILE_OBJECT FileObject, + OUT PLONGLONG SystemTime); + typedef struct { + PFNKSCLOCK_GETTIME GetTime; + PFNKSCLOCK_GETTIME GetPhysicalTime; + PFNKSCLOCK_CORRELATEDTIME GetCorrelatedTime; + PFNKSCLOCK_CORRELATEDTIME GetCorrelatedPhysicalTime; } KSCLOCK_FUNCTIONTABLE, *PKSCLOCK_FUNCTIONTABLE; /* =============================================================== Objects ??? SORT ME! */ -#if defined(_NTDDK_) + typedef struct { PDRIVER_DISPATCH Create; @@ -1551,34 +1758,55 @@ typedef struct typedef struct { + KSEVENT Event; + PKSEVENTDATA EventData; + PVOID Reserved; } KSQUERYBUFFER, *PKSQUERYBUFFER; typedef struct { + PVOID Context; + ULONG Status; } KSERROR, *PKSERROR; -typedef struct -{ -} KSDPC_ITEM, *PKSDPC_ITEM; - - /* =============================================================== Methods */ +#if defined(_NTDDK_) typedef struct { -} KSMETHOD_SET, *PKSMETHOD_SET; - -typedef struct -{ + ULONG MethodId; + union { + PFNKSHANDLER MethodHandler; + BOOLEAN MethodSupported; + }; + ULONG MinMethod; + ULONG MinData; + PFNKSHANDLER SupportHandler; + ULONG Flags; } KSMETHOD_ITEM, *PKSMETHOD_ITEM; + typedef struct { + ULONG MethodId; + union { + PFNKSFASTHANDLER MethodHandler; + BOOLEAN MethodSupported; + }; } KSFASTMETHOD_ITEM, *PKSFASTMETHOD_ITEM; +typedef struct +{ + const GUID* Set; + ULONG MethodsCount; + const KSMETHOD_ITEM* MethodItem; + ULONG FastIoCount; + const KSFASTMETHOD_ITEM*FastIoTable; +} KSMETHOD_SET, *PKSMETHOD_SET; +#endif /* =============================================================== Nodes */ @@ -1599,51 +1827,222 @@ typedef struct typedef struct { + KSEVENT Event; + ULONG NodeId; + ULONG Reserved; } KSE_NODE, *PKSE_NODE; -typedef struct -{ +typedef struct { + ULONG CreateFlags; + ULONG Node; } KSNODE_CREATE, *PKSNODE_CREATE; /* =============================================================== Events */ +typedef struct _KSEVENT_ENTRY KSEVENT_ENTRY, *PKSEVENT_ENTRY; +#if defined(_NTDDK_) typedef struct { + KSEVENTDATA EventData; + LONGLONG MarkTime; } KSEVENT_TIME_MARK, *PKSEVENT_TIME_MARK; typedef struct { + KSEVENTDATA EventData; + LONGLONG TimeBase; + LONGLONG Interval; } KSEVENT_TIME_INTERVAL, *PKSEVENT_TIME_INTERVAL; -typedef struct -{ -} KSEVENT_SET, *PKSEVENT_SET; +typedef NTSTATUS (*PFNKSADDEVENT)( + IN PIRP Irp, + IN PKSEVENTDATA EventData, + IN struct _KSEVENT_ENTRY* EventEntry); + +typedef +VOID +(*PFNKSREMOVEEVENT)( + IN PFILE_OBJECT FileObject, + IN struct _KSEVENT_ENTRY* EventEntry + ); typedef struct { + ULONG EventId; + ULONG DataInput; + ULONG ExtraEntryData; + PFNKSADDEVENT AddHandler; + PFNKSREMOVEEVENT RemoveHandler; + PFNKSHANDLER SupportHandler; } KSEVENT_ITEM, *PKSEVENT_ITEM; -typedef struct _KSEVENT_ENTRY -{ -} KSEVENT_ENTRY, *PKSEVENT_ENTRY; - typedef struct { -} KSEVENTDATA, *PKSEVENTDATA; + const GUID* Set; + ULONG EventsCount; + const KSEVENT_ITEM* EventItem; +} KSEVENT_SET, *PKSEVENT_SET; +struct _KSEVENT_ENTRY +{ + LIST_ENTRY ListEntry; + PVOID Object; + union { + PKSDPC_ITEM DpcItem; + PKSBUFFER_ITEM BufferItem; + }; + PKSEVENTDATA EventData; + ULONG NotificationType; + const KSEVENT_SET* EventSet; + const KSEVENT_ITEM* EventItem; + PFILE_OBJECT FileObject; + ULONG SemaphoreAdjustment; + ULONG Reserved; + ULONG Flags; +}; +#endif /* =============================================================== Pins */ +#if defined(_NTDDK_) + +typedef struct _KSPIN KSPIN, *PKSPIN; +typedef struct _KSSTREAM_POINTER KSSTREAM_POINTER, *PKSSTREAM_POINTER; +typedef struct _KSSTREAM_POINTER_OFFSET KSSTREAM_POINTER_OFFSET, *PKSSTREAM_POINTER_OFFSET; +typedef struct _KSMAPPING KSMAPPING, *PKSMAPPING; +typedef struct _KSPROCESSPIN KSPROCESSPIN, *PKSPROCESSPIN; + +typedef +NTSTATUS +(*PFNKSPINIRP)( + IN PKSPIN Pin, + IN PIRP Irp + ); + +typedef +NTSTATUS +(*PFNKSPIN)( + IN PKSPIN Pin + ); + +typedef +void +(*PFNKSPINVOID)( + IN PKSPIN Pin + ); + +typedef +void +(*PFNKSSTREAMPOINTER)( + IN PKSSTREAM_POINTER StreamPointer + ); + +typedef struct { + ULONG Count; + PKSATTRIBUTE* Attributes; +} KSATTRIBUTE_LIST, *PKSATTRIBUTE_LIST; + +typedef +NTSTATUS +(*PFNKSPINSETDATAFORMAT)( + IN PKSPIN Pin, + IN PKSDATAFORMAT OldFormat OPTIONAL, + IN PKSMULTIPLE_ITEM OldAttributeList OPTIONAL, + IN const KSDATARANGE* DataRange, + IN const KSATTRIBUTE_LIST* AttributeRange OPTIONAL + ); + +typedef +NTSTATUS +(*PFNKSPINSETDEVICESTATE)( + IN PKSPIN Pin, + IN KSSTATE ToState, + IN KSSTATE FromState + ); + +typedef struct _KSCLOCK_DISPATCH KSCLOCK_DISPATCH, *PKSCLOCK_DISPATCH; +typedef struct _KSALLOCATOR_DISPATCH KSALLOCATOR_DISPATCH, *PKSALLOCATOR_DISPATCH; + typedef struct { + PFNKSPINIRP Create; + PFNKSPINIRP Close; + PFNKSPIN Process; + PFNKSPINVOID Reset; + PFNKSPINSETDATAFORMAT SetDataFormat; + PFNKSPINSETDEVICESTATE SetDeviceState; + PFNKSPIN Connect; + PFNKSPINVOID Disconnect; + const KSCLOCK_DISPATCH* Clock; + const KSALLOCATOR_DISPATCH* Allocator; } KSPIN_DISPATCH, *PKSPIN_DISPATCH; -#if defined(_NTDDK_) +typedef +BOOLEAN +(*PFNKSPINSETTIMER)( + IN PKSPIN Pin, + IN PKTIMER Timer, + IN LARGE_INTEGER DueTime, + IN PKDPC Dpc + ); + +typedef +BOOLEAN +(*PFNKSPINCANCELTIMER)( + IN PKSPIN Pin, + IN PKTIMER Timer + ); + +typedef +LONGLONG +(FASTCALL *PFNKSPINCORRELATEDTIME)( + IN PKSPIN Pin, + OUT PLONGLONG SystemTime + ); + +typedef +void +(*PFNKSPINRESOLUTION)( + IN PKSPIN Pin, + OUT PKSRESOLUTION Resolution + ); + +struct _KSCLOCK_DISPATCH { + PFNKSPINSETTIMER SetTimer; + PFNKSPINCANCELTIMER CancelTimer; + PFNKSPINCORRELATEDTIME CorrelatedTime; + PFNKSPINRESOLUTION Resolution; +}; + +typedef +NTSTATUS +(*PFNKSPININITIALIZEALLOCATOR)( + IN PKSPIN Pin, + IN PKSALLOCATOR_FRAMING AllocatorFraming, + OUT PVOID* Context + ); + +typedef PVOID (*PFNKSDELETEALLOCATOR)( + IN PVOID Context); + +typedef PVOID (*PFNKSDEFAULTALLOCATE)( + IN PVOID Context); + +typedef PVOID (*PFNKSDEFAULTFREE)( + IN PVOID Context, + IN PVOID Buffer); + +struct _KSALLOCATOR_DISPATCH { + PFNKSPININITIALIZEALLOCATOR InitializeAllocator; + PFNKSDELETEALLOCATOR DeleteAllocator; + PFNKSDEFAULTALLOCATE Allocate; + PFNKSDEFAULTFREE Free; +}; typedef struct { @@ -1741,7 +2140,7 @@ typedef struct #define KSPIN_FLAG_DENY_USERMODE_ACCESS #define KSPIN_FLAG_IMPLEMENT_CLOCK -typedef struct +struct _KSPIN { const KSPIN_DESCRIPTOR_EX* Descriptor; KSOBJECT_BAG Bag; @@ -1759,7 +2158,7 @@ typedef struct KSSTATE DeviceState; KSRESET ResetState; KSSTATE ClientState; -} KSPIN, *PKSPIN; +}; #define DEFINE_KSPROPERTY_ITEM_PIN_CINSTANCES(Handler)\ DEFINE_KSPROPERTY_ITEM(\ @@ -2008,32 +2407,17 @@ DEFINE_KSPROPERTY_TABLE(TopologySet) {\ /* TODO */ typedef void* UNKNOWN; -typedef PVOID (*PFNKSDEFAULTALLOCATE)( - IN PVOID Context); - -typedef PVOID (*PFNKSDEFAULTFREE)( - IN PVOID Context, - IN PVOID Buffer); - typedef PVOID (*PFNKSINITIALIZEALLOCATOR)( IN PVOID InitialContext, IN PKSALLOCATOR_FRAMING AllocatorFraming, OUT PVOID* Context); -typedef PVOID (*PFNKSDELETEALLOCATOR)( - IN PVOID Context); - #if defined(_NTDDK_) typedef NTSTATUS (*PFNKSALLOCATOR)( IN PIRP Irp, IN ULONG BufferSize, IN BOOLEAN InputOperation); -typedef NTSTATUS (*PFNKSADDEVENT)( - IN PIRP Irp, - IN PKSEVENTDATA EventData, - IN struct _KSEVENT_ENTRY* EventEntry); - typedef NTSTATUS (*PFNKINTERSECTHANDLEREX)( IN PVOID Context, IN PIRP Irp, @@ -2088,17 +2472,59 @@ typedef struct XP / DX8 */ -typedef struct +struct _KSMAPPING { + PHYSICAL_ADDRESS PhysicalAddress; + ULONG ByteCount; + ULONG Alignment; +}; + +struct _KSSTREAM_POINTER_OFFSET { - /* TODO */ -} KSPROCESSPIN, *PKSPROCESSPIN; +#if defined(_NTDDK_) + union { + PUCHAR Data; + PKSMAPPING Mappings; + }; +#else + PUCHAR Data; +#endif +#if !defined(_WIN64) + PVOID Alignment; +#endif + ULONG Count; + ULONG Remaining; +}; +#if defined(_NTDDK_) +struct _KSSTREAM_POINTER +{ + PVOID Context; + PKSPIN Pin; + PKSSTREAM_HEADER StreamHeader; + PKSSTREAM_POINTER_OFFSET Offset; + KSSTREAM_POINTER_OFFSET OffsetIn; + KSSTREAM_POINTER_OFFSET OffsetOut; +}; + +struct _KSPROCESSPIN +{ + PKSPIN Pin; + PKSSTREAM_POINTER StreamPointer; + PKSPROCESSPIN InPlaceCounterpart; + PKSPROCESSPIN DelegateBranch; + PKSPROCESSPIN CopySource; + PVOID Data; + ULONG BytesAvailable; + ULONG BytesUsed; + ULONG Flags; + BOOLEAN Terminate; +}; typedef struct { PKSPROCESSPIN* Pins; ULONG Count; } KSPROCESSPIN_INDEXENTRY, *PKSPROCESSPIN_INDEXENTRY; - +#endif /* =============================================================== Device Dispatch