blob: f5133bd4add6901c589030270e68b94d603bbbee [file] [log] [blame]
//-------------------------------------------------------------------------------------------------
// <copyright file="buffutil.h" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// Binary serialization helper functions.
// </summary>
//-------------------------------------------------------------------------------------------------
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
// macro definitions
#define ReleaseBuffer ReleaseMem
#define ReleaseNullBuffer ReleaseNullMem
#define BuffFree MemFree
// function declarations
HRESULT BuffReadNumber(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__out DWORD* pdw
);
HRESULT BuffReadNumber64(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__out DWORD64* pdw64
);
HRESULT BuffReadString(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__deref_out_z LPWSTR* pscz
);
HRESULT BuffReadStringAnsi(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__deref_out_z LPSTR* pscz
);
HRESULT BuffReadStream(
__in_bcount(cbBuffer) const BYTE* pbBuffer,
__in SIZE_T cbBuffer,
__inout SIZE_T* piBuffer,
__deref_out_bcount(*pcbStream) BYTE** ppbStream,
__out SIZE_T* pcbStream
);
HRESULT BuffWriteNumber(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in DWORD dw
);
HRESULT BuffWriteNumber64(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in DWORD64 dw64
);
HRESULT BuffWriteString(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in_z_opt LPCWSTR scz
);
HRESULT BuffWriteStringAnsi(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in_z_opt LPCSTR scz
);
HRESULT BuffWriteStream(
__deref_out_bcount(*piBuffer) BYTE** ppbBuffer,
__inout SIZE_T* piBuffer,
__in_bcount(cbStream) const BYTE* pbStream,
__in SIZE_T cbStream
);
#ifdef __cplusplus
}
#endif