µÚÒ»·¶ÎÄÍø - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

WindowsºËÐıà³Ì£¨µÚ5°æ£©ch01

À´Ô´£ºÓû§·ÖÏí ʱ¼ä£º2025/7/30 7:05:33 ±¾ÎÄÓÉloading ·ÖÏí ÏÂÔØÕâÆªÎĵµÊÖ»ú°æ
˵Ã÷£ºÎÄÕÂÄÚÈݽö¹©Ô¤ÀÀ£¬²¿·ÖÄÚÈÝ¿ÉÄܲ»È«£¬ÐèÒªÍêÕûÎĵµ»òÕßÐèÒª¸´ÖÆÄÚÈÝ£¬ÇëÏÂÔØwordºóʹÓá£ÏÂÔØwordÓÐÎÊÌâÇëÌí¼Ó΢ÐźÅ:xxxxxxx»òQQ£ºxxxxxx ´¦Àí£¨¾¡¿ÉÄܸøÄúÌṩÍêÕûÎĵµ£©£¬¸ÐлÄúµÄÖ§³ÖÓëÁ½⡣

µÚ1ÕÂ ´í Îó ´¦ Àí

±¾ÕÂÄÚÈÝ

1.1 ¶¨Òå×Ô¼ºµÄ´íÎó´úÂë 1.2 ErrorShowʾÀý³ÌÐò

ÔÚÉîÈëÌÖÂÛMicrosoft Windows ÌṩµÄÖî¶àÌØÐÔ֮ǰ£¬Ó¦¸ÃÏÈÀí½â¸÷¸öWindowsº¯ÊýÊÇÈçºÎ½øÐдíÎó´¦ÀíµÄ¡£

µ÷ÓÃWindowsº¯Êýʱ£¬Ëü»áÏÈÑéÖ¤ÎÒÃÇ´«¸øËüµÄ²ÎÊý£¬È»ºóÔÙ¿ªÊ¼Ö´ÐÐÈÎÎñ¡£Èç¹û´«ÈëµÄ²ÎÊýÎÞЧ£¬»òÕßÓÉÓÚÆäËûÔ­Òòµ¼Ö²Ù×÷ÎÞ·¨Ö´ÐУ¬Ôòº¯ÊýµÄ·µ»ØÖµ½«Ö¸³öº¯ÊýÒòΪijЩԭÒòʧ°ÜÁË¡£±í1-1չʾÁË´ó¶àÊýWindowsº¯ÊýʹÓõķµ»ØÖµµÄÊý¾ÝÀàÐÍ¡£

±í1-1 ³£¼ûµÄWindowsº¯Êý·µ»ØÖµÊý¾ÝÀàÐÍ

Êý¾ÝÀàÐÍ VOID BOOL HANDLE Ö¸³öº¯Êýµ÷ÓÃʧ°ÜµÄÖµ Õâ¸öº¯Êý²»¿ÉÄÜʧ°Ü¡£Ö»Óм«ÉÙÊýWindowsº¯ÊýµÄ·µ»ØÖµÀàÐÍΪVOID Èç¹ûº¯Êýʧ°Ü£¬·µ»ØÖµÎª0£»·ñÔò£¬·µ»ØÖµÊÇÒ»¸ö·Ç0Öµ¡£Ó¦±ÜÃâ²âÊÔ·µ»ØÖµÊÇ·ñΪTRUE£»×îÎÈÍ×µÄ×ö·¨ÊǼì²éËüÊÇ·ñ²»ÎªFALSE Èç¹ûº¯Êýʧ°Ü£¬Ôò·µ»ØÖµÍ¨³£ÎªNULL£»·ñÔò£¬HANDLE½«±êʶһ¸ö¿ÉÒÔ²Ù×ݵĶÔÏó¡£Çë×¢ÒâÕâÖÖ·µ»ØÖµ£¬ÒòΪijЩº¯Êý»á·µ»ØÎªINVALID_HANDLE_VALUEµÄÒ»¸ö¾ä±úÖµ£¬Ëü±»¶¨ÒåΪ¨C1¡£º¯ÊýµÄPlatform SDKÎĵµÇå³þ˵Ã÷Á˺¯ÊýÊÇ·µ»ØNULL»¹ÊÇINVALID_HANDLE_VALUEÀ´±êʶʧ°Ü PVOID LONG/DWORD Èç¹ûº¯Êýµ÷ÓÃʧ°Ü£¬Ôò·µ»ØÖµÎªNULL£»·ñÔò£¬PVOID½«±êʶһ¸öÊý¾Ý¿éµÄÄÚ´æµØÖ· ÕâÖÖÀàÐͱȽϼ¬ÊÖ¡£·µ»Ø¼ÆÊýµÄº¯Êýͨ³£»á·µ»ØÒ»¸öLONG»òDWORD¡£Èç¹ûº¯Êý³öÓÚijÖÖÔ­Òò²»ÄܶÔÎÒÃÇÏëÒª¼ÆÊýµÄ¶«Î÷½øÐмÆÊý£¬Ëüͨ³£»á·µ»Ø0 »ò¨C1(¾ßÌåÈ¡¾öÓÚº¯Êý)¡£Èç¹ûÒªµ÷ÓÃÒ»¸ö·µ»ØLONG/DWORDµÄº¯Êý£¬Îñ±Ø×ÐϸÔĶÁPlatform SDKÎĵµ£¬È·±£ÎÒÃÇ»áÕýÈ·µØ¼ì²é¿ÉÄܳöÏֵĴíÎó ͨ³£Çé¿öÏ£¬Èç¹ûWindowsº¯ÊýÄÜ·µ»Ø´íÎó´úÂ룬½«ÓÐÖúÓÚÎÒÃÇÀí½âº¯Êýµ÷ÓÃΪʲô»áʧ

