79const GUID IID_IKsAllocator = {0x642F5D00L, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
80const GUID KSPROPSETID_StreamAllocator = {0x0cf6e4342, 0xec87, 0x11cf, {0xa1, 0x30, 0x00, 0x20, 0xaf, 0xd1, 0x56, 0xe4}};
118 IKsAllocator * iface)
128 IKsAllocator * iface)
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)
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
VOID(NTAPI * PFNKSPAGEDPOOLDELETE)(IN PPAGED_LOOKASIDE_LIST Lookaside)
VOID NTAPI IKsAllocator_FreeFrame(IN PFILE_OBJECT FileObject, PVOID Frame)
PVOID(* PFNKSNPAGEDPOOLALLOCATE)(IN PNPAGED_LOOKASIDE_LIST Lookaside)
NTSTATUS NTAPI IKsAllocator_fnAllocateFrame(IKsAllocator *iface, IN PVOID *OutFrame)
NTSTATUS NTAPI IKsAllocator_Allocate(IN PFILE_OBJECT FileObject, PVOID *Frame)
NTSTATUS NTAPI IKsAllocator_fnQueryInterface(IKsAllocator *iface, IN REFIID refiid, OUT PVOID *Output)
VOID NTAPI IKsAllocator_fnFreeFrame(IKsAllocator *iface, IN PVOID Frame)
NTSTATUS IKsAllocator_DispatchRequest(IN PDEVICE_OBJECT DeviceObject, IN PFILE_OBJECT FileObject, IN PIRP Irp, IN PVOID Frame, IN ALLOC_REQUEST Request)
static IKsAllocatorVtbl vt_IKsAllocator
KSDDKAPI NTSTATUS NTAPI KsCreateDefaultAllocator(IN PIRP Irp)
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)
KSDDKAPI NTSTATUS NTAPI KsCreateAllocator(IN HANDLE ConnectionHandle, IN PKSALLOCATOR_FRAMING AllocatorFraming, OUT PHANDLE AllocatorHandle)
NTSTATUS NTAPI IKsAllocator_DispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
ULONG NTAPI IKsAllocator_fnAddRef(IKsAllocator *iface)
@ ALLOCATOR_DEVICE_CONTROL
NTSTATUS NTAPI IKsAllocator_fnDeviceIoControl(IKsAllocator *iface, IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID(NTAPI * PFNKSNPAGEDPOOLDELETE)(IN PNPAGED_LOOKASIDE_LIST Lookaside)
VOID(* PFNKSNPAGEDPOOLFREE)(IN PNPAGED_LOOKASIDE_LIST Lookaside, IN PVOID Entry)
KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorFramingEx(IN PKSALLOCATOR_FRAMING_EX Framing, IN ULONG BufferSize, IN const KSALLOCATOR_FRAMING_EX *PinFraming)
KSDDKAPI NTSTATUS NTAPI KsValidateAllocatorCreateRequest(IN PIRP Irp, OUT PKSALLOCATOR_FRAMING *OutAllocatorFraming)
const GUID KSPROPSETID_StreamAllocator
@ ALLOCATOR_PAGED_LOOKASIDE
@ ALLOCATOR_NPAGED_LOOKASIDE
NTSTATUS NTAPI IKsAllocator_DispatchDeviceIoControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
PVOID(* PFNKSPAGEDPOOLALLOCATE)(IN PPAGED_LOOKASIDE_LIST Lookaside)
NTSTATUS NTAPI IKsAllocator_fnClose(IKsAllocator *iface)
struct ALLOCATOR * PALLOCATOR
ULONG NTAPI IKsAllocator_fnRelease(IKsAllocator *iface)
VOID(* PFNKSPAGEDPOOLFREE)(IN PPAGED_LOOKASIDE_LIST Lookaside, IN PVOID Entry)
const GUID IID_IKsAllocator
#define InterlockedIncrement
#define InterlockedDecrement
BOOL Delete(LPCTSTR ServiceName)
#define NT_SUCCESS(StatCode)
NTSTATUS NTAPI CompleteRequest(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
KSDDKAPI VOID NTAPI KsFreeObjectHeader(IN PVOID Header)
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 KsDispatchInvalidDeviceRequest(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
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)
struct KSIDENTIFIER * PKSPROPERTY
#define KSPROPERTY_TYPE_GET
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
long __cdecl _InterlockedIncrement(_Interlocked_operand_ long volatile *_Addend)
#define KSSTRING_Allocator
@ KSPROPERTY_STREAMALLOCATOR_FUNCTIONTABLE
@ KSPROPERTY_STREAMALLOCATOR_STATUS
_In_ PKSALLOCATOR_FRAMING AllocatorFraming
#define KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER
#define IOCTL_KS_PROPERTY
#define KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY
#define KSALLOCATOR_OPTIONF_SYSTEM_MEMORY
#define KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT
#define KSALLOCATOR_OPTIONF_COMPATIBLE
#define KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY
PVOID(NTAPI * PFNKSINITIALIZEALLOCATOR)(_In_ PVOID InitialContext, _In_ PKSALLOCATOR_FRAMING AllocatorFraming, _Outptr_ PVOID *Context)
struct KSSTREAMALLOCATOR_STATUS * PKSSTREAMALLOCATOR_STATUS
_In_ PKSPIN_CONNECT _In_ ACCESS_MASK _Out_ PHANDLE ConnectionHandle
_In_ PKSALLOCATOR_FRAMING _Out_ PHANDLE AllocatorHandle
#define KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE
PVOID AllocateItem(IN POOL_TYPE PoolType, IN SIZE_T NumberOfBytes)
NTSTATUS NTAPI KspCreateObjectType(IN HANDLE ParentHandle, IN LPWSTR ObjectType, PVOID CreateParameters, UINT CreateParametersSize, IN ACCESS_MASK DesiredAccess, OUT PHANDLE NodeHandle)
NTSTATUS KspCopyCreateRequest(IN PIRP Irp, IN LPWSTR ObjectClass, IN OUT PULONG Size, OUT PVOID *Result)
VOID FreeItem(IN PVOID Item)
struct KSIOBJECT_HEADER * PKSIOBJECT_HEADER
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)
VOID NTAPI ExDeletePagedLookasideList(IN PPAGED_LOOKASIDE_LIST Lookaside)
VOID NTAPI ExDeleteNPagedLookasideList(IN PNPAGED_LOOKASIDE_LIST Lookaside)
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 STATUS_NOT_SUPPORTED
#define STATUS_NOT_IMPLEMENTED
#define STATUS_BUFFER_TOO_SMALL
PULONG MinorVersion OPTIONAL
PFNKSDEFAULTFREE DefaultFree
PFNKSNPAGEDPOOLFREE NPagedPool
PFNKSNPAGEDPOOLALLOCATE NPagedPool
KSSTREAMALLOCATOR_STATUS Status
union ALLOCATOR::@980 Free
PFNKSDELETEALLOCATOR DefaultDelete
PAGED_LOOKASIDE_LIST PagedList
PFNKSNPAGEDPOOLDELETE NPagedPool
PFNKSPAGEDPOOLDELETE PagedPool
PFNKSDEFAULTALLOCATE DefaultAllocate
PFNKSPAGEDPOOLALLOCATE PagedPool
union ALLOCATOR::@979 Allocate
PFNKSPAGEDPOOLFREE PagedPool
union ALLOCATOR::@981 Delete
IKsAllocatorVtbl * lpVtbl
NPAGED_LOOKASIDE_LIST NPagedList
base of all file and directory entries
KSALLOCATOR_FRAMING Framing
struct _IO_STACK_LOCATION::@1575::@1576 DeviceIoControl
union _IO_STACK_LOCATION::@1575 Parameters
VOID InitializeContext(IN PCALLBACK16 Context, IN USHORT Segment, IN USHORT Offset)
#define RtlMoveMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_DEVICE_REQUEST
#define STATUS_INVALID_PARAMETER
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_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_ WDFMEMORY _Out_opt_ size_t * BufferSize
_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
_In_ PWDFDEVICE_INIT _In_ PWDF_PDO_EVENT_CALLBACKS DispatchTable
#define IsEqualGUIDAligned(guid1, guid2)
static WLX_DISPATCH_VERSION_1_4 FunctionTable
_In_opt_ PALLOCATE_FUNCTION Allocate
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST PAGED_LOOKASIDE_LIST
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST * PNPAGED_LOOKASIDE_LIST
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
struct LOOKASIDE_ALIGN _PAGED_LOOKASIDE_LIST * PPAGED_LOOKASIDE_LIST