Ì«×ÓүС˵Íø > ÔÓ¼¯µç×ÓÊé > windows»·¾³ÏÂ32λ»ã±àÓïÑÔ³ÌÐòÉè¼Æ >

µÚ71½Ú

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

С˵£º windows»·¾³ÏÂ32λ»ã±àÓïÑÔ³ÌÐòÉè¼Æ ×ÖÊý£º ÿҳ4000×Ö

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



ä±ú¶ø²»ÊÇÄÚ´æÖ¸Õ룬Óû§ÐèÒª±£´æÕâ¸ö¾ä±ú£¬ÔÚËø¶¨»òÊÍ·ÅÄÚ´æµÄʱºò»¹ÒªÓõ½Ëü¡£Ò»¸ö½ø³Ì¿ÉÒÔÉêÇëµÄ¿ÉÒƶ¯ÄÚ´æµÄ¿éÊý×î´ó²»Äܳ¬¹ý65¡¡536¸ö£¬ÉêÇë¹Ì¶¨ÄÚ´æ¿éʱÔòûÓÐÊýÁ¿ÏÞÖÆ¡£

ҪʹÓÿÉÒƶ¯ÄÚ´æ֮ǰ£¬ÐèÒª°ÑËüËø¶¨£¬ÕâÏ൱ÓÚ¸æËßWindowsÏÖÔÚ³ÌÐòҪʹÓÃÕâ¿éÄÚ´æÁË£¬²»Äܽ«ËüÒƶ¯£¬Ëø¶¨ÄÚ´æʹÓÃGlobalLockº¯Êý£º

invoke¡¡¡¡GlobalLock£»hMemory

¡£if¡¡¡¡¡¡¡¡¡¡eax

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

¡£endif

º¯ÊýµÄÈë¿Ú²ÎÊýÊÇGlobalAlloc·µ»ØµÄÄÚ´æ¾ä±ú£¬Èç¹ûËø¶¨³É¹¦£¬º¯Êý·µ»ØÒ»¸öÖ¸Õ룬³ÌÐò¿ÉÒÔÓÃʹÓù̶¨ÄÚ´æ¿éͬÑùµÄ·½·¨À´Ê¹ÓÃËü£»Èç¹ûËø¶¨Ê§°Ü£¬Ôòº¯Êý·µ»ØNULL¡£Ã¿´ÎËø¶¨·µ»ØµÄÖ¸ÕëλÖÿÉÄÜÊDz»Í¬µÄ£¬µ«ÄÚ´æ¿éÖеÄÊý¾Ý²»»á±ä»¯¡£

µ±³ÌÐòÔÝʱ²»ÐèÒª²Ù×÷Õâ¿éÄÚ´æµÄʱºò£¬Ó¦¸Ã½«Ëü½âËø£¬·ñÔòºÍʹÓù̶¨µÄÄÚ´æ¿é¾ÍûÓÐÇø±ðÁË£¬½âËøʹÓÃGlobalUnlockº¯Êý£º

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡invoke¡¡¡¡GlobalUnlock£»hMemory

º¯ÊýµÄ²ÎÊýͬÑùÊÇGlobalAlloc·µ»ØµÄ¾ä±ú£¬½âËø³É¹¦µÄ»°º¯Êý·µ»Ø·Ç0Öµ¡£¶ÁÕß¿ÉÄÜÓиöÎÊÌ⣺ÔÚ¶àÏ̵߳ijÌÐòÖУ¬Á½¸öµØ·½Í¬Ê±Ëø¶¨Äڴ棬µ«µ±Ò»¸öµØ·½»¹ÔÚʹÓõÄÇé¿öÏÂÁíÒ»¸öµØ·½È´µ÷ÓÃGlobalUnlock½«ÄÚ´æ½âËøÁËÔõô°ì£¿Æäʵ²»Óõ£ÐÄÕâ¸öÎÊÌ⣬WindowsΪÿ¸ö¿ÉÒƶ¯µÄÄÚ´æ¾ä±úά»¤Ò»¸öËø¶¨¼ÆÊý£¬Ã¿´ÎËø¶¨ÄÚ´æµÄʱºò¼ÆÊý¼Ó1£¬½âËøµÄʱºò¼ÆÊý¼õ1£¬Ö»Óе±¼ÆÊýΪ0µÄʱºòÄÚ´æ²ÅÕæÕý±»½âËø£¬ËùÒÔÖ»Òª³ÌÐòÖеÄGlobalLockº¯ÊýºÍGlobalUnlockº¯ÊýÊÇÅä¶ÔµÄ£¬¾Í²»Óõ£ÐÄÕâ¸öÎÊÌâ¡£