°Ü¡£Microsoft±à¼­ÁËÒ»¸öÁÐ±í£¬ÆäÖÐÁгöÁËËùÓпÉÄܵĴíÎó´úÂ룬²¢ÎªÃ¿¸ö´íÎó´úÂë¶¼·ÖÅäÁËÒ»¸ö32λµÄ±àºÅ¡£

3

(thread-local ÔÚÄÚ²¿£¬µ±Windowsº¯Êý¼ì²âµ½´íÎóʱ£¬Ëü»áʹÓÃÒ»ÖÖÃûΪ¡°Ï̱߳¾µØ´æ´¢Çø¡±

WindowsºËÐıà³Ì(µÚ5°æ)

storage)µÄ»úÖÆ½«ÏàÓ¦µÄ´íÎó´úÂëÓë¡°Ö÷µ÷Ï̡߳±(»òÕß˵·¢³öµ÷ÓõÄỊ̈߳¬¼´calling thread)¹ØÁªµ½Ò»Æð(Ï̱߳¾µØ´æ´¢ÇøµÄÏêÇ齫ÔÚµÚ21ÕÂÌÖÂÛ)¡£ÕâÖÖ»úÖÆÊ¹²»Í¬µÄÏß³ÌÄܶÀÁ¢ÔËÐУ¬²»»á³öÏÖÏ໥¸ÉÈŶԷ½µÄ´íÎó´úÂëµÄÇé¿ö¡£º¯Êý·µ»ØÊ±£¬Æä·µ»ØÖµ»áÖ¸³öÒÑ·¢ÉúÒ»¸ö´íÎó¡£Òª²é¿´¾ßÌåÊÇʲô´íÎó£¬Çëµ÷ÓÃGetLastErrorº¯Êý£¬ÈçÏÂËùʾ£º

DWORD GetLastError();

´Ëº¯ÊýµÄ×÷Óúܼòµ¥£¬¾ÍÊÇ·µ»ØÓÉÉÏÒ»¸öº¯Êýµ÷ÓÃÉèÖõÄÏ̵߳Ä32λ´íÎó´úÂë¡£ ÓÐÁË32λ´íÎó´úÂëÖ®ºó£¬½Ó×ÅÐèÒª°ÑËüת»»Îª¸üÓÐÓõÄÐÅÏ¢¡£WinError.hÍ·Îļþ°üº¬ÁËMicrosoft¶¨ÒåµÄ´íÎó´úÂëÁÐ±í¡£Îª±ãÓÚÌåÑ飬ÏÂÃæÕªÂ¼ÁËÆäÖеÄÒ»²¿·Ö£º

// MessageId: ERROR_SUCCESS //

// MessageText: //

// The operation completed successfully. //

#define ERROR_SUCCESS 0L

#define NO_ERROR 0L // dderror #define SEC_E_OK ((HRESULT)0x00000000L) //

// MessageId: ERROR_INVALID_FUNCTION //

// MessageText: //

// Incorrect function. //

#define ERROR_INVALID_FUNCTION 1L // dderror //

