Win32API调用错误号与信息

本文详细探讨了在使用Win32 API过程中遇到的错误代码,如何通过错误号解析获取具体信息,包括整型错误码、字符串转换、函数调用异常以及结构体在API交互中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Author:水如烟  

Namespace  LzmTW.uSystem.uWindows.Win32API
    
Public   Class  Win32ErrHelper

        
Public   Shared   ReadOnly   Property  Message( ByVal  errNum  As   Integer As   String
            
Get
                
If  errNum  =   0   Then   Return   " 操作成功完成 "

                
Return  GetString(errNum)
            
End   Get
        
End Property

        
Private   Shared   Function  GetString( ByVal  errNum  As   Integer As   String
            
Dim  collectionIndex  As   Integer
            collectionIndex 
=  errNum   / 1000

            
Dim  msg  As   String
            
Select   Case  collectionIndex
                
Case   0
                    msg 
=  ErrCollection00.GetString(errNum)
                
Case   1
                    msg 
=  ErrCollection01.GetString(errNum)
                
Case   2
                    msg 
=  ErrCollection02.GetString(errNum)
                
Case   3
                    msg 
=  ErrCollection03.GetString(errNum)
                
Case   4
                    msg 
=  ErrCollection04.GetString(errNum)
                
Case   5
                    msg 
=  ErrCollection05.GetString(errNum)
                
Case   6
                    msg 
=  ErrCollection06.GetString(errNum)
                
Case   7
                    msg 
=  ErrCollection07.GetString(errNum)
                
Case   8
                    msg 
=  ErrCollection08.GetString(errNum)
                
Case   9
                    msg 
=  ErrCollection09.GetString(errNum)
                
Case   10
                    msg 
=  ErrCollection10.GetString(errNum)
                
Case   Else
                    msg 
=   " 错误序号超出范围! "
            
End   Select

            
Return  msg
        
End Function

        
Public   Shared   Function  Current()  As  ErrMessage
            
Dim  msg  As   New  ErrMessage
            
With  msg
                .ErrNum 
=  System.Runtime.InteropServices.Marshal.GetLastWin32Error
                .Message 
=  Message(.ErrNum)
            
End   With
            
Return  msg
        
End Function

        
Public   Shared   Sub  ThrowExceptionIfExists()
            
Dim  msg  As  ErrMessage  =  Current()
            
If  msg.ErrNum  =   0   Then   Return

            
Throw   New  Exception(msg.ToString)
        
End Sub

        
Public   Structure  ErrMessage
            
Public  ErrNum  As   Integer
            
Public  Message  As   String

            
Public   Overrides   Function  ToString()  As   String
                
Return   String .Format( " {0} 错误号:{1} " , Message, ErrNum)
            
End Function
        
End Structure
    
End Class
End Namespace
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值