亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mod_smartdrives.bas

?? vb編寫的硬盤多個信息獲取源代碼
?? BAS
?? 第 1 頁 / 共 2 頁
字號:
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000

Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const OPEN_EXISTING = 3
Private Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Const CREATE_NEW = 1

Private Const INVALID_HANDLE_VALUE = -1
Dim di As DRIVE_INFO
Dim colAttrNames As Collection

Private Function OpenSmart(drv_num As IDE_DRIVE_NUMBER) As Long
   If IsWindowsNT Then
      OpenSmart = CreateFile("\\.\PhysicalDrive" & CStr(drv_num), GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)
   Else
      OpenSmart = CreateFile("\\.\SMARTVSD", 0, 0, ByVal 0&, CREATE_NEW, 0, 0)
   End If
End Function


Private Function CheckSMARTEnable(ByVal hDrive As Long, DriveNum As IDE_DRIVE_NUMBER) As Boolean
   Dim SCIP As SENDCMDINPARAMS
   Dim SCOP As SENDCMDOUTPARAMS
   Dim lpcbBytesReturned As Long
   With SCIP
       .cBufferSize = 0
       With .irDriveRegs
            .bFeaturesReg = SMART_ENABLE_SMART_OPERATIONS
            .bSectorCountReg = 1
            .bSectorNumberReg = 1
            .bCylLowReg = SMART_CYL_LOW
            .bCylHighReg = SMART_CYL_HI

            .bDriveHeadReg = &HA0
            .bCommandReg = IDE_EXECUTE_SMART_FUNCTION
        End With
        .bDriveNumber = DriveNum
   End With
   CheckSMARTEnable = DeviceIoControl(hDrive, DFP_SEND_DRIVE_COMMAND, SCIP, Len(SCIP) - 4, SCOP, Len(SCOP) - 4, lpcbBytesReturned, ByVal 0&)
End Function

Private Function IdentifyDrive(ByVal hDrive As Long, ByVal IDCmd As Byte, ByVal DriveNum As IDE_DRIVE_NUMBER) As Boolean
    Dim SCIP As SENDCMDINPARAMS
    Dim IDSEC As IDSECTOR
    Dim bArrOut(OUTPUT_DATA_SIZE - 1) As Byte
    Dim sMsg As String
    Dim lpcbBytesReturned As Long
    Dim barrfound(100) As Long
    Dim i As Long
    Dim lng As Long

    With SCIP
        .cBufferSize = IDENTIFY_BUFFER_SIZE
        .bDriveNumber = CByte(DriveNum)
        With .irDriveRegs
             .bFeaturesReg = 0
             .bSectorCountReg = 1
             .bSectorNumberReg = 1
             .bCylLowReg = 0
             .bCylHighReg = 0

             .bDriveHeadReg = &HA0
             If Not IsWindowsNT Then .bDriveHeadReg = .bDriveHeadReg Or (DriveNum And 1) * 16

             .bCommandReg = CByte(IDCmd)
        End With
    End With
    If DeviceIoControl(hDrive, DFP_RECEIVE_DRIVE_DATA, SCIP, Len(SCIP) - 4, bArrOut(0), OUTPUT_DATA_SIZE, lpcbBytesReturned, ByVal 0&) Then
       IdentifyDrive = True
       CopyMemory IDSEC, bArrOut(16), Len(IDSEC)
       di.Model = SwapStringBytes(StrConv(IDSEC.sModelNumber, vbUnicode))
       di.FirmWare = SwapStringBytes(StrConv(IDSEC.sFirmwareRev, vbUnicode))
       di.SerialNumber = SwapStringBytes(StrConv(IDSEC.sSerialNumber, vbUnicode))
       di.Cilinders = IDSEC.wNumCyls
       di.Heads = IDSEC.wNumHeads
       di.SecPerTrack = IDSEC.wSectorsPerTrack
    End If
End Function

