亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? lmem.c

?? wince3.0的源碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
    @parm DWORD  | dwFlags   | HEAP_NO_SERIALIZE and HEAP_ZERO_MEM supported
    @parm DWORD  | dwBytes   | Desired size of block
*/
LPVOID WINAPI HeapAlloc(HANDLE hHeap, DWORD dwFlags, DWORD dwBytes) {
    LPVOID p;
    DEBUGMSG(DBGLMEM, (L"HeapAlloc %8.8lx %8.8lx %8.8lx\r\n", hHeap,dwFlags,dwBytes));
    if((dwFlags & ~(HEAP_NO_SERIALIZE | HEAP_ZERO_MEMORY)) || !hHeap) {
	    DEBUGMSG(DBGLMEM, (L"   HeapAlloc %8.8lx %8.8lx %8.8lx ==> %8.8lx\r\n", hHeap,dwFlags,dwBytes,0));
		SetLastError(ERROR_INVALID_PARAMETER);
		return NULL;
    }
    EnterCriticalSection(&hcs);
	if (!(p=FixedHeapAlloc((pheap)hHeap,dwBytes,(dwFlags & HEAP_ZERO_MEMORY?1:0))))
		SetLastError(ERROR_NOT_ENOUGH_MEMORY);
#ifdef MEMTRACKING
    if (p)
		AddTrackedItem(((pheap)hHeap)->dwMemType,p,TCB,GetCurrentProcessId(),FixedHeapSize((pheap)hHeap,p),0,0);
#endif
    CELOG_HeapAlloc(hHeap, dwFlags, dwBytes, (DWORD) p);
    DEBUGMSG(DBGLMEM, (L"   HeapAlloc %8.8lx %8.8lx %8.8lx ==> %8.8lx\r\n", hHeap,dwFlags,dwBytes,p));
    DEBUGCHK(!p || ((FixedHeapSize((pheap)hHeap,p) >= dwBytes) && (FixedHeapSize((pheap)hHeap,p) != (DWORD)-1)));
    LeaveCriticalSection(&hcs);
    return p;    
}

/*
    @doc BOTH EXTERNAL
	
	@func BOOL   | HeapFree | Frees a HeapAlloc'ed block of memory
    @parm HANDLE | hHeap    | Handle returned from CreateHeap()
    @parm DWORD  | dwFlags  | HEAP_NO_SERIALIZE only
    @parm LPVOID | lpMem    | Pointer to memory block
*/
BOOL WINAPI HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem) {
    BOOL retval;
    DEBUGMSG(DBGLMEM, (L"HeapFree %8.8lx %8.8lx %8.8lx\r\n",hHeap,dwFlags,lpMem));
    if ((dwFlags & ~HEAP_NO_SERIALIZE) || !hHeap || !lpMem) {
		DEBUGMSG(DBGLMEM, (L"   HeapFree %8.8lx %8.8lx %8.8lx ==> %8.8lx\r\n", hHeap,dwFlags,lpMem,0));
		SetLastError(ERROR_INVALID_PARAMETER);
		return FALSE;
    }
    EnterCriticalSection(&hcs);
    CELOG_HeapFree(hHeap, dwFlags, (DWORD)lpMem);
    retval = FixedHeapFree((pheap)hHeap,lpMem);
#ifdef MEMTRACKING
    if (retval)
		DeleteTrackedItem(((pheap)hHeap)->dwMemType, lpMem);
#endif
    DEBUGMSG(DBGLMEM, (L"HeapFree %8.8lx %8.8lx %8.8lx ==> %8.8lx\r\n",hHeap,dwFlags,lpMem,retval));
    LeaveCriticalSection(&hcs);
    return retval;
}

/*
	@doc BOTH EXTERNAL
	
	@func DWORD | HeapSize | Returns the size of a HeapAlloc'ed block of memory
    @parm HANDLE | hHeap | Heap from which memory was alloc'ed
    @parm DWORD | dwFlags | can be HEAP_NO_SERIALIZE
    @parm LPVOID | lpMem | handle of local memory object to get size of

	@comm Follows the Win32 reference description without restrictions 
    or modifications. 
*/