ÒªÊÍ·ÅÒ»¸ö¿ÉÒƶ¯µÄÄÚ´æ¿é£¬Í¬ÑùʹÓÃGlobalFreeº¯Êý£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡GlobalFree£¬hMemory

µ«Ê¹ÓõIJÎÊýÊÇGlobalAlloc·µ»ØµÄÄÚ´æ¾ä±ú£¬Èç¹ûÊͷųɹ¦£¬º¯Êý·µ»ØNULL¡£²»¹ÜÄڴ浱ǰÊÇ·ñ´¦ÔÚËø¶¨×´Ì¬£¬¶¼¿ÉÒÔ±»³É¹¦ÊÍ·Å¡£

µ÷Õû¿ÉÒƶ¯ÄÚ´æ¿éµÄ´óС£¬Í¬ÑùʹÓÃGlobalReAllocº¯Êý£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡GlobalReAlloc£¬hMemory£¬dwBytes£¬GMEM_ZEROINIT¡¡or¡¡GMEM_MOVEABLE

Èç¹ûµ÷Õû³É¹¦£¬·µ»ØÖµ¾ÍÊÇÊäÈëµÄhMemory£¬Ê§°ÜµÄ»°·µ»ØÖµÊÇNULL¡£¼´Ê¹ÄÚ´æ¿éÔÚËø¶¨×´Ì¬£¬º¯ÊýÈÔÈ»¿ÉÒÔµ÷Óóɹ¦£¬µ«ÕâʱºòÄÚ´æ¿é¿ÉÄÜÒѾ­±»Òƶ¯ÁËλÖã¬Ô­À´ÓÃGlobalLockº¯Êý»ñÈ¡µÄÖ¸Õë¿ÉÄÜÒѾ­Ê§Ð§ÁË£¬ËùÒÔµ÷Õû¿ÉÒƶ¯ÄÚ´æ¿éµÄ´óС×îºÃ»¹ÊÇÏȽ«ÄÚ´æ½âËø£¬µÈµ÷ÕûÍê±ÏÒÔºóÔÙËø¶¨Ê¹Óá£

ÓÉÓÚʹÓÿÉÒƶ¯µÄÄÚ´æ¿é¶àÁËÒ»¸öËø¶¨µÄ¶¯×÷£¬ËÙ¶È×ÔȻҪ±ÈʹÓù̶¨µÄÄÚ´æ¿éÒªÂýÒ»µã£¬µ«¹Ì¶¨ÄÚ´æ¿éÓÖ´æÔÚËéƬÎÊÌ⣬³ÌÐòÖÐʹÓÃÄÄÖÖ·½·¨ÓиöÈ¡ÉáµÄÎÊÌâ¡£Èç¹û³ÌÐòҪƵ·±µØ·ÖÅäºÍÊͷŲ»¶¨³¤µÄÄÚ´æ¿é£¬ÄÚ´æµÄËéƬ»¯ÏÖÏó¾Í±È½ÏÑÏÖØ£¬ÌرðÊǵ±³ÌÐò³¤Ê±¼äÔËÐÐʱ£¬ÕâÖÖÇé¿öÏÂʹÓÿÉÒƶ¯ÄÚ´æ¿é±È½ÏºÃ£»Èç¹û³ÌÐòÖ»½øÐÐÉÙÁ¿µÄÄÚ´æ²Ù×÷£¬»òÕßËäȻƵ·±·ÖÅäºÍÊÍ·ÅÄڴ棬µ«Ê¹ÓõÄÄÚ´æ¿é³¤¶È¶¼ÊÇÒ»ÑùµÄ£¬ÔòʹÓù̶¨ÄÚ´æ¿é¿ÉÒÔ½Úʡʱ¼ä¡£