Private Function ReadAttributesCmd(ByVal hDrive As Long, DriveNum As IDE_DRIVE_NUMBER) As Boolean
   Dim cbBytesReturned As Long
   Dim SCIP As SENDCMDINPARAMS
   Dim drv_attr As DRIVEATTRIBUTE
   Dim bArrOut(OUTPUT_DATA_SIZE - 1) As Byte
   Dim sMsg As String
   Dim i As Long
   With SCIP

       .cBufferSize = READ_ATTRIBUTE_BUFFER_SIZE
       .bDriveNumber = DriveNum
       With .irDriveRegs
            .bFeaturesReg = SMART_READ_ATTRIBUTE_VALUES
            .bSectorCountReg = 1
            .bSectorNumberReg = 1
            .bCylLowReg = SMART_CYL_LOW
            .bCylHighReg = SMART_CYL_HI

            .bDriveHeadReg = &HA0
            If Not IsWindowsNT Then .bDriveHeadReg = .bDriveHeadReg Or (DriveNum And 1) * 16
            .bCommandReg = IDE_EXECUTE_SMART_FUNCTION
       End With
  End With
  ReadAttributesCmd = DeviceIoControl(hDrive, DFP_RECEIVE_DRIVE_DATA, SCIP, Len(SCIP) - 4, bArrOut(0), OUTPUT_DATA_SIZE, cbBytesReturned, ByVal 0&)
  On Error Resume Next
  For i = 0 To NUM_ATTRIBUTE_STRUCTS - 1
      If bArrOut(18 + i * 12) > 0 Then
         di.Attributes(di.NumAttributes).AttrID = bArrOut(18 + i * 12)
         di.Attributes(di.NumAttributes).AttrName = "Unknown value (" & bArrOut(18 + i * 12) & ")"
         di.Attributes(di.NumAttributes).AttrName = colAttrNames(CStr(bArrOut(18 + i * 12)))
         di.NumAttributes = di.NumAttributes + 1
         ReDim Preserve di.Attributes(di.NumAttributes)
         CopyMemory di.Attributes(di.NumAttributes).StatusFlags, bArrOut(19 + i * 12), 2
         di.Attributes(di.NumAttributes).AttrValue = bArrOut(21 + i * 12)
         di.Attributes(di.NumAttributes).WorstValue = bArrOut(22 + i * 12)
      End If
  Next i
End Function

Private Function ReadThresholdsCmd(ByVal hDrive As Long, DriveNum As IDE_DRIVE_NUMBER) As Boolean
   Dim cbBytesReturned As Long
   Dim SCIP As SENDCMDINPARAMS
   Dim IDSEC As IDSECTOR
   Dim bArrOut(OUTPUT_DATA_SIZE - 1) As Byte
   Dim sMsg As String
   Dim thr_attr As ATTRTHRESHOLD
   Dim i As Long, j As Long
   With SCIP

       .cBufferSize = READ_THRESHOLD_BUFFER_SIZE
       .bDriveNumber = DriveNum
       With .irDriveRegs
            .bFeaturesReg = SMART_READ_ATTRIBUTE_THRESHOLDS
            .bSectorCountReg = 1
            .bSectorNumberReg = 1
            .bCylLowReg = SMART_CYL_LOW
            .bCylHighReg = SMART_CYL_HI

            .bDriveHeadReg = &HA0
            If Not IsWindowsNT Then .bDriveHeadReg = .bDriveHeadReg Or (DriveNum And 1) * 16
            .bCommandReg = IDE_EXECUTE_SMART_FUNCTION
       End With
  End With
  ReadThresholdsCmd = DeviceIoControl(hDrive, DFP_RECEIVE_DRIVE_DATA, SCIP, Len(SCIP) - 4, bArrOut(0), OUTPUT_DATA_SIZE, cbBytesReturned, ByVal 0&)
  For i = 0 To NUM_ATTRIBUTE_STRUCTS - 1
      CopyMemory thr_attr, bArrOut(18 + i * Len(thr_attr)), Len(thr_attr)
      If thr_attr.bAttrID > 0 Then
         For j = 0 To UBound(di.Attributes)
             If thr_attr.bAttrID = di.Attributes(j).AttrID Then
                di.Attributes(j).ThresholdValue = thr_attr.bWarrantyThreshold
                Exit For
             End If
         Next j
      End If
  Next i
