28 const GUID KSDATAFORMAT_SUBTYPE_BDA_MPEG2_TRANSPORT = {0xf4aeb342, 0x0329, 0x4fdd, {0xa8, 0xfd, 0x4a, 0xff, 0x49, 0x26, 0xc9, 0x78}};
48 ConnectSize +=
Format->DataFormat.FormatSize;
89 (
PVOID*)&ConnectDetails);
96 if (ConnectDetails->PinId >= DescriptorsCount)
102 if (DescriptorSize ==
sizeof(KSPIN_DESCRIPTOR))
105 Descriptor = (PKSPIN_DESCRIPTOR)((
ULONG_PTR)Descriptors +
sizeof(KSPIN_DESCRIPTOR) * ConnectDetails->PinId);
110 Descriptor = &((PKSPIN_DESCRIPTOR_EX)((
ULONG_PTR)Descriptors + DescriptorSize * ConnectDetails->PinId))->PinDescriptor;
138 DPRINT(
"Connect Interface %S Id %u\n", GuidString2.
Buffer, ConnectDetails->Interface.Id);
185 DPRINT(
"Connect Medium %S Id %u\n", GuidString2.
Buffer, ConnectDetails->Medium.Id);
190 Medium[
Index].
Id == ConnectDetails->Medium.Id)
317 *OutInformation = KeyInfo;
329 IN const KSPIN_DESCRIPTOR* Descriptors,
356 if (
Pin->PinId >= DescriptorsCount)
365 Irp->IoStatus.Information =
sizeof(
ULONG);
370 if (DescriptorSize ==
sizeof(KSPIN_DESCRIPTOR))
378 Descriptor = &(((PKSPIN_DESCRIPTOR_EX)((
ULONG_PTR)Descriptors +
Pin->PinId * DescriptorSize))->PinDescriptor);
386 if (IoStack->
Parameters.DeviceIoControl.OutputBufferLength <
Size)
388 Irp->IoStatus.Information =
Size;
411 DataRanges =
Descriptor->ConstrainedDataRanges;
420 if (IoStack->
Parameters.DeviceIoControl.OutputBufferLength == 0)
423 Irp->IoStatus.Information =
Size;
430 if (IoStack->
Parameters.DeviceIoControl.OutputBufferLength ==
sizeof(
ULONG))
434 Irp->IoStatus.Information =
sizeof(
ULONG);
467 DPRINT(
"Index %lu FormatSize %lu Flags %lu SampleSize %lu Reserved %lu KSDATAFORMAT %lu\n",
Index,
478 Irp->IoStatus.Information =
Size;
511 if (IoStack->
Parameters.DeviceIoControl.OutputBufferLength <
Size)
513 Irp->IoStatus.Information =
Size;
521 Irp->IoStatus.Information =
Size;
534 if (IoStack->
Parameters.DeviceIoControl.OutputBufferLength <
Size)
537 Irp->IoStatus.Information =
Size;
547 Irp->IoStatus.Information =
Size;
574 Irp->IoStatus.Information = 0;
601 if (IoStack->
Parameters.DeviceIoControl.OutputBufferLength <
Size)
603 Irp->IoStatus.Information =
Size;
611 Irp->IoStatus.Information = 0;
619 Irp->IoStatus.Information = 0;
638 Irp->IoStatus.Information = 0;
644 Irp->IoStatus.Information = 0;
649 Irp->IoStatus.Information = 0;
654 Irp->IoStatus.Information = 0;
687 IN PFNKSINTERSECTHANDLEREX IntersectHandler
OPTIONAL,
706 IN PFNKSINTERSECTHANDLER IntersectHandler)
723 Irp->IoStatus.Information =
Size;
728 if (
Pin->PinId >= DescriptorsCount)
732 Irp->IoStatus.Information = 0;
762 Irp->IoStatus.Information = 0;
793 if (IoStack->
Parameters.DeviceIoControl.OutputBufferLength == 0)
796 Irp->IoStatus.Information =
Size;
801 if (IoStack->
Parameters.DeviceIoControl.OutputBufferLength ==
sizeof(
ULONG))
805 Irp->IoStatus.Information =
sizeof(
ULONG);
817 Item->Count = DataItemsCount;
818 Item->Size = DataItemSize;
827 if (IoStack->
Parameters.DeviceIoControl.OutputBufferLength >=
Size)
832 Irp->IoStatus.Information =
Size;
KSPIN_INTERFACE StandardPinInterface
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
return STATUS_NOT_SUPPORTED
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_In_ PKSPIN_CONNECT Connect
union KSDATAFORMAT KSDATARANGE
#define OBJ_CASE_INSENSITIVE
IN BOOLEAN OUT PSTR Buffer
NTSTATUS NTAPI KspCreateObjectType(IN HANDLE ParentHandle, IN LPWSTR ObjectType, PVOID CreateParameters, UINT CreateParametersSize, IN ACCESS_MASK DesiredAccess, OUT PHANDLE NodeHandle)
#define STATUS_INVALID_PARAMETER
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
ULONG MaximumBitsPerSample
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
KSDDKAPI NTSTATUS NTAPI KsHandleSizedListQuery(IN PIRP Irp, IN ULONG DataItemsCount, IN ULONG DataItemSize, IN const VOID *DataItems)
#define STATIC_KSMEDIUMSETID_Standard
IN PVOID IN PVOID IN USHORT IN USHORT Size
NTSTATUS KspReadMediaCategory(IN LPGUID Category, PKEY_VALUE_PARTIAL_INFORMATION *OutInformation)
#define OBJ_KERNEL_HANDLE
KSIDENTIFIER * PKSPIN_INTERFACE
NTSTATUS KspCopyCreateRequest(IN PIRP Irp, IN LPWSTR ObjectClass, IN OUT PULONG Size, OUT PVOID *Result)
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_BUFFER_TOO_SMALL
#define IsEqualGUIDAligned(guid1, guid2)
return STATUS_NOT_IMPLEMENTED
VOID FreeItem(IN PVOID Item)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
_Reserved_ PVOID Reserved
NTSTATUS KspValidateConnectRequest(IN PIRP Irp, IN ULONG DescriptorsCount, IN PVOID Descriptors, IN ULONG DescriptorSize, OUT PKSPIN_CONNECT *Connect)
const GUID KSDATAFORMAT_SUBTYPE_BDA_MPEG2_TRANSPORT
_Must_inspect_result_ _In_ ULONG Flags
IN PDCB IN VBO IN ULONG IN BOOLEAN Pin
#define NT_SUCCESS(StatCode)
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
struct _KEY_VALUE_PARTIAL_INFORMATION * PKEY_VALUE_PARTIAL_INFORMATION
_In_ WDFCOLLECTION _In_ ULONG Index
KSDDKAPI NTSTATUS NTAPI KsPinPropertyHandler(IN PIRP Irp, IN PKSPROPERTY Property, IN OUT PVOID Data, IN ULONG DescriptorsCount, IN const KSPIN_DESCRIPTOR *Descriptor)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
KSDDKAPI NTSTATUS NTAPI KsCreatePin(IN HANDLE FilterHandle, IN PKSPIN_CONNECT Connect, IN ACCESS_MASK DesiredAccess, OUT PHANDLE ConnectionHandle)
KSDDKAPI NTSTATUS NTAPI KsPinDataIntersection(IN PIRP Irp, IN PKSP_PIN Pin, OUT PVOID Data, IN ULONG DescriptorsCount, IN const KSPIN_DESCRIPTOR *Descriptor, IN PFNKSINTERSECTHANDLER IntersectHandler)
#define STATUS_UNSUCCESSFUL
struct KSMULTIPLE_ITEM * PKSMULTIPLE_ITEM
KSIDENTIFIER * PKSPIN_MEDIUM
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
PRTL_UNICODE_STRING_BUFFER Path
#define STATUS_BUFFER_OVERFLOW
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
#define KSMEDIUM_TYPE_ANYINSTANCE
ULONG MaximumSampleFrequency
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
#define STATIC_KSINTERFACESETID_Standard
_In_ WDFCOLLECTION _In_ WDFOBJECT Item
ULONG MinimumBitsPerSample
KSPIN_MEDIUM StandardPinMedium
#define InitializeObjectAttributes(p, n, a, r, s)
_In_ PKSPIN_CONNECT _In_ ACCESS_MASK _Out_ PHANDLE ConnectionHandle
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
KSDDKAPI NTSTATUS NTAPI KsValidateConnectRequest(IN PIRP Irp, IN ULONG DescriptorsCount, IN KSPIN_DESCRIPTOR *Descriptor, OUT PKSPIN_CONNECT *Connect)
KSDDKAPI NTSTATUS NTAPI KsPinDataIntersectionEx(IN PIRP Irp, IN PKSP_PIN Pin, OUT PVOID Data, IN ULONG DescriptorsCount, IN const KSPIN_DESCRIPTOR *Descriptor, IN ULONG DescriptorSize, IN PFNKSINTERSECTHANDLEREX IntersectHandler OPTIONAL, IN PVOID HandlerContext OPTIONAL)
KSDDKAPI NTSTATUS NTAPI KspPinPropertyHandler(IN PIRP Irp, IN PKSPROPERTY Property, IN OUT PVOID Data, IN ULONG DescriptorsCount, IN const KSPIN_DESCRIPTOR *Descriptors, IN ULONG DescriptorSize)
#define RTL_CONSTANT_STRING(s)
PULONG MinorVersion OPTIONAL