main
h 91 lines 2.2 KB
Raw
1 #pragma once
2 // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
3
4
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 #define ReleaseMem(p) if (p) { MemFree(p); }
10 #define ReleaseNullMem(p) if (p) { MemFree(p); p = NULL; }
11
12 HRESULT DAPI MemInitialize();
13 void DAPI MemUninitialize();
14
15 LPVOID DAPI MemAlloc(
16 __in SIZE_T cbSize,
17 __in BOOL fZero
18 );
19 LPVOID DAPI MemReAlloc(
20 __in LPVOID pv,
21 __in SIZE_T cbSize,
22 __in BOOL fZero
23 );
24 HRESULT DAPI MemReAllocSecure(
25 __in LPVOID pv,
26 __in SIZE_T cbSize,
27 __in BOOL fZero,
28 __deref_out LPVOID* ppvNew
29 );
30 HRESULT DAPI MemAllocArray(
31 __inout LPVOID* ppvArray,
32 __in SIZE_T cbArrayType,
33 __in DWORD dwItemCount
34 );
35 HRESULT DAPI MemReAllocArray(
36 __inout LPVOID* ppvArray,
37 __in DWORD cArray,
38 __in SIZE_T cbArrayType,
39 __in DWORD dwNewItemCount
40 );
41 HRESULT DAPI MemEnsureArraySize(
42 __deref_inout_bcount(cArray * cbArrayType) LPVOID* ppvArray,
43 __in DWORD cArray,
44 __in SIZE_T cbArrayType,
45 __in DWORD dwGrowthCount
46 );
47 HRESULT DAPI MemEnsureArraySizeForNewItems(
48 __inout LPVOID* ppvArray,
49 __in DWORD cArray,
50 __in DWORD cNewItems,
51 __in SIZE_T cbArrayType,
52 __in DWORD dwGrowthCount
53 );
54 HRESULT DAPI MemInsertIntoArray(
55 __deref_inout_bcount((cExistingArray + cInsertItems) * cbArrayType) LPVOID* ppvArray,
56 __in DWORD dwInsertIndex,
57 __in DWORD cInsertItems,
58 __in DWORD cExistingArray,
59 __in SIZE_T cbArrayType,
60 __in DWORD dwGrowthCount
61 );
62 void DAPI MemRemoveFromArray(
63 __inout_bcount((cExistingArray) * cbArrayType) LPVOID pvArray,
64 __in DWORD dwRemoveIndex,
65 __in DWORD cRemoveItems,
66 __in DWORD cExistingArray,
67 __in SIZE_T cbArrayType,
68 __in BOOL fPreserveOrder
69 );
70 void DAPI MemArraySwapItems(
71 __inout_bcount(cbArrayType) LPVOID pvArray,
72 __in DWORD dwIndex1,
73 __in DWORD dwIndex2,
74 __in SIZE_T cbArrayType
75 );
76
77 HRESULT DAPI MemFree(
78 __in LPVOID pv
79 );
80 SIZE_T DAPI MemSize(
81 __in LPCVOID pv
82 );
83 HRESULT DAPI MemSizeChecked(
84 __in LPCVOID pv,
85 __out SIZE_T* pcb
86 );
87
88 #ifdef __cplusplus
89 }
90 #endif
91