DWORD WINAPI HeapSize(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem) {
	UINT retval;
    DEBUGMSG(DBGLMEM, (L"HeapSize %8.8lx\r\n",lpMem));
    if (dwFlags & ~HEAP_NO_SERIALIZE) {
	    DEBUGMSG(DBGLMEM, (L"   HeapSize %8.8lx: Invalid parameter\r\n"));
	    SetLastError(ERROR_INVALID_PARAMETER);
		return (DWORD)-1;
    }
    EnterCriticalSection(&hcs);
    retval = FixedHeapSize(hHeap,lpMem);
    DEBUGMSG(DBGLMEM, (L"   HeapSize %8.8lx ==> %8.8lx\r\n",lpMem,retval));
    LeaveCriticalSection(&hcs);
	return retval;
}

/*
    @doc BOTH EXTERNAL
	
	@func BOOL   | HeapDestroy | Destroys a heap and releases its memory
    @parm HANDLE | hHeap       | Handle returned from CreateHeap()
*/
BOOL WINAPI HeapDestroy(HANDLE hHeap) {
    pheap pHeap = (heap *)hHeap;
    pheap pHeapTrav, pHeapNext;
    vaheapalloc *pva, *pvanext;
    LPBYTE pMem;
#ifdef MEMTRACKING
    LPVOID ptr;
#endif
    DEBUGMSG(DBGLMEM, (L"HeapDestroy %8.8lx\r\n",hHeap));
    if(!hHeap) {
		SetLastError(ERROR_INVALID_PARAMETER);
		DEBUGMSG(DBGLMEM, (L"   HeapDestroy %8.8lx ==> %8.8lx\r\n", hHeap,0));
		return FALSE;
    }
    CELOG_HeapDestroy(hHeap);
    EnterCriticalSection(&hcs);
    pva = pHeap->pVallocs;
    while (pva) {
    	pvanext = pva->pnext;
#if MEMTRACKING
		DeleteTrackedItem(pHeap->dwMemType, pva->pBase);
#endif
    	VirtualFree(pva->pBase,0,MEM_RELEASE);
    	FixedHeapFree(hHeap,pva);
    	pva = pvanext;
    }
    if (ProcessHeap.pNextHeap == pHeap)
   		ProcessHeap.pNextHeap = pHeap->pNextHeap;
    else {
		pHeapTrav = ProcessHeap.pNextHeap;
		while (pHeapTrav->pNextHeap != pHeap)
			pHeapTrav = pHeapTrav->pNextHeap;
		pHeapTrav->pNextHeap = pHeap->pNextHeap;
    }
    pHeapTrav = pHeap;
    while (pHeapTrav) {
    	pHeapNext = pHeapTrav->pGrowthHeap;
	    if (pHeapTrav->pMem) {
#ifdef MEMTRACKING
		    ptr = pHeapTrav->pMem;
    		do {
    			if (HEAPTOPTR(ptr) != pHeapTrav) { // don't free heap itself
					if (!IsSigValid(pHeapTrav,ptr,1))
					    DEBUGCHK(0);
					if (ISINUSE(ptr))
					    DeleteTrackedItem(pHeapTrav->dwMemType, HEAPTOPTR(ptr));
				}
    		} while ((ptr = NEXTBLOCK(pHeapTrav, ptr)) != pHeapTrav->pMem);
#endif
			pMem = pHeapTrav->pMem;
		    VirtualFree(pMem,pHeap->dwMaximumSize,MEM_DECOMMIT);
		   	VirtualFree(pMem, 0, MEM_RELEASE);
		}
		pHeapTrav = pHeapNext;
    }
	LocalFree(pHeap);
#ifdef MEMTRACKING
    DeleteTrackedItem(dwHeapMemType, hHeap);
#endif
    LeaveCriticalSection(&hcs);
    return TRUE;
}