3¡£¡¡¿É¶ªÆúµÄÄÚ´æ¿é

·ÖÅä¿ÉÒƶ¯ÄÚ´æ¿éµÄʱºò»¹¿ÉÒÔÅäºÏGMEM_MOVEABLE±ê־ʹÓÃGMEM_DI¡¡SCARDABLE±êÖ¾£¬ÕâÑùÉú³ÉµÄÄÚ´æ¿éÊǿɶªÆúµÄÄÚ´æ¿é£¬±íʾµ±Windows¼±ÐèÄÚ´æʹÓõÄʱºò£¬¿ÉÒÔ½«Ëü´ÓÎïÀíÄÚ´æÖжªÆú£¬¿É¶ªÆúµÄÄÚ´æ¿éÊ×ÏȱØÐëÊÇ¿ÉÒƶ¯µÄÄÚ´æ¿é¡£º¯Êýµ÷ÓÃÈçÏ£º

invoke¡¡¡¡GlobalAlloc£¬GHND¡¡or¡¡GMEM_DISCARDABLE£¬dwBytes

¡£if¡¡¡¡¡¡¡¡¡¡eax

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡hMemory£¬eax

¡£endif

µ±ÓÃGlobalLockËø¶¨ÄÚ´æµÄʱºòÈç¹û·µ»ØNULLÖ¸Õ룬±íʾÄÚ´æÒѾ­±»Windows¶ªÆúÁË£¬µ±È»ÆäÖеÄÊý¾ÝÒ²¶ªÊ§ÁË£¬³ÌÐòÐèÒªÖØÐÂÉú³ÉÊý¾Ý¡£µ±ÄÚ´æ¿é±»¶ªÆúµÄʱºò£¬ÄÚ´æ¾ä±ú»¹ÊÇÓÐЧµÄ£¬Èç¹û³ÌÐò»¹ÒªÊ¹ÓÃÕâ¸ö¾ä±ú£¬ÄÇô¿ÉÒÔ¶ÔËüʹÓÃGlobalReAllocº¯ÊýÀ´ÖØзÖÅäÄÚ´æ¡£

µ±¿É¶ªÆúÄÚ´æ¿éµÄËø¶¨¼ÆÊýΪ0ʱ£¬³ÌÐòÒ²¿ÉÒÔʹÓÃGlobalDiscardº¯ÊýÖ÷¶¯½«Ëü¶ªÆú£¬ÕâºÍWindows½«Ëü¶ªÆúµÄЧ¹ûÊÇÒ»ÑùµÄ£º

invoke¡¡¡¡GlobalDiscard£¬hMemory

¡¡Ê¹ÓÃÄڴ溯ÊýʱÓÐÁ½¸öµØ·½ÐèÒªÌرð×¢Ò⣺

£¨1£©NULLÖ¸ÕëµÄ¼ì²â¡ª¡ªGlobalAllocº¯ÊýºÍGlobalLockº¯Êý¶¼¿ÉÒÔ·µ»ØÄÚ´æÖ¸Õ룬ÔÚʹÓÃÖ¸ÕëÇ°Ò»¶¨Òª¼ì²âËüµÄÓÐЧÐÔ£¬Èç¹ûʹÓÃÁ˺¯ÊýÖ´ÐÐʧ°Ü¶ø·µ»ØµÄNULLÖ¸ÕëÀ´·ÃÎÊÊý¾Ý£¬»áµ¼Ö³ÌÐòԽȨ·ÃÎʲ»¸Ã·ÃÎʵĵط½£¬´Ó¶ø±»WindowsºÁ²»ÁôÇéµØÖÕÖ¹µô£¬Õâ¾ÍÊÇÀý×Ó´úÂëÖÐ×ÜÊÇÓиöifÓï¾äÀ´ÅжÏeaxÊÇ·ñΪNULLµÄÔ­Òò¡£