// MessageId: ERROR_FILE_NOT_FOUND //

// MessageText: //

// The system cannot find the file specified. //

#define ERROR_FILE_NOT_FOUND 2L //

// MessageId: ERROR_PATH_NOT_FOUND //

// MessageText: //

// The system cannot find the path specified. //

#define ERROR_PATH_NOT_FOUND 3L //

// MessageId: ERROR_TOO_MANY_OPEN_FILES //

// MessageText: //

// The system cannot open the file. //

#define ERROR_TOO_MANY_OPEN_FILES 4L //

// MessageId: ERROR_ACCESS_DENIED //

// MessageText:

4

//

// Access is denied. //

#define ERROR_ACCESS_DENIED

µÚ1Õ ´íÎó´¦Àí

5L

3~5

¿ÉÒÔ¿´³ö£¬Ã¿¸ö´íÎó¶¼ÓÐÈýÖÖ±íʾ£ºÒ»¸öÏûÏ¢ID(Ò»¸ö¿ÉÔÚÔ´´úÂëÖÐʹÓõĺ꣬ÓÃÓÚÓë

GetLastErrorµÄ·µ»ØÖµ½øÐбȽÏ)¡¢ÏûÏ¢Îı¾(ÃèÊö´íÎóµÄÓ¢ÎÄÎı¾)ºÍÒ»¸ö±àºÅ(Ó¦¸Ã±ÜÃâʹÓô˱àºÅ£¬¾¡Á¿Ê¹ÓÃÏûÏ¢ID)¡£×¢Ò⣬ÕâÀïֻժ¼ÁËWinError.hÍ·ÎļþµÄ¼«Ð¡Ò»²¿·Ö£¬Õû¸öÎļþµÄ³¤¶È³¬¹ý39 000ÐУ¡

Windowsº¯Êýʧ°ÜÖ®ºó£¬Ó¦¸ÃÂíÉϵ÷ÓÃGetLastError£¬ÒòΪ¼ÙÈçÓÖµ÷ÓÃÁËÁíÒ»¸öWindowsº¯Êý£¬Ôò´ËÖµºÜ¿ÉÄܱ»¸Äд¡£×¢Ò⣬³É¹¦µ÷ÓõÄWindowsº¯Êý¿ÉÄÜÓÃERROR_SUCCESS¸Äд´ËÖµ¡£

һЩWindowsº¯Êýµ÷Óóɹ¦¿ÉÄÜÊÇÔµÓÚ²»Í¬µÄÔ­Òò¡£ÀýÈ磬´´½¨Ò»¸ö¾ßÃûʼþÄں˶ÔÏóʱ£¬ÒÔÏÂÁ½ÖÖÇé¿ö¾ù»á³É¹¦£º¶ÔÏóʵ¼ÊÍê³É´´½¨£¬»òÕß´æÔÚÒ»¸öͬÃûµÄʼþÄں˶ÔÏó¡£Ó¦ÓóÌ

MicrosoftÑ¡Ôñ²ÉÓá°ÉÏÒ»¸ö´íÎó´úÂ롱(last ÐòÒ²ÐíÐèÒªÖªµÀ³É¹¦µÄÔ­Òò¡£Îª·µ»ØÕâÖÖÐÅÏ¢£¬

error code)»úÖÆ¡£ËùÒÔ£¬Ìض¨º¯Êýµ÷Óóɹ¦Ê±£¬¿ÉÒÔµ÷ÓÃGetLastErrorÀ´È·¶¨¶îÍâµÄÐÅÏ¢¡£

Platform SDKÎĵµ»áÇå³þÖ¸Ã÷ÄÜÒÔÕâÖÖ·½Ê½µ÷ÓÃGetLastError¡£¶ÔÓÚ¾ßÓÐÕâÖÖÐÐΪµÄº¯Êý£¬

ÎĵµÖÐÌṩÁËCreateEventº¯ÊýµÄÒ»¸öÀý×Ó£»Èç¹ûÒѾ­´æÔÚ¾ßÃûʼþ£¬¾Í·µ»ØERROR_ALREADY_EXISTS¡£

