网上看到一段读硬盘id的代码,如下,请注意红色部分:Private Declare Function DiskID32 Lib "DiskID32.DLL" (ByRef DiskModel As Byte, ByRef DiskID As Byte) As LongPrivate Sub Command1_Click()
    Dim DiskModel(31) As Byte, DiskID(31) As Byte, i As Integer, Model As String, ID As String
    .......   
    For i = 0 To 31
        If Chr(DiskModel(i)) <> Chr(0) Then
            Model = Model & Chr(DiskModel(i))
        End If
        If Chr(DiskID(i)) <> Chr(0) Then
            ID = ID & Chr(DiskID(i))
        End If
    Next
End Sub问题:在函数定义中参数是2个byte值,为什么函数调用用,用户定义的两个byte()数组中都有值了?
      是如何实现的?谢谢

解决方案 »

  1.   

    不好意思,刚才漏掉了函数调用Private Declare Function DiskID32 Lib "DiskID32.DLL" (ByRef DiskModel As Byte, ByRef DiskID As Byte) As Long Private Sub Command1_Click() 
        Dim DiskModel(31) As Byte, DiskID(31) As Byte, i As Integer, Model As String, ID As String 
        If DiskID32(DiskModel(0), DiskID(0)) <> 1 Then
            MsgBox "get diskid32 err"
        Exit Sub
        End If 
        For i = 0 To 31 
            If Chr(DiskModel(i)) <> Chr(0) Then 
                Model = Model & Chr(DiskModel(i)) 
            End If 
            If Chr(DiskID(i)) <> Chr(0) Then 
                ID = ID & Chr(DiskID(i)) 
            End If 
        Next 
    End Sub 
      

  2.   

    不好意思,刚才漏掉了函数调用Private Declare Function DiskID32 Lib "DiskID32.DLL" (ByRef DiskModel As Byte, ByRef DiskID As Byte) As Long Private Sub Command1_Click() 
        Dim DiskModel(31) As Byte, DiskID(31) As Byte, i As Integer, Model As String, ID As String 
        If DiskID32(DiskModel(0), DiskID(0)) <> 1 Then
            MsgBox "get diskid32 err"
        Exit Sub
        End If 
        For i = 0 To 31 
            If Chr(DiskModel(i)) <> Chr(0) Then 
                Model = Model & Chr(DiskModel(i)) 
            End If 
            If Chr(DiskID(i)) <> Chr(0) Then 
                ID = ID & Chr(DiskID(i)) 
            End If 
        Next 
    End Sub 
      

  3.   

    重了:http://topic.csdn.net/u/20081128/09/e8a4cabc-992b-4809-b15b-f696f04d8957.html
      

  4.   

    通过传地址,DiskID32 直接对 DiskModel() 和 DiskID(0) 的元素进行存取