End Function

Private Function GetSmartVersion(ByVal hDrive As Long, VersionParams As GETVERSIONOUTPARAMS) As Boolean
   Dim cbBytesReturned As Long
   GetSmartVersion = DeviceIoControl(hDrive, DFP_GET_VERSION, ByVal 0&, 0, VersionParams, Len(VersionParams), cbBytesReturned, ByVal 0&)
End Function

Public Function GetDriveInfo(DriveNum As IDE_DRIVE_NUMBER) As DRIVE_INFO
    Dim hDrive As Long
    Dim VerParam As GETVERSIONOUTPARAMS
    Dim cb As Long
    di.bDriveType = 0
    di.NumAttributes = 0
    ReDim di.Attributes(0)
    hDrive = OpenSmart(DriveNum)
    If hDrive = INVALID_HANDLE_VALUE Then Exit Function
    If Not GetSmartVersion(hDrive, VerParam) Then Exit Function
    If Not IsBitSet(VerParam.bIDEDeviceMap, DriveNum) Then Exit Function
    di.bDriveType = 1 + Abs(IsBitSet(VerParam.bIDEDeviceMap, DriveNum + 4))
    If Not CheckSMARTEnable(hDrive, DriveNum) Then Exit Function
    FillAttrNameCollection
    Call IdentifyDrive(hDrive, IDE_ID_FUNCTION, DriveNum)
    Call ReadAttributesCmd(hDrive, DriveNum)
    Call ReadThresholdsCmd(hDrive, DriveNum)
    GetDriveInfo = di
    CloseHandle hDrive
    Set colAttrNames = Nothing
End Function

Private Function IsWindowsNT() As Boolean
   Dim verinfo As OSVERSIONINFO
   verinfo.dwOSVersionInfoSize = Len(verinfo)
   If (GetVersionEx(verinfo)) = 0 Then Exit Function
   If verinfo.dwPlatformId = 2 Then IsWindowsNT = True
End Function

Private Function IsBitSet(iBitString As Byte, ByVal lBitNo As Integer) As Boolean
    If lBitNo = 7 Then
        IsBitSet = iBitString < 0
    Else
        IsBitSet = iBitString And (2 ^ lBitNo)
    End If
End Function

Private Function SwapStringBytes(ByVal sIn As String) As String
   Dim sTemp As String
   Dim i As Integer
   sTemp = Space(Len(sIn))
   For i = 1 To Len(sIn) - 1 Step 2
       Mid(sTemp, i, 1) = Mid(sIn, i + 1, 1)
       Mid(sTemp, i + 1, 1) = Mid(sIn, i, 1)
   Next i
   SwapStringBytes = sTemp
End Function

