79 const GUID IID_IKsAllocator = {0x642F5D00
L, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
80 const GUID KSPROPSETID_StreamAllocator = {0x0cf6e4342, 0xec87, 0x11cf, {0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}};
118 IKsAllocator * iface)
128 IKsAllocator * iface)
189 if (IoStack->
Parameters.DeviceIoControl.OutputBufferLength <
sizeof(KSSTREAMALLOCATOR_FUNCTIONTABLE))
193 Irp->IoStatus.Information =
sizeof(KSSTREAMALLOCATOR_FUNCTIONTABLE);
215 Irp->IoStatus.Information =
sizeof(KSSTREAMALLOCATOR_FUNCTIONTABLE);
275 This->Delete.DefaultDelete(
This->u.CustomList);
279 This->Delete.NPagedPool(&
This->u.NPagedList);
283 This->Delete.PagedPool(&
This->u.PagedList);
306 Frame =
This->Allocate.DefaultAllocate(
This->u.CustomList);
310 Frame =
This->Allocate.NPagedPool(&
This->u.NPagedList);
314 Frame =
This->Allocate.PagedPool(&
This->u.PagedList);
338 This->Free.DefaultFree(
This->u.CustomList, Frame);
342 This->Free.NPagedPool(&
This->u.NPagedList, Frame);
346 This->Free.PagedPool(&
This->u.PagedList, Frame);
403 ULONG SupportedFlags;
444 IKsAllocator * Allocator;
469 Status = Allocator->lpVtbl->Close(Allocator);
474 Status = Allocator->lpVtbl->AllocateFrame(Allocator, (
PVOID*)Frame);
479 Allocator->lpVtbl->FreeFrame(Allocator, Frame);
484 Allocator->lpVtbl->
Release(Allocator);
579 IN PFNKSDEFAULTALLOCATE DefaultAllocate
OPTIONAL,
582 IN PFNKSDELETEALLOCATOR DeleteAllocator
OPTIONAL)
681 Framing->OutputCompression.RatioNumerator !=
MAXULONG &&
682 Framing->OutputCompression.RatioDenominator != 0 &&
683 Framing->OutputCompression.RatioDenominator < Framing->OutputCompression.RatioNumerator)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorCreateRequest(IN PIRP Irp, OUT PKSALLOCATOR_FRAMING *OutAllocatorFraming)
NTSTATUS NTAPI IKsAllocator_fnQueryInterface(IKsAllocator *iface, IN REFIID refiid, OUT PVOID *Output)
#define IOCTL_KS_PROPERTY
NTSTATUS NTAPI IKsAllocator_fnDeviceIoControl(IKsAllocator *iface, IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
KSALLOCATOR_FRAMING Framing
return STATUS_NOT_SUPPORTED
KSDDKAPI NTSTATUS NTAPI KsDispatchSetSecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID NTAPI ExInitializePagedLookasideList(IN PPAGED_LOOKASIDE_LIST Lookaside, IN PALLOCATE_FUNCTION Allocate OPTIONAL, IN PFREE_FUNCTION Free OPTIONAL, IN ULONG Flags, IN SIZE_T Size, IN ULONG Tag, IN USHORT Depth)
#define KSSTRING_Allocator
#define STATUS_INSUFFICIENT_RESOURCES
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_ _In_ _Strict_type_match_ POOL_TYPE _In_opt_ PWDF_OBJECT_ATTRIBUTES _In_opt_ ULONG _Out_ WDFLOOKASIDE * Lookaside
KSDDKAPI NTSTATUS NTAPI KsDispatchQuerySecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IKsAllocator_Allocate(IN PFILE_OBJECT FileObject, PVOID *Frame)
NTSTATUS NTAPI KspCreateObjectType(IN HANDLE ParentHandle, IN LPWSTR ObjectType, PVOID CreateParameters, UINT CreateParametersSize, IN ACCESS_MASK DesiredAccess, OUT PHANDLE NodeHandle)
#define STATUS_INVALID_PARAMETER
PFNKSPAGEDPOOLDELETE PagedPool
struct KSIOBJECT_HEADER * PKSIOBJECT_HEADER
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocator(IN PIRP Irp)
VOID InitializeContext(IN PCALLBACK16 Context, IN USHORT Segment, IN USHORT Offset)
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
_In_ PKSALLOCATOR_FRAMING AllocatorFraming
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)
_In_ ULONG _In_ ULONG State
#define STATUS_INVALID_DEVICE_REQUEST
IN PVOID IN PVOID IN USHORT IN USHORT Size
union ALLOCATOR::@979 Allocate
PFNKSPAGEDPOOLFREE PagedPool
VOID(NTAPI * PFNKSPAGEDPOOLDELETE)(IN PPAGED_LOOKASIDE_LIST Lookaside)
#define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT
#define KSPROPERTY_TYPE_GET
NTSTATUS KspCopyCreateRequest(IN PIRP Irp, IN LPWSTR ObjectClass, IN OUT PULONG Size, OUT PVOID *Result)
_In_opt_ PALLOCATE_FUNCTION Allocate
NPAGED_LOOKASIDE_LIST NPagedList
struct ALLOCATOR * PALLOCATOR
KSDDKAPI VOID NTAPI KsFreeObjectHeader(IN PVOID Header)
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_BUFFER_TOO_SMALL
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST * PNPAGED_LOOKASIDE_LIST
#define IsEqualGUIDAligned(guid1, guid2)
NTSTATUS NTAPI IKsAllocator_fnAllocateFrame(IKsAllocator *iface, IN PVOID *OutFrame)
_In_ PDEVICE_OBJECT DeviceObject
return STATUS_NOT_IMPLEMENTED
VOID FreeItem(IN PVOID Item)
PAGED_LOOKASIDE_LIST PagedList
#define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY
long __cdecl _InterlockedIncrement(_Interlocked_operand_ long volatile *_Addend)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
KSDDKAPI NTSTATUS NTAPI KsCreateAllocator(IN HANDLE ConnectionHandle, IN PKSALLOCATOR_FRAMING AllocatorFraming, OUT PHANDLE AllocatorHandle)
PFNKSDEFAULTFREE DefaultFree
#define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY
#define KSALLOCATOR_OPTIONF_COMPATIBLE
ULONG NTAPI IKsAllocator_fnAddRef(IKsAllocator *iface)
#define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER
PVOID(* PFNKSNPAGEDPOOLALLOCATE)(IN PNPAGED_LOOKASIDE_LIST Lookaside)
KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorFramingEx(IN PKSALLOCATOR_FRAMING_EX Framing, IN ULONG BufferSize, IN const KSALLOCATOR_FRAMING_EX *PinFraming)
NTSTATUS NTAPI IKsAllocator_DispatchDeviceIoControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID(NTAPI * PFNKSNPAGEDPOOLDELETE)(IN PNPAGED_LOOKASIDE_LIST Lookaside)
const GUID IID_IKsAllocator
VOID NTAPI ExDeletePagedLookasideList(IN PPAGED_LOOKASIDE_LIST Lookaside)
struct KSSTREAMALLOCATOR_STATUS * PKSSTREAMALLOCATOR_STATUS
NTSTATUS NTAPI IKsAllocator_DispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
ULONG NTAPI IKsAllocator_fnRelease(IKsAllocator *iface)
IKsAllocatorVtbl * lpVtbl
NTSTATUS NTAPI IKsAllocator_fnClose(IKsAllocator *iface)
PFNKSNPAGEDPOOLDELETE NPagedPool
PFNKSNPAGEDPOOLFREE NPagedPool
KSDDKAPI NTSTATUS NTAPI KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
static IKsAllocatorVtbl vt_IKsAllocator
VOID(* PFNKSPAGEDPOOLFREE)(IN PPAGED_LOOKASIDE_LIST Lookaside, IN PVOID Entry)
VOID NTAPI ExInitializeNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside, IN PALLOCATE_FUNCTION Allocate OPTIONAL, IN PFREE_FUNCTION Free OPTIONAL, IN ULONG Flags, IN SIZE_T Size, IN ULONG Tag, IN USHORT Depth)
#define NT_SUCCESS(StatCode)
PFNKSDEFAULTALLOCATE DefaultAllocate
VOID(* PFNKSNPAGEDPOOLFREE)(IN PNPAGED_LOOKASIDE_LIST Lookaside, IN PVOID Entry)
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocatorEx(IN PIRP Irp, IN PVOID InitializeContext OPTIONAL, IN PFNKSDEFAULTALLOCATE DefaultAllocate OPTIONAL, IN PFNKSDEFAULTFREE DefaultFree OPTIONAL, IN PFNKSINITIALIZEALLOCATOR InitializeAllocator OPTIONAL, IN PFNKSDELETEALLOCATOR DeleteAllocator OPTIONAL)
NTSTATUS NTAPI CompleteRequest(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
union ALLOCATOR::@980 Free
#define STATUS_UNSUCCESSFUL
VOID NTAPI IKsAllocator_FreeFrame(IN PFILE_OBJECT FileObject, PVOID Frame)
#define InterlockedDecrement
#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE
PFNKSNPAGEDPOOLALLOCATE NPagedPool
union ALLOCATOR::@981 Delete
NTSTATUS IKsAllocator_DispatchRequest(IN PDEVICE_OBJECT DeviceObject, IN PFILE_OBJECT FileObject, IN PIRP Irp, IN PVOID Frame, IN ALLOC_REQUEST Request)
VOID NTAPI IKsAllocator_fnFreeFrame(IKsAllocator *iface, IN PVOID Frame)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
_In_ PKSALLOCATOR_FRAMING _Out_ PHANDLE AllocatorHandle
#define InterlockedIncrement
PFNKSPAGEDPOOLALLOCATE PagedPool
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST PAGED_LOOKASIDE_LIST
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)
KSSTREAMALLOCATOR_STATUS Status
const GUID KSPROPSETID_StreamAllocator
KSDDKAPI NTSTATUS NTAPI KsAllocateObjectHeader(OUT KSOBJECT_HEADER *Header, IN ULONG ItemsCount, IN PKSOBJECT_CREATE_ITEM ItemsList OPTIONAL, IN PIRP Irp, IN KSDISPATCH_TABLE *Table)
static WLX_DISPATCH_VERSION_1_4 FunctionTable
struct KSIDENTIFIER * PKSPROPERTY
PFNKSDELETEALLOCATOR DefaultDelete
_In_ PKSPIN_CONNECT _In_ ACCESS_MASK _Out_ PHANDLE ConnectionHandle
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST * PPAGED_LOOKASIDE_LIST
_In_ PWDFDEVICE_INIT _In_ PWDF_PDO_EVENT_CALLBACKS DispatchTable
VOID NTAPI ExDeleteNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside)
BOOL Delete(LPCTSTR ServiceName)
#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
PVOID(NTAPI * PFNKSINITIALIZEALLOCATOR)(_In_ PVOID InitialContext, _In_ PKSALLOCATOR_FRAMING AllocatorFraming, _Outptr_ PVOID *Context)
PULONG MinorVersion OPTIONAL
PVOID(* PFNKSPAGEDPOOLALLOCATE)(IN PPAGED_LOOKASIDE_LIST Lookaside)