ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡ÔĶÁ¹ý³Ì·¢ÏÖÈκδíÎóÇë¸æËßÎÒÃÇ£¬Ð»Ð»£¡£¡ ±¨¸æ´íÎó
ÈÙÒ«µç×ÓÊé ·µ»Ø±¾ÊéĿ¼ ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ½øÈëÊé°É ¼ÓÈëÊéÇ©

windows»·¾³ÏÂ32λ»ã±àÓïÑÔ³ÌÐòÉè¼Æ-µÚÕÂ

°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡



ÉêÇëÄÚ´æµÄÇëÇóÖ»ÓÐÒ»¸öÄÜÂíÉÏÖ´ÐУ¬ÆäËû½«´¦Óڵȴý״̬£¬¶ÔÓÚÒ»¸ö˽ÓжÑÀ´Ëµ£¬Õâ¸öÏÞÖÆÈÔÈ»´æÔÚ£¬µ±´Ó¶ÑÖзÖÅäÄÚ´æʱ£¬ÏµÍ³ÓÐÏÂÃæµÄ²Ù×÷²½Ö裺

£¨1£©±éÀúÒÑ·ÖÅäµÄºÍ¿ÕÏеÄÄÚ´æ¿éµÄÁ´½Ó±í¡£

£¨2£©Ñ°ÕÒÒ»¸ö¿ÕÏÐÄÚ´æ¿éµÄµØÖ·¡£

£¨3£©Í¨¹ý½«¿ÕÏÐÄÚ´æ¿é±ê¼ÇΪ¡°ÒÑ·ÖÅ䡱À´·ÖÅäÐÂÄÚ´æ¿é¡£

£¨4£©½«ÐÂÄÚ´æ¿éÌí¼Ó¸øÄÚ´æ¿éÁ´½Ó±í¡£

µ±Á½¸öÏ̼߳¸ºõͬʱÔÚͬһ¸ö¶ÑÖÐÉêÇëÄÚ´æʱ£¬Èç¹ûµÚÒ»¸öÏß³ÌÖ´ÐÐÁË£¨1£©¡¢£¨2£©Á½²½µÄʱºò±»ÏµÍ³Çл»µ½µÚ¶þ¸öÏßÐÔ£¬Ïß³Ì2ͬÑùÓÖÖ´ÐУ¨1£©¡¢£¨2£©Á½²½£¬ÄÇôËüÃÇÕÒµ½µÄ¿ÕÏÐÄÚ´æ¿é¾Í»áÊÇͬһ¿éÄڴ棬½á¹û¿ÉÏë¶øÖª¡£½â¾öÎÊÌâµÄ°ì·¨¾ÍÊÇÈõ¥¸öÏ̶߳ÀÕ¼¶Ô¶ÑºÍËüµÄÁ´½Ó±íµÄ·ÃÎÊȨ£¬µ±Ò»¸öÏß³ÌÈ«²¿Ö´ÐÐÁËÕâ4¸ö²½Öèºó²ÅÔÊÐíµÚ¶þ¸öÏ߳̿ªÊ¼µÚÒ»¸ö²½Öè¡£

ÔÚÓÃĬÈϲÎÊý½¨Á¢µÄ¶ÑÖÐÉêÇëÄڴ棬ϵͳ»á½øÐжÀÕ¼µÄ¼ì²â¹¤×÷£¬µ±È»ÕâÒª»¨·ÑÒ»¶¨µÄϵͳ¿ªÏú¡£µ«Êǵ±ÒÔÏÂÇé¿ö´æÔÚʱ£¬¿ÉÒÔ±£Ö¤²»»áͬʱÓжà¸öÏß³ÌÔÚͬһ¸ö¶ÑÖÐÉêÇëÄڴ棺

¡ñ¡¡¡¡¡¡½ø³ÌֻʹÓÃÒ»¸öÏ̡߳£

¡ñ¡¡¡¡¡¡½ø³ÌʹÓöà¸öỊ̈߳¬µ«ÊÇÿ¸öÏß³ÌÖ»·ÃÎÊÊôÓÚ×Ô¼ºµÄ˽Óжѡ£

¡ñ¡¡¡¡¡¡½ø³ÌʹÓöà¸öỊ̈߳¬µ«³ÌÐòÖÐÒѾ­ÓÐÆäËû´ëÊ©À´±£Ö¤ËüÃDz»»áͬʱȥ·ÃÎÊͬһ¸ö˽Óжѡ£

