打印本文 打印本文 关闭窗口 关闭窗口
直接从RING3获取硬盘序列号
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2017  更新时间:2009/4/23 18:59:29  文章录入:mintao  责任编辑:mintao
g() As Byte, uscStrSize As Long)
    Dim i As Long
    Dim temp As String
     For i = 0 To uscStrSize - 1 Step 2
        temp = szString(i)
        szString(i) = szString(i + 1)
        szString(i + 1) = temp
     Next i
End Sub

Private Function hdid9x() As String

''''We start in 95/98/Me
h = CreateFile("\\.\Smartvsd", 0, 0, 0, CREATE_NEW, 0, 0)
If h = 0 Then
    hdid9x = "open smartvsd.vxd failed"
    Exit Function
End If

Dim olp As OVERLAPPED
Dim lRet As Long
lRet = DeviceIoControl(h, DFP_GET_VERSION, ByVal 0&, 0, vers, Len(vers), ByVal i, olp)
If lRet = 0 Then
        hdid9x = "DeviceIoControl failed:DFP_GET_VERSION"
        CloseHandle (h)
        Exit Function
End If

''''If IDE identify command not supported, fails
If (vers.fCapabilities And 1) <> 1 Then
    hdid9x = "Error: IDE identify command not supported."
    CloseHandle (h)
    Exit Function
End If

''''Display IDE drive number detected
Dim sPreOutStr As String
sPreOutStr = DetectIDE(vers.bIDEDeviceMap)
hdid9x = sPreOutStr

''''Identify the IDE drives
For j = 0 To 3
    Dim phdinfo As TIDSECTOR
    Dim s(40) As Byte
   
    If (j And 1) = 1 Then
        in_data.irDriveRegs.bDriveHeadReg = &HB0
    Else
        in_data.irDriveRegs.bDriveHeadReg = &HA0
    End If
    If (vers.fCapabilities And (16 \ (2 ^ j))) = (16 \ (2 ^ j)) Then
        ''''We don''''t detect a ATAPI device.
        hdid9x = "Drive " & CStr(j + 1) & " is a ATAPI device, we don''''t detect it"
    Else
          in_data.irDriveRegs.bCommandReg = &HEC
          in_data.bDriveNumber = j
          in_data.irDriveRegs.bSectorCountReg = 1
          in_data.irDriveRegs.bSectorNumberReg = 1
          in_data.cBufferSize = 512
         
          lRet = DeviceIoControl(h, DFP_RECEIVE_DRIVE_DATA, in_data, Len(in_data), out_data, Len(out_data), ByVal i, olp)
         
          If lRet = 0 Then
              hdid9x = "DeviceIoControl failed:DFP_RECEIVE_DRIVE_DATA"
              CloseHandle (h)
              Exit Function
          End If
         
          Dim StrOut As String
         
          CopyMemory phdinfo, out_data.bBuffer(0), Len(phdinfo)
         
          CopyMemory s(0), phdinfo.sModelNumber(0), 40
          s(40) = 0
          ChangeByteOrder s, 40
         
          StrOut = ByteArrToString(s, 40)
         
          hdid9x = hdid9x & vbCrLf & "Module Number:" & StrOut
          CopyMemory s(0), phdinfo.sFirmwareRev(0), 8
          s(8) = 0
          ChangeByteOrder s, 8
         
          StrOut = ByteArrToString(s, 8)
         
          hdid9x = hdid9x & vbCrLf & "Firmware rev:" & StrOut
          CopyMemory s(0), phdinfo.sSerialNumber(0), 20
          s(20) = 0
          ChangeByteOrder s, 20
         
          StrOut = ByteArrToString(s, 20)
         
          hdid9x = hdid9x & vbCrLf & "Serial Number:" & StrOut
         
          CopyMemory s(0), phdinfo.ulTotalAddressableSectors(0), 4
         
          s(5) = 0
          Dim dblStrOut As Double
          dblStrOut = ByteArrToLong(s)
          hdid9x = hdid9x & vbCrLf & "Capacity:" & dblStrOut / 2 / 1024 & "M"
      End If
Next j

''''Close handle before quit
CloseHandle (h)
CopyRight

End Function

Private Function hdidnt() As String
Dim hd As String * 80
Dim phdinfo As TIDSECTOR
Dim s(40) As Byte
Dim StrOut As String

hdidnt = ""
''''We start in NT/Win2000

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口