£¨2£©×¢Òâ·ÃÎÊÔ½½çÎÊÌ⡪¡ªÔ½½ç²Ù×÷Ò²»áÒýÆðԽȨ·ÃÎÊ£¬Ç§Íò²»Òªµ½³¬³öÄÚ´æ¿é³¤¶ÈµÄµØ·½È¥·ÃÎÊ£¬ÀýÈ磬ʹÓÃlstrcpyÖ®ÀàµÄº¯Êý´¦Àí×Ö·û´®Ö®Ç°£¬ÏÈÓÃlstrlen¼ì²â×Ö·û´®³¤¶ÈÊÇÒ»¸öºÃÏ°¹ß¡£

4¡£¡¡»ñÈ¡ÄÚ´æ¿éµÄÐÅÏ¢

±ê×¼ÄÚ´æ¹ÜÀíº¯ÊýÖеÄÆäËûº¯ÊýGlobalFlags£¬GlobalHandleºÍGlobalSizeÓÃÀ´»ñÈ¡ÒÑ·ÖÅäÄÚ´æ¿éµÄһЩÐÅÏ¢¡£

GlobalFlagsº¯ÊýÖ÷ÒªÓÃÀ´»ñÈ¡¿ÉÒƶ¯ÄÚ´æ¿éµ±Ç°µÄËø¶¨¼ÆÊý£¬Ò²¿ÉÒÔÓÃÀ´¼ì²â¿É¶ªÆúÄÚ´æ¿éÊÇ·ñÒѾ­±»¶ªÆú¡£¶ÔÒ»¸öhMemoryµ÷ÓÃGlobalFlagsº¯ÊýÈçÏÂËùʾ£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡GlobalFlags£¬hMemory

Èç¹û²»ÊÇ·µ»ØGMEM_INVALID_HANDLE£¬Ôò±íʾµ÷Óóɹ¦£¬Õâʱ·µ»ØÖµµÄµÍ8λÊÇÄÚ´æ¿éµÄËø¶¨¼ÆÊý£¬³ÌÐò¿ÉÒÔÓÃGMEM_LOCKCOUNT¶Ô»ñÈ¡¼ÆÊýÖµ½øÐÐand²Ù×÷£¨ÔÚWindows¡£incÍ·ÎļþÖУ¬GMEM_LOCKCOUNT¶¨ÒåΪ0ffh£©£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡GlobalFlags£¬hMemory

¡¡¡¡¡¡¡¡and¡¡¡¡¡¡¡¡¡¡eax£¬GMEM_LOCKCOUNT

mov¡¡¡¡¡¡¡¡¡¡dwLockCount£¬eax

·µ»ØÖµµÄÆäËûÊý¾Ýλ¿ÉÄÜ°üº¬ÏÂÁбêÖ¾£º

¡ñ¡¡¡¡¡¡GMEM_DISCARDABLE¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡±íʾÄÚ´æ¿éÊǿɶªÆúÄÚ´æ¿é¡£

¡ñ¡¡¡¡¡¡GMEM_DISCARDED¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡±íʾÄÚ´æ¿éÒѾ­±»¶ªÆú¡£

GlobalHandle¿ÉÒÔ´ÓGlobalLockº¯ÊýµÃµ½µÄlpMemoryÖµ»ñÈ¡Æä¶ÔÓ¦µÄhMemory£¬¶øGlobalSizeº¯Êý¿ÉÒÔ»ñÖªÒ»¸öÄÚ´æ¿éµÄ³ß´ç¡£



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


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


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

¡¡¡¡¡¡¡¡
10¡£1¡£4¡¡¡¡¶Ñ¹ÜÀíº¯Êý

