132 lines
2.8 KiB
C
132 lines
2.8 KiB
C
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
ntrtlbuffer2p.h
|
|
|
|
Abstract:
|
|
|
|
Author:
|
|
|
|
Jay Krell (JayKrell) January 2002
|
|
|
|
Environment:
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#define RtlpGetAllocatedBufferSize2(b) \
|
|
(RtlpAssertBuffer2Consistency((b)),
|
|
((PPRIVATE_RTL_BUFFER2)(b))->AllocatedSize)
|
|
|
|
#define RtlpGetRequestedBufferSize2(b) \
|
|
(RtlpAssertBuffer2Consistency((b)),
|
|
((PPRIVATE_RTL_BUFFER2)(b))->RequestedSize)
|
|
|
|
#define RtlpGetBuffer2(b) \
|
|
(RtlpAssertBuffer2Consistency((b)),
|
|
((PPRIVATE_RTL_BUFFER2)(b))->Buffer)
|
|
|
|
typedef struct _PRIVATE_RTL_BUFFER2 {
|
|
PVOID Buffer;
|
|
PVOID StaticBuffer;
|
|
SIZE_T AllocatedSize;
|
|
SIZE_T RequestedSize;
|
|
SIZE_T StaticBufferSize;
|
|
struct _RTL_BUFFER2_CLASS * Class;
|
|
} PRIVATE_RTL_BUFFER2, *PPRIVATE_RTL_BUFFER2;
|
|
|
|
#if DBG
|
|
VOID
|
|
FASTCALL
|
|
RtlpAssertBuffer2Consistency(
|
|
PPRIVATE_RTL_BUFFER2 Buffer
|
|
);
|
|
#else
|
|
#define RtlpAssertBuffer2Consistency(x) /* nothing */
|
|
#endif
|
|
|
|
#define NT_STYLE 1
|
|
|
|
#if NT_STYLE
|
|
|
|
typedef NTSTATUS RETURN_TYPE;
|
|
#define Ret Status
|
|
#define ORIGINATE_INVALID_PARAMETER() do { Status = STATUS_INVALID_PARAMETER; goto Exit; } while(0)
|
|
#define FN_PROLOG() NTSTATUS Status
|
|
#define FN_EPILOG() Status = STATUS_SUCCESS; goto Exit; Exit: return Status
|
|
#define MY_FAILED(x) (!NT_SUCCESS(x))
|
|
#define MY_SUCCESS(x) (NT_SUCCESS(x))
|
|
|
|
#elif WIN32_STYLE
|
|
|
|
typedef BOOL RETURN_TYPE;
|
|
#define Ret Success
|
|
void SetLastError_ERROR_INVALID_PARAMETER() { SetLastError(ERROR_INVALID_PARAMETER); }
|
|
#define ORIGINATE_INVALID_PARAMETER() do { SetLastError_ERROR_INVALID_PARAMETER(); goto Exit; } while(0)
|
|
#define FN_PROLOG() BOOL Success = FALSE
|
|
#define FN_EPILOG() Succes = TRUE; goto Exit; Exit: return Success
|
|
#define MY_FAILED(x) (!(x))
|
|
#define MY_SUCCESS(x) (x)
|
|
|
|
#endif
|
|
|
|
#define CHECK_PARAMETER(expr) do { if (!(expr)) { ORIGINATE_INVALID_PARAMETER(); } while(0)
|
|
|
|
PVOID
|
|
FASTCALL
|
|
RtlpFindNonNullInPointerArray(
|
|
PVOID * PointerArray,
|
|
SIZE_T SizeOfArray
|
|
);
|
|
|
|
NTSTATUS
|
|
FASTCALL
|
|
RtlpValidateBuffer2Class(
|
|
PPRIVATE_RTL_BUFFER2 Class
|
|
);
|
|
|
|
VOID
|
|
FASTCALL
|
|
RtlpBuffer2ClassFree(
|
|
PRTL_BUFFER2_CLASS Class,
|
|
PVOID p
|
|
);
|
|
|
|
BOOL
|
|
FASTCALL
|
|
RtlpBuffer2ClassCanReallocate(
|
|
PRTL_BUFFER2_CLASS Class
|
|
);
|
|
|
|
PVOID
|
|
FASTCALL
|
|
RtlpBuffer2ClassAllocate(
|
|
PRTL_BUFFER2_CLASS Class,
|
|
SIZE_T Size
|
|
);
|
|
|
|
VOID
|
|
FASTCALL
|
|
RtlpBuffer2ClassError(
|
|
PRTL_BUFFER2_CLASS Class
|
|
);
|
|
|
|
RETURN_TYPE
|
|
NTAPI
|
|
RtlpInitBuffer2(
|
|
PPRIVATE_RTL_BUFFER2 Buffer,
|
|
struct _RTL_BUFFER_CLASS * Class,
|
|
PVOID StaticBuffer,
|
|
SIZE_T StaticBufferSize
|
|
);
|
|
|
|
VOID
|
|
FASTCALL
|
|
RtlpFreeBuffer2(
|
|
PPRIVATE_RTL_BUFFER2 Buffer
|
|
);
|