ÔÚÕâЩÇé¿öÏ£¬¿ÉÒÔÖ¸¶¨HEAP_NO_SERIALIZE¡¡¡¡¡¡¡¡±êÖ¾À´½¨Á¢Ë½Óжѣ¬ÕâÑù½¨Á¢µÄ¶Ñ²»»á½øÐжÀÕ¼ÐԵļì²â£¬·ÃÎÊËٶȿÉÒÔ¸ü¿ì¡£

²ÎÊýdwInitialSizeÖ¸¶¨´´½¨¶Ñʱ·ÖÅä¸ø¶ÑµÄÎïÀíÄڴ棬Ëæ×ŶÑÖÐÄÚ´æµÄ·ÖÅ䣬µ±ÕâЩÄڴ汻ʹÓÃÍêʱ£¬¶ÑµÄ³¤¶È¿ÉÒÔ×Ô¶¯À©Õ¹¡£dwMaximumSize²ÎÊýÖ¸¶¨ÁËÄܹ»À©Õ¹µ½µÄ×î´óÖµ£¬µ±À©Õ¹µ½×î´óֵʱÔÙ³¢ÊÔÔÚ¶ÑÖзÖÅäÄÚ´æµÄ»°¾Í»áʧ°Ü£¬Õâ¸öÖµ¾ö¶¨ÁËϵͳ¸ø¶Ñ±£ÁôµÄÁ¬ÐøµØÖ·¿Õ¼äµÄ´óС£¬º¯Êý»á×Ô¶¯½«ÕâÁ½¸ö²ÎÊýµÄÊýÖµµ÷ÕûΪҳÃæ´óСµÄÕûÊý±¶¡£Èç¹ûdwMaximumSize²ÎÊýµÄÖµÖ¸¶¨Îª0£¬ÄÇô¶ÑûÓÐ×î´óÖµÏÞÖÆ£¬À©Õ¹·¶Î§Ö»ÊÜÏÞÓÚ¿ÕÏеÄÄÚ´æ×ÜÁ¿¡£Èç¹ûdwMaximumSizeÖ¸¶¨Îª·Ç0Öµ£¬ÔÚ¶ÑÖÐÉêÇëµÄ×î´óµ¥¸öÄÚ´æ¿é²»ÄÜ´óÓÚ7FFF8h£¨Ï൱ÓÚ524¡¡KB£©£¬dwMaximumSizeÖ¸¶¨0µÄ»°¾ÍûÓÐÕâ¸öÏÞÖÆ¡£

Èç¹ûÒ»¸ö˽ÓжѲ»ÔÙÐèÒªÁË£¬¿ÉÒÔͨ¹ýµ÷ÓÃHeapDestroyº¯Êý½«ËüÊÍ·Å£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡HeapDestroy£¬hHeap

ÊÍ·Å˽ÓжѿÉÒÔÊͷŶÑÖаüº¬µÄËùÓÐÄÚ´æ¿é£¬Ò²¿ÉÒÔ½«¶ÑÕ¼ÓõÄÎïÀíÄÚ´æºÍ±£ÁôµÄµØÖ·¿Õ¼äÈ«²¿·µ»¹¸øϵͳ¡£Èç¹ûº¯ÊýÔËÐгɹ¦£¬·µ»ØÖµÊÇTRUE¡£µ±ÔÚ½ø³ÌÖÕÖ¹µÄʱºòûÓе÷ÓÃHeapDestroyº¯Êý½«Ë½ÓжÑÊÍ·Åʱ£¬ÏµÍ³»á×Ô¶¯ÊÍ·Å¡£