WindowsµÄ¡°¶Ñ¡±·ÖΪĬÈ϶ѺÍ˽ÓжÑÁ½ÖÖ¡£Ä¬È϶ÑÊÇÔÚ³ÌÐò³õʼ»¯Ê±ÓɲÙ×÷ϵͳ×Ô¶¯´´½¨µÄ£¬ËùÓеıê×¼ÄÚ´æ¹ÜÀíº¯Êý¶¼ÊÇÔÚĬÈ϶ÑÖÐÉêÇëÄÚ´æµÄ£»¶ø˽ÓжÑÏ൱ÓÚÔÚĬÈ϶ÑÖб£ÁôÁËÒ»´ó¿éÄڴ棬ÓöѹÜÀíº¯Êý¿ÉÒÔÔÚÕâ¸ö±£ÁôµÄÄÚ´æ¿éÖзÖÅäÄÚ´æ¡£

Ò»¸ö½ø³ÌµÄĬÈ϶ÑÖ»ÓÐÒ»¸ö£¬¶ø˽ÓжѿÉÒÔ±»´´½¨¶à¸ö¡£Ê¹ÓÃ˽ÓжѵÄȱµãÊÇ·ÖÅäºÍÊÍ·ÅÄÚ´æ¿éµÄ¹ý³ÌÖжàÁËÒ»¸öɨÃè¶ÑÖеÄÄÚ´æÁ´µÄ¹ý³Ì£¬ËùÒÔµ¥´Ó·ÖÅäÄÚ´æµÄ½Ç¶ÈÀ´½²£¬ÔÚ˽ÓжÑÖзÖÅäÄÚ´æËÙ¶ÈËƺõÒªÂýÒ»µã¡£

µ«Êµ¼ÊÉÏ£¬ÓÐЩʱºòʹÓÃ˽ÓжѿÉÄܸüÓкô¦¡£

Ê×ÏÈ£¬¿ÉÒÔʹÓÃĬÈ϶ѵĺ¯ÊýÓжàÖÖ£¬¶øËüÃÇ¿ÉÄÜÔÚ²»Í¬µÄÏß³ÌÖÐͬʱ¶ÔĬÈ϶ѽøÐвÙ×÷£¬ÎªÁ˱£³Öͬ²½£¬¶ÔĬÈ϶ѵķÃÎÊÊÇ˳Ðò½øÐеģ¬Ò²¾ÍÊÇ˵£¬ÔÚͬһʱ¼äÄÚÿ´ÎÖ»ÓÐÒ»¸öÏß³ÌÄܹ»·ÖÅäºÍÊÍ·ÅĬÈ϶ÑÖеÄÄÚ´æ¿é¡£Èç¹ûÁ½¸öÏß³ÌÊÔͼͬʱ·ÖÅäĬÈ϶ÑÖеÄÄÚ´æ¿é£¬ÄÇôֻÓÐÒ»¸öÏß³ÌÄܹ»½øÐУ¬ÁíÒ»¸öÏ̱߳ØÐëµÈ´ýµÚÒ»¸öÏ̵߳ÄÄÚ´æ¿é·ÖÅä½áÊøÖ®ºó²ÅÄܼÌÐøÖ´ÐС£¶ø˽ÓжѵĿռäÊÇÔ¤ÁôµÄ£¬²»Í¬Ïß³ÌÔÚ²»Í¬µÄ˽ÓжÑÖÐͬʱ·ÖÅäÄÚ´æ²¢²»»áÒýÆð³åÍ»£¬ËùÒÔÕûÌåµÄÔËÐÐËٶȿÉÄܸü¿ì¡£