void CompactAllHeaps(void) {
	pheap pHeap, pHeap2;
	EnterCriticalSection(&hcs);
	for (pHeap = &ProcessHeap; pHeap; pHeap = pHeap->pNextHeap)
		for (pHeap2 = pHeap; pHeap2; pHeap2 = pHeap2->pGrowthHeap)
			FixedHeapCompact(pHeap2);
	LeaveCriticalSection(&hcs);
}

/*
    @doc BOTH EXTERNAL
	
	@func HANDLE   | GetProcessHeap | Obtains a handle to the heap of the 
	calling process
*/
HANDLE WINAPI GetProcessHeap(VOID) {
	return (HANDLE)&ProcessHeap;
}

BOOL FillInOneHeap(THSNAP *pSnap, heap *pBaseHeap, TH32HEAPENTRY **ppNext) {
	heap *pHeap;
	LPBYTE ptr;
	vaheapalloc *vaptr;
	for (pHeap = pBaseHeap; pHeap; pHeap = pHeap->pGrowthHeap) {
		if (ptr = pHeap->pMem) {
			do {
				if (!(*ppNext = (TH32HEAPENTRY *)THGrow(pSnap,sizeof(TH32HEAPENTRY))))
					return FALSE;
				(*ppNext)->heapentry.dwSize = sizeof(TH32HEAPENTRY);
				(*ppNext)->heapentry.hHandle = (HANDLE)ptr;
				(*ppNext)->heapentry.dwAddress = (DWORD)ptr;
				(*ppNext)->heapentry.dwBlockSize = HDRSIZE + ITEMSIZE(ptr);
				(*ppNext)->heapentry.dwFlags = ISFREE(ptr) ? LF32_FREE : ISDEAD(ptr) ? LF32_FREE | LF32_DECOMMIT : LF32_FIXED;
				(*ppNext)->heapentry.dwLockCount = ISINUSE(ptr) ? 1 : 0;
				(*ppNext)->heapentry.dwResvd = 0;
				(*ppNext)->heapentry.th32ProcessID = GetCurrentProcessId();
				(*ppNext)->heapentry.th32HeapID = (DWORD)pBaseHeap;
				ppNext = &(*ppNext)->pNext;
			} while ((ptr = NEXTBLOCK(pHeap, ptr)) != pHeap->pMem);
		}
	}
	for (vaptr = pBaseHeap->pVallocs; vaptr; vaptr = vaptr->pnext) {
		if (!(*ppNext = (TH32HEAPENTRY *)THGrow(pSnap,sizeof(TH32HEAPENTRY))))
			return FALSE;
		(*ppNext)->heapentry.dwSize = sizeof(TH32HEAPENTRY);
		(*ppNext)->heapentry.hHandle = (HANDLE)vaptr->pBase;
		(*ppNext)->heapentry.dwAddress = (DWORD)vaptr->pBase;
		(*ppNext)->heapentry.dwBlockSize = vaptr->dwSize;
		(*ppNext)->heapentry.dwFlags = LF32_FIXED | LF32_BIGBLOCK;
		(*ppNext)->heapentry.dwLockCount = 1;
		(*ppNext)->heapentry.dwResvd = 0;
		(*ppNext)->heapentry.th32ProcessID = GetCurrentProcessId();
		(*ppNext)->heapentry.th32HeapID = (DWORD)pBaseHeap;
		ppNext = &(*ppNext)->pNext;
	}
	*ppNext = 0;
	return TRUE;
}