µ÷ÊÔ³ÌÐòʱ£¬ÎÒ·¢ÏÖ¶ÔÏ̵߳ġ°ÉÏÒ»¸ö´íÎó´úÂ롱½øÐмàÊÓÊÇÏ൱ÓÐÓõġ£ÔÚMicrosoft Visual StudioÖУ¬MicrosoftµÄµ÷ÊÔÆ÷Ö§³ÖÒ»¸öºÜÓÐÓõŦÄÜ¡ª¡ªÎÒÃÇ¿ÉÒÔÅäÖÃWatch(¼àÊÓ)´°¿Ú£¬ÈÃËüʼÖÕÏÔʾÏ̵߳ÄÉÏÒ»¸ö´íÎó´úÂëºÍ´íÎóµÄÎı¾ÃèÊö¡£¾ßÌåµÄ×ö·¨ÊÇ£ºÔÚWatch´°¿ÚÖÐÑ¡ÔñÒ»ÐУ¬È»ºóÊäÈë$err,hr¡£ÎÒÃÇÀ´¿´¿´Í¼1-1µÄÀý×Ó¡£ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÒѾ­µ÷ÓÃÁËCreateFileº¯Êý¡£¸Ãº¯Êý·µ»ØÖµÎªINVALID_HANDLE_VALUE (¨C1)µÄÒ»¸öHANDLE£¬Ö¸³öËüÎÞ·¨´ò¿ªÖ¸¶¨Îļþ¡£µ«ÊÇWatch´°¿ÚÖ¸³ö£¬ÉÏÒ»¸ö´íÎó´úÂë(Ò²¾ÍÊǵ÷ÓÃGetLastErrorº¯Êý·µ»ØµÄ´íÎó´úÂë)ÊÇ0x00000002¡£¶à¿÷ÓÐÁË,hrÏÞ¶¨·û£¬Watch´°¿Ú½øÒ»²½Ö¸³ö´íÎó´úÂë2ÊÇ¡°The system cannot find the file specified.¡±(ϵͳÕÒ²»µ½Ö¸¶¨Îļþ)¡£Õâ¾ÍÊÇÔÚWinError.hÍ·ÎļþÖÐΪ´íÎó´úÂë2ÁгöµÄÏûÏ¢Îı¾¡£

5

ͼ1-1 ÔÚVisual StudioµÄWatch´°¿ÚÖÐʹÓÃ$err,hrÀ´²é¿´µ±Ç°Ï̵߳ġ°ÉÏÒ»¸ö´íÎó´úÂ롱

5

WindowsºËÐıà³Ì(µÚ5°æ)

Visual Studio»¹´îÔØÁËÒ»¸öºÜСµÄʵÓóÌÐò£¬ÃûΪError Lookup¡£ÀûÓÃËü£¬¿ÉÒÔ½«´íÎó´úÂëת»»ÎªÏàÓ¦µÄÎı¾ÃèÊö¡£ÈçÏÂͼËùʾ¡£

Èç¹ûÎÒÔÚ×Ô¼ºÐ´µÄ³ÌÐòÖмì²âµ½Ò»¸ö´íÎó£¬ÎÒ¿ÉÄÜÏ£ÍûÏòÓû§ÏÔʾ´íÎóµÄÎı¾ÃèÊö£¬¶ø²»ÊÇÏÔʾһ¸ö¸É°Í°ÍµÄ´íÎó±àºÅ¡£WindowsÌṩÁËÒ»¸öº¯Êý£¬¿ÉÒÔ½«´íÎó´úÂëת»»ÎªÏàÓ¦µÄÎı¾ÃèÊö¡£´Ëº¯ÊýÃûΪFormatMessage£¬ÈçÏÂËùʾ£º

DWORD FormatMessage( DWORD dwFlags, LPCVOID pSource, DWORD dwMessageId, DWORD dwLanguageId, PTSTR pszBuffer, DWORD nSize,

va_list *Arguments);

FormatMessageµÄ¹¦ÄÜʵ¼ÊÏ൱·á¸»£¬ÈôÏëÉú³ÉÏòÓû§ÏÔʾµÄ×Ö·û´®£¬ÄÇôËüÊÇÊ×Ñ¡µÄÒ»

¢Ù