Æä´Î£¬µ±ÏµÍ³±ØÐëÔÚÎïÀíÄÚ´æºÍÒ³ÎļþÖ®¼ä½øÐÐÒ³Ãæ½»»»µÄʱºò£¬ÏµÍ³µÄÐÔÄÜ»áÊܵ½ºÜ´óµÄÓ°Ï죬ÔÚijЩÇé¿öÏ£¬Ê¹ÓÃ˽ÓжѿÉÒÔ·ÀֹϵͳƵ·±µØÔÚÎïÀíÄÚ´æºÍ½»»»ÎļþÖ®¼ä½øÐÐÊý¾Ý½»»»£¬ÒòΪ½«¾­³£·ÃÎʵÄÄÚ´æ¾ÖÏÞÓÚÒ»¸öС·¶Î§µØÖ·µÄ»°£¬Ò³Ãæ½»»»¾Í²»Ì«¿ÉÄÜ·¢Éú£¬°ÑƵ·±·ÃÎʵĴóÁ¿Ð¡¿éÄÚ´æ·ÅÔÚͬһ¸ö˽ÓжÑÖоͿÉÒÔ±£Ö¤ËüÃÇÔÚÄÚ´æÖеÄλÖýӽü¡£

ÔÙÔò£¬Ê¹ÓÃ˽ÓжÑÒ²ÓÐÀûÓÚ·â×°ºÍ±£»¤Ä£¿é»¯µÄ³ÌÐò¡£µ±³ÌÐò°üº¬¶à¸öÄ£¿éµÄʱºò£¬Èç¹ûʹÓñê×¼ÄÚ´æ¹ÜÀíº¯ÊýÔÚĬÈ϶ÑÖзÖÅäÄڴ棬ÄÇôËùÓÐÄ£¿é·ÖÅäµÄÄÚ´æ¿éÊǽ»²æÅÅÁÐÔÚÒ»ÆðµÄ£¬Èç¹ûÄ£¿éAÖеÄÒ»¸ö´íÎóµ¼ÖÂÄÚ´æ²Ù×÷Ô½½ç£¬¿ÉÄܻḲ¸ÇµôÄ£¿éBʹÓõÄÄÚ´æ¿é£¬µ½Ä£¿éBÖ´ÐеÄʱºò³ö´íÁË£¬ÎÒÃÇÈ´ºÜÄÑ·¢ÏÖ´íÎóµÄÔ´Í·À´×ÔÓÚÄ£¿éA¡£Èç¹ûÈò»Í¬µÄÄ£¿éʹÓÃ×Ô¼ºµÄ˽Óжѣ¬ÄÇôËüÃÇʹÓõÄÄÚ´æ¾Í»áÍêÈ«¸ôÀ뿪À´£¬ËäȻԽ½ç´íÎóÈÔÈ»¿ÉÄÜ·¢Éú£¬µ«ºÜÈÝÒ׸ú×ٺͶ¨Î»¡£

×îºó£¬Ê¹ÓÃ˽ÓжÑҲʹ´óÁ¿ÄÚ´æµÄÇåÀí±äµÃ·½±ã£¬ÔÚĬÈ϶ÑÖзÖÅäµÄÄÚ´æÐèÒªÒ»¿é¿éµ¥¶ÀÊÍ·Å£¬µ«½«Ò»¸ö˽ÓжÑÊͷźó£¬ÔÚÕâ¸ö¶ÑÀïµÄÄÚ´æ¾ÍÈ«²¿±»ÊͷŵôÁË£¬²¢²»ÐèÒªÔ¤ÏÈÊͷŶÑÖеÄÿ¸öÄÚ´æ¿é£¬ÕâÑù·Ç³£±ãÓÚÄ£¿éµÄɨβ¹¤×÷¡£

1¡£¡¡Ë½ÓжѵĴ´½¨ºÍÊÍ·Å

´´½¨Ë½Óжѵĺ¯ÊýÊÇHeapCreate£º

¡¡¡¡¡¡¡¡invoke¡¡¡¡HeapCreate£¬flOptions£¬dwInitialSize£¬dwMaximumSize

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

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡hHeap£¬eax

¡¡¡¡¡¡¡¡¡£endif

