in rtl/inc/kptr.h [121:148]
PAGED KPoolPtr<THeader> MakeExtendedPoolPtr(ULONG poolTag, ULONG payloadSize, _Out_opt_ PULONG allocationSize = nullptr)
{
PAGED_CODE();
if (allocationSize)
{
*allocationSize = 0;
}
ULONG totalSize;
if (!NT_SUCCESS(RtlULongAdd(sizeof(THeader), payloadSize, &totalSize)))
{
return nullptr;
}
auto allocation = MakeSizedPoolPtr<THeader>(poolTag, totalSize);
if (!allocation)
{
return nullptr;
}
if (allocationSize)
{
*allocationSize = totalSize;
}
return allocation;
}