ËäÈ»ÔÚĬÈ϶ÑÖеÄÄÚ´æÉêÇëÖ÷ҪʹÓñê×¼ÄÚ´æ¹ÜÀíº¯Êý£¬¶ø¶Ñ¹ÜÀíº¯ÊýµÄÖ÷Òª¹ÜÀí¶ÔÏóÊÇ˽Óжѣ¬µ«ÊÇÈç¹û±à³ÌÕßÔ¸ÒâµÄ»°£¬Ò²¿ÉÒÔÓöѹÜÀíº¯ÊýÔÚĬÈ϶ÑÖзÖÅäÄڴ棬±Ï¾¹Ä¬È϶ÑÒ²ÊÇÒ»¸ö¶Ñ£¬µ«ÕâÑùµÄ»°Ê×ÏÈÐèÒªÓÐÒ»¸ö¾ä±úÀ´´ú±íĬÈ϶ѣ¬Ä¬È϶ѵľä±ú²»ÄÜÓÃHeapCreateÀ´´´½¨£¬µ«¿ÉÒÔÓÃGetProcessHeapº¯ÊýÀ´»ñÈ¡£¬Õâ¸öº¯ÊýûÓÐÊäÈë²ÎÊý£¬Èç¹ûÖ´Ðгɹ¦Ôò·µ»ØĬÈ϶ѵľä±ú¡£×¢Ò⣺Õâ¸ö¾ä±úÊÇ¡°»ñÈ¡¡±µÄ¶ø²»ÊÇ¡°´´½¨¡±µÄ£¬ËùÒÔ²»Äܵ÷ÓÃHeapDestroyÀ´ÊÍ·ÅËü£¬Èç¹û¶ÔËüµ÷ÓÃHeapDestroyº¯Êý£¬ÏµÍ³»á½«ËüºöÂÔ¡£

2¡£¡¡ÔÚ¶ÑÖзÖÅäºÍÊÍ·ÅÄÚ´æ¿é

Èç¹ûÒªÔÚ¶ÑÖзÖÅäÄÚ´æ¿é£¬¿ÉÒÔʹÓÃHeapAllocº¯Êý£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡HeapAlloc£¬hHeap£¬dwFlags£¬dwBytes

¡¡¡¡¡¡¡¡¡£if¡¡¡¡¡¡¡¡¡¡eax¡¡&&¡¡£¨eax¡¡¡¶¡¡0c0000000h£©

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡lpMemory£¬eax

¡¡¡¡¡¡¡¡¡£endif

hHeap²ÎÊý¾ÍÊÇÇ°Ãæ´´½¨¶Ñʱ·µ»ØµÄ¶Ñ¾ä±ú£¨»òÕßʹÓÃGetProcessHeapº¯ÊýµÃµ½µÄĬÈ϶Ѿä±ú£©£¬ÓÃÀ´±íʾÔÚÄĸö¶ÑÖзÖÅäÄڴ棬dwBytesÊÇÐèÒª·ÖÅäµÄÄÚ´æ¿éµÄ×Ö½ÚÊý£¬dwFlagsÊDZêÖ¾£¬Ëü¿ÉÒÔÊÇÏÂÃæÖµµÄ×éºÏ£º

¡ñ¡¡¡¡¡¡HEAP_NO_SERIALIZE¡ª¡ªµ±Ê¹ÓÃHeapCreateʱָ¶¨ÁËHEAP_NO_SERIALIZE±êÖ¾£¬ÒÔºóÕâ¸ö¶ÑÖÐʹÓõÄËùÓÐHeapAllocº¯Êý¶¼²»½øÐжÀÕ¼¼ì²â¡£Èç¹ûʹÓÃHeapCreateʱûÓÐÖ¸¶¨HEAP_NO_SERIALIZE±êÖ¾£¬¿ÉÒÔÔÚÕâÀïʹÓÃHEAP_NO_SERIALIZE±êÖ¾µ¥¶ÀÖ¸¶¨¶Ô±¾´Î·ÖÅä²Ù×÷²»½øÐжÀÕ¼¼ì²â¡£

¡ñ¡¡¡¡¡¡HEAP_GENERATE¡¡_EXCEPTIONS¡ª¡ªÈç¹ûÉêÇëÄÚ´æʧ°Üº¯Êý·µ»Ø¾ßÌåµÄ³ö´íÔ­Òò£¬¶ø²»½ö·µ»ØÒ»¸öNULL¡£Í¬Ñù£¬µ±Ê¹ÓÃHeapCreateʱָ¶¨Á˴˱êÖ¾µÄÇé¿öÏ£¬ÔÚÕâÀï¾Í²»±ØÔÙÒ»´ÎÖ¸¶¨¡£

¡ñ¡¡¡¡¡¡HEAP_ZERO_MEMORY¡ª¡ª½«·ÖÅäµÄÄÚ´æÓÃ0³õʼ»¯¡£