flOptions²ÎÊýÊDZêÖ¾£¬ÓÃÀ´Ö¸¶¨¶ÑµÄÊôÐÔ£¬¿ÉÒÔÖ¸¶¨µÄÊôÐÔÓÐHEAP_NO_SERIALIZEºÍHEAP_GENERATE_EXCEPTIONSÁ½ÖÖ¡£

HEAP_GENERATE_EXCEPTIONS±êÖ¾ÓÃÀ´Ö¸¶¨º¯Êýʧ°ÜʱµÄ·µ»ØÖµ£¬²»Ö¸¶¨Õâ¸ö±êÖ¾µÄ»°£¬º¯Êýʧ°Üʱ·µ»ØNULL£¬·ñÔò·µ»ØÒ»¸ö¾ßÌåµÄ³ö´í´úÂ룬ÒÔ±ãÓÚ³ÌÐòÏêϸÁ˽â³ö´íÔ­Òò¡£³ö´í´úÂëµÄ¶¨ÒåÖµ¶¼´óÓÚ0c0000000h£¬ÒòΪ0c0000000h¿ªÊ¼µÄµØÖ·¿Õ¼äΪϵͳʹÓ㬷ÖÅäµÄÄÚ´æµØÖ·²»¿ÉÄܸßÓÚÕâ¸öµØÖ·£¬ËùÒÔ¼ì²âº¯ÊýÖ´ÐÐÊÇ·ñ³É¹¦µÄʱºò¿ÉÒÔʹÓÃÉÏÃæµÄ²âÊÔÓï¾äÀ´±È½Ï·µ»ØÖµÊÇ·ñÔÚ0¡«0c0000000hÖ®¼ä¡£

HEAP_NO_SERIALIZE±êÖ¾ÓÃÀ´¿ØÖƶÔ˽ÓжѵķÃÎÊÊÇ·ñÒª½øÐжÀÕ¼ÐԵļì²â£¬Ç°ÃæÔø¾­Ìáµ½ÔÚĬÈ϶ÑÖÐÉêÇëÄÚ´æ¿éµÄ²Ù×÷ÊÇ˳Ðò½øÐеģ¬¶à¸öÏß³ÌͬʱÉêÇëÄÚ´æµÄÇëÇóÖ»ÓÐÒ»¸öÄÜÂíÉÏÖ´ÐУ¬ÆäËû½«´¦Óڵȴý״̬£¬¶ÔÓÚÒ»¸ö˽ÓжÑÀ´Ëµ£¬Õâ¸öÏÞÖÆÈÔÈ»´æÔÚ£¬µ±´Ó¶ÑÖзÖÅäÄÚ´æʱ£¬ÏµÍ³ÓÐÏÂÃæµÄ²Ù×÷²½Ö裺

£¨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º¯Êý½«Ë½ÓжÑÊÍ·Åʱ£¬ÏµÍ³»á×Ô¶¯ÊÍ·Å¡£

ËäÈ»ÔÚĬÈ϶ÑÖеÄÄÚ´æÉêÇëÖ÷ҪʹÓñê×¼ÄÚ´æ¹ÜÀíº¯Êý£¬¶ø¶Ñ¹ÜÀíº¯ÊýµÄÖ÷Òª¹ÜÀí¶ÔÏóÊÇ˽Óжѣ¬µ«ÊÇÈç¹û±à³ÌÕßÔ¸ÒâµÄ»°£¬Ò²¿ÉÒÔÓöѹÜÀíº¯ÊýÔÚĬÈ϶ÑÖзÖÅäÄڴ棬±Ï¾¹Ä¬È϶ÑÒ²ÊÇÒ»¸ö¶Ñ£¬µ«ÕâÑùµÄ»°Ê×ÏÈÐèÒªÓÐÒ»¸ö¾ä±úÀ´´ú±íĬÈ϶ѣ¬Ä¬È϶ѵľä±ú²»ÄÜ

·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨0£© ²È£¨0£©

Äã¿ÉÄÜϲ»¶µÄ