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
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
KSDDKAPI NTSTATUS NTAPI KsDispatchQuerySecurity(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI IKsAllocator_Allocate(IN PFILE_OBJECT FileObject, PVOID *Frame)
#define STATUS_NOT_IMPLEMENTED
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)
union ALLOCATOR::@949 Free
_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)
#define STATUS_INVALID_DEVICE_REQUEST
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)
static KSDISPATCH_TABLE DispatchTable
#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)
union ALLOCATOR::@950 Delete
_In_ NDIS_HANDLE _In_ PNDIS_REQUEST Request
NTSTATUS NTAPI IKsAllocator_fnAllocateFrame(IKsAllocator *iface, IN PVOID *OutFrame)
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)
_Inout_ PFILE_OBJECT FileObject
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)
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)
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
#define STATUS_UNSUCCESSFUL
VOID NTAPI IKsAllocator_FreeFrame(IN PFILE_OBJECT FileObject, PVOID Frame)
#define InterlockedDecrement
#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE
IN PVOID IN PVOID IN USHORT IN USHORT Size
PFNKSNPAGEDPOOLALLOCATE NPagedPool
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)
IN PDEVICE_OBJECT DeviceObject
__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)
#define STATUS_NOT_SUPPORTED
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
union ALLOCATOR::@948 Allocate
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST * PPAGED_LOOKASIDE_LIST
VOID NTAPI ExDeleteNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside)
BOOL Delete(LPCTSTR ServiceName)
#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY
PVOID(NTAPI * PFNKSINITIALIZEALLOCATOR)(_In_ PVOID InitialContext, _In_ PKSALLOCATOR_FRAMING AllocatorFraming, _Outptr_ PVOID *Context)
PULONG MinorVersion OPTIONAL
PVOID(* PFNKSPAGEDPOOLALLOCATE)(IN PPAGED_LOOKASIDE_LIST Lookaside)