µ±º¯Êý·ÖÅäÄÚ´æ³É¹¦µÄʱºò£¬·µ»ØÖµÊÇÖ¸ÏòÄÚ´æ¿éµÚÒ»¸ö×Ö½ÚµÄÖ¸Õ룬Èç¹û·ÖÅäÄÚ´æʧ°Ü£¬·µ»ØÖµÒªÊÓdwFlagsµÄÉèÖã¬Èç¹ûûÓÐÖ¸¶¨HEAP_GENERATE_EXCEPTIONS±êÖ¾£¬ÄÇô·µ»ØֵΪNULL£¬·ñÔò£¬·µ»ØÖµ¿ÉÄÜÊÇÏÂÃæµÄÊýÖµ£º

¡ñ¡¡¡¡¡¡STATUS_NO_MEMORY¡ª¡ªÈ¡ÖµÎª0C0000017h£¬±íʾÄÚ´æ²»¹»¡£

¡ñ¡¡¡¡¡¡STATUS_ACCESS_VIOLATION¡ª¡ªÈ¡ÖµÎª0C0000005h£¬±íʾ²ÎÊý²»ÕýÈ·»òÕ߶ѱ»ÆÆ»µ¡£

ÔÚ¶ÑÖзÖÅäµÄÄÚ´æ¿éÖ»ÄÜÊǹ̶¨µØÖ·µÄÄÚ´æ¿é£¬²»ÏñGlobalAllocº¯ÊýÒ»Ñù¿ÉÒÔ·ÖÅä¿ÉÒƶ¯µÄÄÚ´æ¿é¡£Èç¹ûÒªÊÍ·Å·ÖÅäµ½µÄÄÚ´æ¿é£¬¿ÉÒÔʹÓÃHeapFreeº¯Êý£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡HeapFree£¬hHeap£¬dwFlags£¬lpMemory

hHeap²ÎÊýÊǶѾä±ú£¬lpMemoryÊÇHeapAllocº¯Êý·µ»ØµÄÄÚ´æ¿éÖ¸Õ룬dwFlags²ÎÊýÖÐÒ²¿ÉÒÔʹÓÃHEAP_NO_SERIALIZE±êÖ¾£¬º¬ÒåÓëʹÓÃHeapAllocʱÏàͬ¡£µ±º¯ÊýÖ´Ðгɹ¦µÄʱºò£¬·µ»ØֵΪ·Ç0Öµ£¬Ö´ÐÐʧ°ÜÔòº¯Êý·µ»Ø0¡£

¶ÔÓÚÓÃHeapAlloc·ÖÅäµÄÄÚ´æ¿é£¬Ò²¿ÉÒÔʹÓÃHeapReAllocÖØе÷Õû´óС£º

invoke¡¡¡¡HeapReAlloc£¬hHeap£¬dwFlags£¬lpMemory£¬dwBytes

¡¡¡¡¡¡¡¡¡£if¡¡¡¡¡¡¡¡¡¡eax¡¡&&¡¡£¨eax¡¡¡¶¡¡0c0000000h£©

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡¡¡¡¡¡¡¡¡lpMemory£¬eax

¡¡¡¡¡¡¡¡¡£endif



¡¡
À´Ô´£ºµç×Ó¹¤Òµ³ö°æÉç¡¡×÷ÕߣºÂÞÔƱò¡¡ÉÏÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÊéÄ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÏÂÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ÉÏÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÊéÄ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÏÂÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡


µÚ10Õ¡¡ÄÚ´æ¹ÜÀíºÍÎļþ²Ù×÷


10¡£1¡¡ÄÚ¡¡´æ¡¡¹Ü¡¡Àí£¨6£©

¡¡¡¡¡¡¡¡
ÆäÖÐdwBytesÖ¸¶¨ÁËеĴóС£¬dwFlagsΪ±êÖ¾£¬¿ÉÒÔ×éºÏÖ¸¶¨µÄ±êÖ¾ÓУº

¡ñ¡¡¡¡¡¡HEAP_GENERATE_EXCEPTIONS¡ª¡ª²Î¼ûHeapAllocº¯ÊýµÄ˵Ã÷¡£

¡ñ¡¡¡¡¡¡HEAP_NO_SERIALIZE¡ª¡ª²Î¼ûHeapAllocº¯ÊýµÄ˵Ã÷¡£

¡ñ¡¡¡¡¡¡HEAP_ZERO_MEMORY¡ª¡ªµ±À©´óÄÚ´æ¿éµÄʱºò£¬½«ÐÂÔöµÄ²¿·Ö³õʼ»¯Îª0£¬µ±ËõСÄÚ´æµÄʱºò£¬±¾²ÎÊýÎÞЧ¡£