Public Sub FillAttrNameCollection()
   Set colAttrNames = New Collection
   With colAttrNames
       .Add "ATTR_INVALID", "0"
       .Add "READ_ERROR_RATE", "1"
       .Add "THROUGHPUT_PERF", "2"
       .Add "SPIN_UP_TIME", "3"
       .Add "START_STOP_COUNT", "4"
       .Add "REALLOC_SECTOR_COUNT", "5"
       .Add "READ_CHANNEL_MARGIN", "6"
       .Add "SEEK_ERROR_RATE", "7"
       .Add "SEEK_TIME_PERF", "8"
       .Add "POWER_ON_HRS_COUNT", "9"
       .Add "SPIN_RETRY_COUNT", "10"
       .Add "CALIBRATION_RETRY_COUNT", "11"
       .Add "POWER_CYCLE_COUNT", "12"
       .Add "SOFT_READ_ERROR_RATE", "13"
       .Add "G_SENSE_ERROR_RATE", "191"
       .Add "POWER_OFF_RETRACT_CYCLE", "192"
       .Add "LOAD_UNLOAD_CYCLE_COUNT", "193"
       .Add "TEMPERATURE", "194"
       .Add "REALLOCATION_EVENTS_COUNT", "196"
       .Add "CURRENT_PENDING_SECTOR_COUNT", "197"
       .Add "UNCORRECTABLE_SECTOR_COUNT", "198"
       .Add "ULTRADMA_CRC_ERROR_RATE", "199"
       .Add "WRITE_ERROR_RATE", "200"
       .Add "DISK_SHIFT", "220"
       .Add "G_SENSE_ERROR_RATEII", "221"
       .Add "LOADED_HOURS", "222"
       .Add "LOAD_UNLOAD_RETRY_COUNT", "223"
       .Add "LOAD_FRICTION", "224"
       .Add "LOAD_UNLOAD_CYCLE_COUNTII", "225"
       .Add "LOAD_IN_TIME", "226"
       .Add "TORQUE_AMPLIFICATION_COUNT", "227"
       .Add "POWER_OFF_RETRACT_COUNT", "228"
       .Add "GMR_HEAD_AMPLITUDE", "230"
       .Add "TEMPERATUREII", "231"
       .Add "READ_ERROR_RETRY_RATE", "250"
   End With
