126 lines
4.3 KiB
C
126 lines
4.3 KiB
C
![]() |
/*-----------------------------------------------------------------------------
|
|||
|
caryMemory_lib.h -- cary's Virtual memory <EFBFBD>z<EFBFBD>C
|
|||
|
Waei(c) All rights reserved
|
|||
|
author: <EFBFBD>\<EFBFBD>ʳ<EFBFBD>Cary Hsu, 2000.10.8
|
|||
|
-----------------------------------------------------------------------------*/
|
|||
|
#ifndef __MEMDLL
|
|||
|
#define __MEMDLL
|
|||
|
|
|||
|
#define _MEM_LIB
|
|||
|
|
|||
|
#ifdef _MEM_LIB
|
|||
|
#define MEMDLL_API
|
|||
|
#else
|
|||
|
#ifdef MEMDLL_EXPORTS
|
|||
|
#define MEMDLL_API __declspec(dllexport)
|
|||
|
#else
|
|||
|
#define MEMDLL_API __declspec(dllimport)
|
|||
|
#endif
|
|||
|
#endif
|
|||
|
|
|||
|
//<2F>^<5E>Ǫ<EFBFBD><C7AA><EFBFBD><EFBFBD>~***************************************************************************************
|
|||
|
#define ERROR_MEMORY_OK 0x00000000
|
|||
|
#define ERROR_MEMORY_INITFAILED 0x00000001 //<2F>t<EFBFBD>mHandle<6C>}<7D>C<EFBFBD><43><EFBFBD>~
|
|||
|
|
|||
|
#define ERROR_HEAP_NOT_ENOUGH 0x00000010
|
|||
|
#define ERROR_HEAP_LIST_NOT_ENOUGH 0x00000020
|
|||
|
|
|||
|
//*************************************************************************************************
|
|||
|
/* <09><><EFBFBD>l<EFBFBD>ưO<C6B0><4F><EFBFBD><EFBFBD><EFBFBD>禡<EFBFBD>w
|
|||
|
return: ERROR_MEMORY_OK: <EFBFBD><EFBFBD><EFBFBD>\
|
|||
|
ERROR_MEMORY_INITFAILED:<EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>ƥ<EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
DWORD MemoryInit();
|
|||
|
|
|||
|
/* <09><><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>禡<EFBFBD>w<EFBFBD><77><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD> */
|
|||
|
void MemoryRelease();
|
|||
|
|
|||
|
//*************************************************************************************************
|
|||
|
/* <09>O<EFBFBD>d<EFBFBD>@<40>j<EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD>Virtual Memory<72>A<EFBFBD>öǦ^Handle<6C>A<EFBFBD><41>ij<EFBFBD>Hpage<67><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD>t<EFBFBD>m1<6D><31>commit page<67><65><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>)
|
|||
|
parameter: lpdwHandle: <EFBFBD>Ǧ^Handle
|
|||
|
iSize: <EFBFBD>n<EFBFBD>t<EFBFBD>m<EFBFBD>h<EFBFBD>ְO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>æ^<EFBFBD>ǫإߪ<EFBFBD><EFBFBD>j<EFBFBD>p
|
|||
|
return: <EFBFBD>DNULL: <EFBFBD>^<EFBFBD>ǰt<EFBFBD>m<EFBFBD>O<EFBFBD><EFBFBD><EFBFBD>骺<EFBFBD><EFBFBD><EFBFBD>}
|
|||
|
NULL: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
MEMDLL_API LPVOID VirtualReserve( LPDWORD lpdwHandle, int &iSize);
|
|||
|
|
|||
|
/* <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Handle<6C>t<EFBFBD>m<EFBFBD><6D><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>
|
|||
|
parameter: lpdwHandle: Handle<EFBFBD><EFBFBD> */
|
|||
|
MEMDLL_API void VirtualRelease( LPDWORD lpdwHandle);
|
|||
|
|
|||
|
/* <09>o<EFBFBD><6F>Exception<6F><6E><EFBFBD>B<EFBFBD>z<EFBFBD>禡
|
|||
|
parameter: dwHandle: Handle<EFBFBD><EFBFBD>
|
|||
|
lpEP: EXCEPTION_POINTERS<EFBFBD><EFBFBD>structure
|
|||
|
return: EXCEPTION_CONTINUE_EXECUTION: <EFBFBD>~<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
EXCEPTION_CONTINUE_SEARCH: <EFBFBD>~<EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>B<EFBFBD>zexception handle */
|
|||
|
MEMDLL_API int ExpFilter( DWORD dwHandle, LPEXCEPTION_POINTERS lpEP);
|
|||
|
|
|||
|
//*************************************************************************************************
|
|||
|
//*************************************************************************************************
|
|||
|
/* <09>t<EFBFBD>miSize<7A>ӰO<D3B0><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Heap
|
|||
|
parameter: lpdwHandle: <EFBFBD>Ǧ^Handle
|
|||
|
iSize: <EFBFBD>n<EFBFBD>t<EFBFBD>m<EFBFBD>h<EFBFBD>֪<EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
return: TRUE: <EFBFBD>t<EFBFBD>m<EFBFBD><EFBFBD><EFBFBD>\
|
|||
|
FALSE: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
MEMDLL_API BOOL HeapCreate( LPDWORD lpdwHandle, int &iSize);
|
|||
|
|
|||
|
/* <09><><EFBFBD><EFBFBD>Heap<61><70><EFBFBD>Ҧ<EFBFBD><D2A6>O<EFBFBD><4F><EFBFBD><EFBFBD>
|
|||
|
parameter: lpdwHandle: Handle<EFBFBD><EFBFBD> */
|
|||
|
MEMDLL_API void HeapRelease( LPDWORD lpdwHandle);
|
|||
|
|
|||
|
/* <09>M<EFBFBD><4D>Heap<61><70>List<73>A<EFBFBD>A<EFBFBD>ϥ<EFBFBD>
|
|||
|
parameter: dwHandle: Handle<EFBFBD><EFBFBD> */
|
|||
|
MEMDLL_API void HeapReset( DWORD dwHandle);
|
|||
|
|
|||
|
/* <09>qlpheap<61><70><EFBFBD>A<EFBFBD>t<EFBFBD>mdwSize<7A>j<EFBFBD>p<EFBFBD><70><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD>
|
|||
|
parameter: dwHandle: Handle<EFBFBD><EFBFBD>
|
|||
|
dwSize: <EFBFBD>n<EFBFBD>t<EFBFBD>m<EFBFBD>h<EFBFBD>ְO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
return: <EFBFBD>DNULL: <EFBFBD>Ǧ^<EFBFBD>t<EFBFBD>m<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
NULL: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
MEMDLL_API LPVOID HeapAlloc( DWORD dwHandle, DWORD dwSize);
|
|||
|
|
|||
|
/* <09>qlpheap<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Heap<61><70>memlt
|
|||
|
parameter: dwHandle: Handle<EFBFBD><EFBFBD>
|
|||
|
lpAddress: <EFBFBD>n<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>} */
|
|||
|
MEMDLL_API void HeapFree( DWORD dwHandle, LPVOID *lpAddress);
|
|||
|
|
|||
|
//*************************************************************************************************
|
|||
|
//*************************************************************************************************
|
|||
|
typedef struct USEDMEMORY{
|
|||
|
LPBYTE lpbyStart;
|
|||
|
DWORD dwSize;
|
|||
|
}*LPUSEDMEMORY;
|
|||
|
|
|||
|
/* <09><><EFBFBD>^lpheap<61><70><EFBFBD>Ĥ@<40><>Heap list
|
|||
|
parameter: dwHandle: Handle<EFBFBD><EFBFBD>
|
|||
|
return: <EFBFBD>Ǧ^<EFBFBD>ϥΤ<EFBFBD><EFBFBD><EFBFBD>address<EFBFBD>ANULL<EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD>@<EFBFBD><EFBFBD> */
|
|||
|
MEMDLL_API LPUSEDMEMORY GetMemoryListHead( DWORD dwHandle);
|
|||
|
|
|||
|
/* <09><><EFBFBD>^lpheap<61><70><EFBFBD>U<EFBFBD>@<40><>Heap list
|
|||
|
parameter: dwHandle: Handle<EFBFBD><EFBFBD>
|
|||
|
return: <EFBFBD>Ǧ^<EFBFBD>ϥΤ<EFBFBD><EFBFBD><EFBFBD>address<EFBFBD>ANULL<EFBFBD><EFBFBD><EFBFBD>̫<EFBFBD><EFBFBD>@<EFBFBD><EFBFBD> */
|
|||
|
MEMDLL_API LPUSEDMEMORY GetMemoryListNext( DWORD dwHandle);
|
|||
|
|
|||
|
/* <09><><EFBFBD>^<5E><><EFBFBD>~<7E><>
|
|||
|
parameter: dwHandle: Handle<EFBFBD><EFBFBD>
|
|||
|
return: <EFBFBD>^<EFBFBD>ǿ<EFBFBD><EFBFBD>~<EFBFBD><EFBFBD> */
|
|||
|
MEMDLL_API DWORD GetCaryError( DWORD dwHandle);
|
|||
|
|
|||
|
//*************************************************************************************************
|
|||
|
//*************************************************************************************************
|
|||
|
/* <09>h<EFBFBD><68><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>ϥ<EFBFBD>MMX<4D><58><EFBFBD>w<EFBFBD><77>pentum II<49>̨Τƪ<CEA4><C6AA>B<EFBFBD>z
|
|||
|
parameter: dest: <EFBFBD>ت<EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
|||
|
src: <EFBFBD>ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
|||
|
cnt: <EFBFBD>h<EFBFBD><EFBFBD><EFBFBD><EFBFBD>byte<EFBFBD><EFBFBD>
|
|||
|
return: TRUE: <EFBFBD><EFBFBD><EFBFBD>\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
FALSE: <EFBFBD><EFBFBD><EFBFBD>}<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>k */
|
|||
|
MEMDLL_API BOOL mmx_CopyMemory( LPVOID dest, LPVOID src, int cnt);
|
|||
|
|
|||
|
/* <09>h<EFBFBD><68><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>ϥ<EFBFBD>MMX<4D><58><EFBFBD>w<EFBFBD><77>pentum II<49>̨Τƪ<CEA4><C6AA>B<EFBFBD>z
|
|||
|
parameter: dest: <EFBFBD>ت<EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
|||
|
src: <EFBFBD>ӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>}
|
|||
|
cnt: <EFBFBD>h<EFBFBD><EFBFBD><EFBFBD><EFBFBD>byte<EFBFBD><EFBFBD>
|
|||
|
return: TRUE: <EFBFBD><EFBFBD><EFBFBD>\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
FALSE: <EFBFBD><EFBFBD><EFBFBD>}<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD>k */
|
|||
|
MEMDLL_API BOOL mmx_CopyMemory_test( LPVOID dest, LPVOID src, int cnt);
|
|||
|
|
|||
|
#endif
|