¡ñ¡¡¡¡¡¡HEAP_REALLOC_IN_PLACE_ONLY¡ª¡ªÓëGlobalReAllocº¯ÊýÀàËÆ£¬µ±ÄÚ´æ¿éµÄ¸ß´¦ÒѾ­±»ÆäËûÄÚ´æ¿éÕ¼¾ÝµÄʱºò£¬ÒªÀ©´óÄÚ´æ¿é±ØÐ뽫ËüÒƶ¯Î»Ö㬵±Ã»ÓÐÖ¸¶¨Õâ¸ö±êÖ¾µÄʱºò£¬º¯Êý»áÔÚÐèÒªµÄʱºò×Ô¶¯Òƶ¯ÄÚ´æ¿é£¬Èç¹ûÖ¸¶¨ÁËÕâ¸ö±êÖ¾£¬Ôò²»ÔÊÐíÄÚ´æ¿éÒƶ¯£¬Õâʱ£¬µ±ÄÚ´æ¿é¸ß´¦²»ÊÇ¿ÕÏеÄʱºò£¬º¯ÊýµÄÖ´Ðлáʧ°Ü¡£

Èç¹ûº¯ÊýÖ´Ðгɹ¦£¬·µ»ØÖµÊÇÖ¸ÏòÐÂÄÚ´æ¿éµÄÖ¸Õ룬ÏÔ¶øÒ×¼û£¬µ±ËõС»òÀ©´óÄÚ´æ¿éʱָ¶¨ÁËHEAP_REALLOC_IN_PLACE_ONLY±êÖ¾£¬ÔòÕâ¸öÖ¸Õë±Ø¶¨ºÍÔ­À´µÄÏàͬ£¬·ñÔòµÄ»°£¬Ëü¼ÈÓпÉÄܺÍÔ­À´µÄÖ¸ÕëÏàͬҲÓпÉÄܲ»Í¬¡£

3¡£¡¡ÆäËû¶Ñ¹ÜÀíº¯Êý

³ýÁËÉÏÃæµÄһЩº¯Êý£¬¶Ñ¹ÜÀíº¯ÊýÖл¹ÓÐHeapLock£¬HeapUnlock£¬GetProcessHeaps£¬Heappact£¬HeapSize£¬HeapValidateºÍHeapWalkµÈº¯Êý¡£

GetProcessHeapsº¯ÊýÓÃÀ´Áгö½ø³ÌÖÐËùÓеĶѣ¨×¢Ò⣺²»ÒªºÍÓÃÀ´»ñȡĬÈ϶Ѿä±úµÄGetProcessHeapº¯Êý¸ã»ì£©£¬HeapWalkÓÃÀ´ÁгöÒ»¸ö¶ÑÖÐËùÓеÄÄÚ´æ¿é£¬HeapValidateº¯ÊýÓÃÀ´¼ìÑéÒ»¸ö¶ÑÖÐËùÓÐÄÚ´æ¿éµÄÓÐЧÐÔ¡£Õâ3¸öº¯ÊýƽʱºÜÉÙʹÓã¬Ò»°ãÔÚµ÷ÊÔµÄʱºòʹÓá£

GetProcessHeapsº¯ÊýµÄÓ÷¨ÊÇ£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡GetProcessHeaps£¬NumberOfHeaps£¬lpHeaps

ÆäÖÐlpHeapsÊÇÒ»¸öÖ¸Õ룬ָÏòÓÃÀ´½ÓÊնѾä±úµÄ»º³åÇø£¬NumberOfHeaps²ÎÊýÖ¸¶¨ÁËÕâ¸ö»º³åÇøÖпÉÒÔ´æ·Å¾ä±úµÄÊýÁ¿£¬ÏÔÈ»£¬»º³åÇøµÄ³¤¶ÈÓ¦¸ÃµÈÓÚNumberOfHeaps³ËÒÔ4×Ö½Ú¡£º¯ÊýÖ´Ðк󣬽ø³ÌÖÐËùÓжѵľä±úÈ«²¿·µ»Øµ½»º³åÇøÖУ¬ÆäÖÐÒ²°üÀ¨Ä¬È϶ѵľä±ú¡£

HeapWalkº¯ÊýµÄÓ÷¨ÊÇ£º

¡¡¡¡¡¡¡¡¡£repeat

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡HeapWalk£¬hHeap£¬lpEntry

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡push¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£»¼ì²â»º³åÇøÖеÄÄÚ´æ¿éÐÅÏ¢

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡pop¡¡eax

¡£until¡¡¡¡£¡eax

hHeapÊÇÐèÒª²Ù×÷µÄ¶Ñ¾ä±ú£¬lpEntryÖ¸ÏòÒ»¸ö°üº¬ÓÐPROCESS_HEAP_ENTRY½á¹¹µÄ»º³åÇø¡£µ÷ÓÃHeapWalkº¯Êýʱ£¬º¯Êýÿ´ÎÔÚPROCESS_HEAP_ENTRY½á¹¹Öзµ»ØÒ»¸öÄÚ´æ¿éµÄÐÅÏ¢£¬Èç¹û»¹ÓÐÆäËûÄÚ´æ¿é£¬º¯Êý·µ»ØTRUE£¬³ÌÐò¿ÉÒÔһֱѭ»·µ÷ÓÃHeapWalkº¯ÊýÖ±µ½º¯Êý·µ»ØFALSEΪֹ¡£ÔÚ¶àÏ̵߳ijÌÐòÖÐʹÓÃHeapWalk£¬±ØÐëÊ×ÏÈʹÓÃHeapLockº¯Êý½«¶ÑËø¶¨£¬·ñÔòµ÷Óûáʧ°Ü¡£

HeapValidateÓÃÀ´ÑéÖ¤¶ÑµÄÍêÕûÐÔ»ò¶ÑÖÐij¸öÄÚ´æ¿éµÄÍêÕûÐÔ£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡HeapValidate£¬hHeap£¬dwFlags£¬lpMemory

ÆäÖÐhHeapÖ¸¶¨ÒªÑéÖ¤µÄ¶Ñ¡£Èç¹ûlpMemoryΪNULL£¬ÄÇôº¯Êý˳ÐòÑéÖ¤¶ÑÖÐËùÓеÄÄÚ´æ¿é£»Èç¹ûlpMemoryÖ¸¶¨ÁËÒ»¸öÄÚ´æ¿é£¬ÔòÖ»ÑéÖ¤Õâ¸öÄÚ´æ¿é¡£dwFlagsÊDZêÖ¾£¬¿ÉÒÔÖ¸¶¨HEAP_NO_SERIALIZE¡¡±êÖ¾¡£Èç¹ûÑéÖ¤½á¹ûÊÇËùÓеÄÄÚ´æ¿é¶¼ÍêºÃÎÞË𣬺¯Êý·µ»Ø·Ç0Öµ£¬·ñÔòº¯Êý·µ»Ø0¡£

HeapLockº¯ÊýºÍHeapUnlockº¯ÊýÓÃÀ´Ëø¶¨¶ÑºÍ½âËø¶Ñ¡£ÕâÁ½¸öº¯ÊýÖ÷ÒªÓÃÓÚÏ̵߳Äͬ²½£¬µ±ÔÚÒ»¸öÏß³ÌÖе÷ÓÃHeapLockº¯Êýʱ£¬Õâ¸öÏß³ÌÔÝʱ³ÉΪÕâ¸ö¶ÑµÄËùÓÐÕߣ¬Ò²¾ÍÊÇ˵ֻÓÐÕâ¸öÏß³ÌÄܶԶѽøÐвÙ×÷£¨°üÀ¨·ÖÅäÄÚ´æ¡¢ÊÍ·Å¡¢µ÷ÓÃHeapWalkµÈº¯Êý£©£¬ÔÚ±ðµÄÏß³ÌÖжÔÕâ¸ö¶ÑµÄ²Ù×÷»áµÈ´ýÔÚÄÇÀֱµ½ËùÓÐÕßÏ̵߳÷ÓÃHeapUnlock½âËøΪֹ¡£ÕâÁ½¸öº¯ÊýµÄÓï·¨ÈçÏ£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡HeapLock£¬hHeap

¡¡¡¡¡¡¡¡invoke¡¡¡¡HeapUnlock£¬hHeap

Èç¹ûº¯ÊýÖ´Ðгɹ¦£¬·µ»ØֵΪ·Ç0Öµ£¬·ñÔòº¯Êý·µ»Ø0¡£Ò»°ãÀ´Ëµ£¬ºÜÉÙÔÚ³ÌÐòÖÐʹÓÃÕâÁ½¸öº¯Êý£¬¶
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨0£© ²È£¨0£©
δÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