ÖÖ·½Ê½¡£Ö®ËùÒÔ˵ËüºÃÓã¬Ò»¸öÔ­ÒòÊÇËüÄÜÇáËɵØÖ§³Ö¶àÖÖÓïÑÔ¡£ËüÄÜ»ñȡһ¸öÓïÑÔ±êʶ·û×÷Ϊ²ÎÊý£¬²¢·µ»ØÄÇÖÖÓïÑÔµÄÎı¾¡£µ±È»£¬ÎÒÃÇÊ×ÏȱØÐë·­Òë×Ö·û´®£¬²¢½«·­ÒëºÃµÄÏûÏ¢±í(message table)×ÊԴǶÈë×Ô¼ºµÄ.exe»òDLLÄ£¿éÖС£µ«ÔÚ´ËÖ®ºó£¬Õâ¸öº¯Êý¾ÍÄÜ×Ô¶¯Ñ¡ÔñÕýÈ·µÄ×Ö·û´®¡£ErrorShowʾÀý³ÌÐò(²Î¼ûºóÎÄ)ÑÝʾÁËÈçºÎµ÷ÓÃÕâ¸öº¯Êý½«Microsoft¶¨ÒåµÄ´íÎó´úÂë±àºÅת»»ÎªÏàÓ¦µÄÎı¾ÃèÊö¡£

¾­³£ÓÐÈËÎÊÎÒ£¬MicrosoftÊÇ·ñά»¤×ÅÒ»¸öÖ÷¿ØÁÐ±í£¬ÆäÖÐÍêÕûÁгöÁËÿ¸öWindowsº¯Êý¿ÉÄÜ·µ»ØµÄËùÓдíÎó´úÂë¡£ºÜÒź¶£¬´ð°¸ÊÇ·ñ¶¨µÄ¡£¶øÇÒ£¬Microsoft¾ö²»¿ÉÄÜÌṩÕâÑùµÄÁÐ±í£¬ÒòÎªËæ×Åа汾µÄ²Ù×÷ϵͳµÄÎÊÊÀ£¬ÕâÑùµÄÁÐ±í½«ºÜÄѹ¹½¨ºÍά»¤¡£

6

ÕâÖÖÁбíµÄÎÊÌâÔÚÓÚ£¬ÎÒÃÇ¿ÉÒÔµ÷ÓÃÒ»¸öWindowsº¯Êý£¬µ«ÔÚÄÚ²¿£¬Õâ¸öº¯Êý¿ÉÄܵ÷ÓÃÁíÒ»¸öº¯Êý£¬ºóÕßÓÖ¿ÉÄܵ÷ÓÃÆäËûº¯Êý??ÒÔ´ËÀàÍÆ¡£³öÓÚÖÚ¶àÔ­Òò£¬ÈκÎÒ»¸öº¯Êý¶¼¿ÉÄÜʧ°Ü¡£ÓÐʱ£¬µ±Ò»¸öº¯Êýʧ°Üʱ£¬½Ï¸ß¼¶±ðµÄº¯ÊýÒ²ÐíÄܹ»»Ö¸´£¬²¢¼ÌÐøÖ´ÐÐÎÒÃÇÏ£ÍûµÄ²Ù×÷¡£Òª´´½¨ÕâÖÖÖ÷¿ØÁÐ±í£¬Microsoft±ØÐë¸ú×Ùÿ¸öº¯ÊýµÄ·¾¶£¬Éú³ÉËùÓпÉÄܵĴíÎó´úÂëµÄÁÐ±í¡£ÕâÊǷdz£Äѵġ£¶øÇÒ£¬Ëæ×Åа汾µÄ²Ù×÷ϵͳµÄ·¢²¼£¬ÕâЩº¯ÊýµÄÖ´Ðз¾¶Ò²¿ÉÄÜ·¢Éú¸Ä±ä¡£

¢Ù Òë×¢£ºÕâÀïµÄÓïÑÔÊÇ×ÔÈ»ÓïÑÔ£¬È纺Óï¡¢Ó¢ÓïµÈ£¬¶ø²»ÊǼÆËã»ú±à³ÌÓïÑÔ¡£

6

ËÑË÷¸ü¶à¹ØÓÚ£º WindowsºËÐıà³Ì£¨µÚ5°æ£©ch01 µÄÎĵµ
WindowsºËÐıà³Ì£¨µÚ5°æ£©ch01.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡
±¾ÎÄÁ´½Ó£ºhttps://www.diyifanwen.net/c30njk7808n9emep57bjn_1.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©
ÈÈÃÅÍÆ¼ö
Copyright © 2012-2023 µÚÒ»·¶ÎÄÍø °æÈ¨ËùÓÐ ÃâÔðÉùÃ÷ | ÁªÏµÎÒÃÇ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£ºxxxxxx ÓÊÏ䣺xxxxxx@qq.com
ÓåICP±¸2023013149ºÅ
Top