BOOL GetHeapSnapshot(THSNAP *pSnap, BOOL bMainOnly, LPVOID *pDataPtr) {
	heap *pHeap;
	// Must set permissions since we're in a callback and it's possible pSnap is in an intermediate process
	// context we can no longer see.  We don't need to restore the old permissions, since when we return
	// from this function, they'll be restored by the system
	SetProcPermissions((DWORD)-1);
	EnterCriticalSection(&hcs);
	if (bMainOnly) {
		if (!FillInOneHeap(pSnap,&ProcessHeap,(TH32HEAPENTRY **)pDataPtr)) {
			LeaveCriticalSection(&hcs);
			return FALSE;
		}
	} else {
		TH32HEAPLIST **ppNext;
		ppNext = (TH32HEAPLIST **)pDataPtr;
		for (pHeap = &ProcessHeap; pHeap; pHeap = pHeap->pNextHeap) {
			if (!(*ppNext = (TH32HEAPLIST *)THGrow(pSnap,sizeof(TH32HEAPLIST)))) {
				LeaveCriticalSection(&hcs);
				return FALSE;
			}
			(*ppNext)->heaplist.dwSize = sizeof(HEAPLIST32);
			(*ppNext)->heaplist.th32ProcessID = GetCurrentProcessId();
			(*ppNext)->heaplist.th32HeapID = (DWORD)pHeap;
			(*ppNext)->heaplist.dwFlags = pHeap == &ProcessHeap ? HF32_DEFAULT : 0;
			if (!FillInOneHeap(pSnap,pHeap,&(*ppNext)->pHeapEntry)) {
				LeaveCriticalSection(&hcs);
				return FALSE;
			}
			ppNext = &(*ppNext)->pNext;
		}
		*ppNext = 0;
	}
	LeaveCriticalSection(&hcs);
	return TRUE;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性大战久久久久久久蜜臀 | 五月天亚洲婷婷| 久久网站最新地址| 欧美日韩精品是欧美日韩精品| 成人涩涩免费视频| 激情综合五月婷婷| 蓝色福利精品导航| 麻豆一区二区在线| 日本不卡一二三| 日韩主播视频在线| 亚洲福利一二三区| 亚洲成人动漫一区| 五月婷婷综合激情| 图片区日韩欧美亚洲| 亚洲丝袜精品丝袜在线| 久久久精品中文字幕麻豆发布| 欧美区一区二区三区| 欧美日韩综合不卡| 欧美精品日韩一区| 欧美一区二区三区人| 欧美一级片在线观看| 欧美一区二区三区喷汁尤物| 欧美一区二区性放荡片| 欧美一区二区三区系列电影| 日韩视频一区二区在线观看| 精品毛片乱码1区2区3区| 日韩精品一区二区在线观看| 久久综合九色综合久久久精品综合| 欧美不卡一区二区| 久久久精品欧美丰满| 国产日韩欧美不卡| 亚洲日本一区二区| 亚洲一区二区视频在线观看| 亚洲一区成人在线| 蜜臀av性久久久久av蜜臀妖精 | 精品一区二区精品| 国产一区二区三区免费| 成人网在线播放| 日本道精品一区二区三区 | 中文字幕欧美区| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲欧美日韩系列| 爽好久久久欧美精品| 久久丁香综合五月国产三级网站| 激情欧美一区二区三区在线观看| 国产福利电影一区二区三区| 成人h动漫精品一区二区| 91视频在线看| 欧美日韩一区二区三区不卡| 91精品国产入口在线| 国产午夜精品久久久久久免费视| 亚洲女人小视频在线观看| 亚洲风情在线资源站| 黄色日韩三级电影| 色老汉av一区二区三区| 69成人精品免费视频| 国产午夜精品久久久久久免费视| 亚洲三级小视频| 蜜臂av日日欢夜夜爽一区| 国产大片一区二区| 91成人网在线| 精品久久久久久久一区二区蜜臀| 中文字幕一区二区不卡| 午夜激情一区二区| 国产原创一区二区三区| www.亚洲国产| 91精品视频网| 国产精品不卡在线观看| 日韩高清国产一区在线| 成人国产在线观看| 欧美一区欧美二区| 亚洲激情五月婷婷| 国产很黄免费观看久久| 欧美日韩不卡一区| 国产精品久久久久久久久久免费看| 亚洲第一av色| 成人动漫视频在线| 精品久久久久久综合日本欧美| 亚洲乱码国产乱码精品精的特点 | 精品一区二区三区在线视频| 99久久亚洲一区二区三区青草| 日韩三级在线免费观看| 亚洲欧美日韩久久| 国产乱子伦一区二区三区国色天香| 成人福利视频在线看| 欧美综合一区二区三区| 国产精品高潮呻吟久久| 黄色小说综合网站| 欧美一区二区免费观在线| 有码一区二区三区| 国产99久久久久久免费看农村| 欧美一区二区二区| 亚洲在线视频免费观看| 成人三级在线视频| 欧美一级高清片| 亚洲成人一区二区在线观看| 成人午夜电影网站| 欧美性感一类影片在线播放| 国产精品女主播av| 国产91丝袜在线播放| www国产成人免费观看视频 深夜成人网| 午夜精品视频在线观看| 99久久亚洲一区二区三区青草| 久久久久久久久97黄色工厂| 日本视频在线一区| 日本高清不卡在线观看| 国产精品热久久久久夜色精品三区 | 日韩va亚洲va欧美va久久| 色播五月激情综合网| 精品国产网站在线观看| 中文字幕一区二区三区av| 国产美女一区二区| 精品国产成人在线影院 | 91九色最新地址| 综合色中文字幕| 91小视频在线观看| 综合亚洲深深色噜噜狠狠网站| 成人午夜大片免费观看| 国产精品第13页| 99久久综合精品| 中文字幕一区免费在线观看| av午夜精品一区二区三区| 中文字幕一区二区三区色视频 | 久久夜色精品一区| 老司机午夜精品| 欧美一区二区三区在| 亚洲sss视频在线视频| 欧美日本一区二区三区| 视频一区国产视频| 欧美一区二区大片| 国产在线视视频有精品| 久久精品夜色噜噜亚洲a∨| 成人一区在线观看| 亚洲国产精品av| 99久久精品国产精品久久| 亚洲色图在线看| 91美女精品福利| 亚洲电影视频在线| 日韩视频在线永久播放| 国产一区二区三区在线观看免费视频| 欧美美女bb生活片| 日韩国产精品久久久久久亚洲| 欧美一区二区三区在线看| 国内精品伊人久久久久影院对白| 久久众筹精品私拍模特| 成人免费视频一区二区| 亚洲色欲色欲www| 欧美精品一二三区| 麻豆精品视频在线观看| 精品国产乱码久久久久久1区2区| 成人综合婷婷国产精品久久免费| 综合色中文字幕| 色素色在线综合| 日本女人一区二区三区| 久久综合一区二区| 成人国产精品免费观看视频| 亚洲一区二区影院| 日韩美女在线视频| av网站免费线看精品| 日本不卡123| 国产精品嫩草99a| 欧美丝袜丝nylons| 精品一区二区三区久久| 欧美一区二区三区白人| 成人午夜私人影院| 男男视频亚洲欧美| 国产精品久99| 这里只有精品99re| 菠萝蜜视频在线观看一区| 亚洲成av人片在www色猫咪| 久久久不卡影院| 欧美三级在线播放| 粉嫩在线一区二区三区视频| 亚洲bdsm女犯bdsm网站| 国产女人aaa级久久久级 | 欧美亚洲国产bt| 国内精品久久久久影院色| 亚洲欧美国产三级| www成人在线观看| 欧美三级午夜理伦三级中视频| 国产一区视频导航| 性做久久久久久免费观看| 一区二区三区欧美| 中文字幕在线不卡视频| 久久精品日产第一区二区三区高清版| 欧美一级日韩不卡播放免费| 欧美日韩黄视频| 欧美在线免费视屏| 日本久久精品电影| 91丝袜国产在线播放| 成人h动漫精品一区二区 | 久久影院午夜论| 日韩欧美国产综合| 欧美一区二区三区白人| 777色狠狠一区二区三区| 欧美三级电影在线看| 欧美视频一区二区三区在线观看 | 91视频.com| 波多野结衣视频一区| 国产精品一二三区|