_Pre_notnull_ _Pre_writable_byte_size_()

in src/framework/shared/core/fxmemorybufferpreallocatedapi.cpp [144:175]


    _Pre_notnull_ _Pre_writable_byte_size_(BufferSize)
    PVOID Buffer,
    _In_
    __drv_when(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
    size_t BufferSize
    )
{
    DDI_ENTRY();

    PFX_DRIVER_GLOBALS pFxDriverGlobals;
    NTSTATUS status;
    FxMemoryBufferPreallocated* pMemory;

    FxObjectHandleGetPtrAndGlobals(GetFxDriverGlobals(DriverGlobals),
                                   Memory,
                                   FX_TYPE_MEMORY_PREALLOCATED,
                                   (PVOID*) &pMemory,
                                   &pFxDriverGlobals);

    FxPointerNotNull(pFxDriverGlobals, Buffer);

    if (BufferSize == 0) {
        status = STATUS_INVALID_PARAMETER;
        DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_ERROR, TRACINGDEVICE,
                            "Zero BufferSize not allowed, %!STATUS!", status);
        return status;
    }

    pMemory->UpdateBuffer(Buffer, BufferSize);

    return STATUS_SUCCESS;
}