End Sub



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av影视在线观看| 国产成人午夜99999| 欧美性大战久久| 亚洲三级电影网站| 成人高清在线视频| 久久久电影一区二区三区| 精品一区中文字幕| 欧美不卡在线视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美日韩激情一区二区| 亚洲国产综合色| 欧美日韩成人综合| 五月婷婷综合网| 在线成人高清不卡| 日本不卡视频在线观看| 日韩一区二区在线观看视频| 免费xxxx性欧美18vr| 91精品国产色综合久久| 久久精品免费看| 久久久久久影视| 国产精品一品二品| 中文一区一区三区高中清不卡| 欧美剧情电影在线观看完整版免费励志电影 | 亚洲日本va午夜在线影院| 99久久精品免费观看| 亚洲特级片在线| 在线视频一区二区免费| 亚洲成a人v欧美综合天堂下载| 在线电影欧美成精品| 美女视频一区二区三区| 久久日韩精品一区二区五区| 国产美女在线观看一区| 国产精品色在线| av日韩在线网站| 亚洲综合免费观看高清在线观看| 欧美日韩mp4| 久久成人麻豆午夜电影| 久久久国产一区二区三区四区小说| 国产69精品久久久久毛片| 亚洲少妇最新在线视频| 欧美日韩亚洲丝袜制服| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久久久97国产精华液好用吗| aaa国产一区| 亚洲国产成人va在线观看天堂 | 99麻豆久久久国产精品免费| 伊人一区二区三区| 日韩一级片网址| 国产成人丝袜美腿| 夜夜嗨av一区二区三区网页 | 国产精品久久久久久久久免费相片 | 久久精品欧美一区二区三区不卡 | 欧美自拍偷拍一区| 老司机午夜精品99久久| 国产三级精品视频| 在线观看视频一区| 麻豆免费精品视频| 综合激情网...| 日韩一区二区三区av| 成人网页在线观看| 亚洲成人三级小说| 国产欧美精品一区二区三区四区| 日本韩国欧美三级| 美女被吸乳得到大胸91| **欧美大码日韩| 91精品久久久久久久91蜜桃| 成人av在线资源| 天天综合天天做天天综合| 欧美国产视频在线| 欧美久久久久久久久中文字幕| 国产成人在线免费| 午夜精品在线视频一区| 国产精品人妖ts系列视频| 欧美精选午夜久久久乱码6080| 国产aⅴ综合色| 热久久国产精品| 亚洲免费大片在线观看| 精品国产91乱码一区二区三区 | 亚洲激情自拍视频| 欧美精品一区二区三区蜜臀| 色爱区综合激月婷婷| 国产精品资源在线| 日韩精品成人一区二区在线| 最新日韩av在线| 精品国产免费一区二区三区四区| 91久久一区二区| 国产高清在线精品| 日韩成人一区二区三区在线观看| 中文字幕亚洲区| 久久久久久久综合色一本| 欧美美女黄视频| 色综合咪咪久久| 国产成人av电影在线| 麻豆极品一区二区三区| 亚洲一区二区三区四区在线免费观看 | 91国模大尺度私拍在线视频| 国产河南妇女毛片精品久久久 | 国产成人免费在线| 蜜桃传媒麻豆第一区在线观看| 一区二区在线看| 国产精品素人视频| 久久综合九色综合97婷婷 | 91久久人澡人人添人人爽欧美| 国产成人鲁色资源国产91色综 | 亚洲成av人片在线观看无码| 亚洲女同ⅹxx女同tv| 国产色产综合产在线视频| 精品美女被调教视频大全网站| 8x8x8国产精品| 欧美人与禽zozo性伦| 欧美系列日韩一区| 99久久99久久综合| 久久97超碰色| 中文字幕一区二区在线观看| 国产亚洲美州欧州综合国| 日韩视频在线永久播放| 91九色02白丝porn| 成人91在线观看| 久久精品国产一区二区三| 亚洲老妇xxxxxx| 国产精品美女视频| 国产亚洲精品bt天堂精选| 在线播放中文一区| 色狠狠桃花综合| 91一区二区在线| 91社区在线播放| 国产盗摄女厕一区二区三区| 久久精品噜噜噜成人av农村| 亚洲成人综合视频| 亚洲综合偷拍欧美一区色| 一区二区三区在线视频免费观看| 亚洲国产精品成人综合| 久久欧美一区二区| 精品美女一区二区三区| 日韩欧美在线观看一区二区三区| 欧美日韩视频在线第一区| 欧洲精品在线观看| 色一情一伦一子一伦一区| 99国产精品久久| 99久久久国产精品| 91免费看片在线观看| 91麻豆福利精品推荐| 色呦呦网站一区| 色婷婷综合中文久久一本| 成人性生交大片免费| av爱爱亚洲一区| 97精品国产97久久久久久久久久久久 | 一区二区三区国产精品| 亚洲毛片av在线| 亚洲美女精品一区| 亚洲一区二区精品视频| 亚洲动漫第一页| 天天色图综合网| 日韩国产在线观看一区| 奇米色一区二区| 久久99精品视频| 国产一区二区福利| 国产福利不卡视频| 国产福利电影一区二区三区| 91丨九色porny丨蝌蚪| 在线观看亚洲专区| 欧美乱熟臀69xxxxxx| 欧美一区二区女人| 日韩精品自拍偷拍| 久久久久久久久伊人| 中文字幕精品一区| 亚洲男人的天堂网| 亚洲欧美日韩国产手机在线| 无吗不卡中文字幕| 免费成人av在线播放| 国产一区日韩二区欧美三区| 国产aⅴ精品一区二区三区色成熟| 国产激情91久久精品导航| 色婷婷综合久久久久中文 | 一本大道久久精品懂色aⅴ| 欧美性猛交xxxxxxxx| 欧美日韩亚洲综合| 日韩欧美一级二级三级| 国产欧美日韩中文久久| 亚洲精品网站在线观看| 三级成人在线视频| 国产99久久久精品| 在线视频一区二区三区| 日韩欧美卡一卡二| 中文字幕第一区二区| 亚洲一区二区av电影| 久久丁香综合五月国产三级网站| 国产成人午夜电影网| 91国产成人在线| 亚洲精品一区二区三区四区高清 | 久久精品水蜜桃av综合天堂| 亚洲三级在线看| 美女视频黄 久久| 成人动漫视频在线| 欧美人动与zoxxxx乱| 久久久噜噜噜久久人人看| 最新国产の精品合集bt伙计| 调教+趴+乳夹+国产+精品| 国产成人午夜99999| 欧美日韩一级大片网址|