Option Strict Off
Option Explicit On 
Imports System.Runtime.InteropServices

Friend Class frmMirror
	Inherits System.Windows.Forms.Form
#Region "Windows tH[ fUCiɂĐꂽR[h"
	Public Sub New()
		MyBase.New()
		If m_vb6FormDefInstance Is Nothing Then
			If m_InitializingDefInstance Then
				m_vb6FormDefInstance = Me
			Else
				Try 
					'X^[gAbv tH[ɂẮAŏɍ쐬ꂽCX^XCX^XɂȂ܂B
					If System.Reflection.Assembly.GetExecutingAssembly.EntryPoint.DeclaringType Is Me.GetType Then
						m_vb6FormDefInstance = Me
					End If
				Catch
				End Try
			End If
		End If
		'̌ĂяóAWindows tH[ fUCiŕKvłB
		InitializeComponent()
	End Sub
	'Form ́AR|[lgꗗɌ㏈s邽߂ dispose I[o[Ch܂B
	Protected Overloads Overrides Sub Dispose(ByVal Disposing As Boolean)
		If Disposing Then
			If Not components Is Nothing Then
				components.Dispose()
			End If
		End If
		MyBase.Dispose(Disposing)
	End Sub
	'Windows tH[ fUCiŕKvłB
	Private components As System.ComponentModel.IContainer
	Public ToolTip1 As System.Windows.Forms.ToolTip
	Public WithEvents Timer1 As System.Windows.Forms.Timer
	Public WithEvents LedDrive3 As System.Windows.Forms.Label
	Public WithEvents lblDrive3 As System.Windows.Forms.Label
	Public WithEvents lblDrive2 As System.Windows.Forms.Label
	Public WithEvents lblDrive1 As System.Windows.Forms.Label
	Public WithEvents LedDrive2 As System.Windows.Forms.Label
	Public WithEvents LedDrive1 As System.Windows.Forms.Label
	Public WithEvents lblSmartState As System.Windows.Forms.Label
	' : ȉ̃vV[W Windows tH[ fUCiŕKvłB
	'Windows tH[ fUCigĕύXł܂B
	'R[h GfB^gďCȂłB
	<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.components = New System.ComponentModel.Container
        Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(frmMirror))
        Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components)
        Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
        Me.LedDrive3 = New System.Windows.Forms.Label
        Me.lblDrive3 = New System.Windows.Forms.Label
        Me.lblDrive2 = New System.Windows.Forms.Label
        Me.lblDrive1 = New System.Windows.Forms.Label
        Me.LedDrive2 = New System.Windows.Forms.Label
        Me.LedDrive1 = New System.Windows.Forms.Label
        Me.lblSmartState = New System.Windows.Forms.Label
        Me.SuspendLayout()
        '
        'Timer1
        '
        Me.Timer1.Interval = 1
        '
        'LedDrive3
        '
        Me.LedDrive3.BackColor = System.Drawing.Color.Green
        Me.LedDrive3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
        Me.LedDrive3.Location = New System.Drawing.Point(24, 32)
        Me.LedDrive3.Name = "LedDrive3"
        Me.LedDrive3.Size = New System.Drawing.Size(73, 33)
        Me.LedDrive3.TabIndex = 0
        '
        'lblDrive3
        '
        Me.lblDrive3.BackColor = System.Drawing.SystemColors.Control
        Me.lblDrive3.Cursor = System.Windows.Forms.Cursors.Default
        Me.lblDrive3.ForeColor = System.Drawing.SystemColors.ControlText
        Me.lblDrive3.Location = New System.Drawing.Point(24, 8)
        Me.lblDrive3.Name = "lblDrive3"
        Me.lblDrive3.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.lblDrive3.Size = New System.Drawing.Size(73, 17)
        Me.lblDrive3.TabIndex = 3
        Me.lblDrive3.Text = "ExtDRIVE"
        Me.lblDrive3.TextAlign = System.Drawing.ContentAlignment.TopCenter
        '
        'lblDrive2
        '
        Me.lblDrive2.BackColor = System.Drawing.SystemColors.Control
        Me.lblDrive2.Cursor = System.Windows.Forms.Cursors.Default
        Me.lblDrive2.ForeColor = System.Drawing.SystemColors.ControlText
        Me.lblDrive2.Location = New System.Drawing.Point(217, 8)
        Me.lblDrive2.Name = "lblDrive2"
        Me.lblDrive2.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.lblDrive2.Size = New System.Drawing.Size(73, 17)
        Me.lblDrive2.TabIndex = 2
        Me.lblDrive2.Text = "DRIVE2"
        Me.lblDrive2.TextAlign = System.Drawing.ContentAlignment.TopCenter
        '
        'lblDrive1
        '
        Me.lblDrive1.BackColor = System.Drawing.SystemColors.Control
        Me.lblDrive1.Cursor = System.Windows.Forms.Cursors.Default
        Me.lblDrive1.ForeColor = System.Drawing.SystemColors.ControlText
        Me.lblDrive1.Location = New System.Drawing.Point(121, 8)
        Me.lblDrive1.Name = "lblDrive1"
        Me.lblDrive1.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.lblDrive1.Size = New System.Drawing.Size(73, 17)
        Me.lblDrive1.TabIndex = 1
        Me.lblDrive1.Text = "DRIVE1"
        Me.lblDrive1.TextAlign = System.Drawing.ContentAlignment.TopCenter
        '
        'LedDrive2
        '
        Me.LedDrive2.BackColor = System.Drawing.Color.Green
        Me.LedDrive2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
        Me.LedDrive2.Location = New System.Drawing.Point(217, 32)
        Me.LedDrive2.Name = "LedDrive2"
        Me.LedDrive2.Size = New System.Drawing.Size(73, 33)
        Me.LedDrive2.TabIndex = 4
        '
        'LedDrive1
        '
        Me.LedDrive1.BackColor = System.Drawing.Color.FromArgb(CType(255, Byte), CType(128, Byte), CType(0, Byte))
        Me.LedDrive1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
        Me.LedDrive1.Location = New System.Drawing.Point(121, 32)
        Me.LedDrive1.Name = "LedDrive1"
        Me.LedDrive1.Size = New System.Drawing.Size(73, 33)
        Me.LedDrive1.TabIndex = 5
        '
        'lblSmartState
        '
        Me.lblSmartState.BackColor = System.Drawing.SystemColors.Control
        Me.lblSmartState.Cursor = System.Windows.Forms.Cursors.Default
        Me.lblSmartState.ForeColor = System.Drawing.SystemColors.ControlText
        Me.lblSmartState.Location = New System.Drawing.Point(0, 72)
        Me.lblSmartState.Name = "lblSmartState"
        Me.lblSmartState.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.lblSmartState.Size = New System.Drawing.Size(310, 15)
        Me.lblSmartState.TabIndex = 0
        Me.lblSmartState.Text = "Label1"
        Me.lblSmartState.TextAlign = System.Drawing.ContentAlignment.TopCenter
        '
        'frmMirror
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 12)
        Me.BackColor = System.Drawing.SystemColors.Control
        Me.ClientSize = New System.Drawing.Size(315, 88)
        Me.Controls.Add(Me.LedDrive3)
        Me.Controls.Add(Me.lblDrive3)
        Me.Controls.Add(Me.lblDrive2)
        Me.Controls.Add(Me.lblDrive1)
        Me.Controls.Add(Me.LedDrive2)
        Me.Controls.Add(Me.LedDrive1)
        Me.Controls.Add(Me.lblSmartState)
        Me.Cursor = System.Windows.Forms.Cursors.Default
        Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
        Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
        Me.Location = New System.Drawing.Point(3, 22)
        Me.MaximizeBox = False
        Me.MinimizeBox = False
        Me.Name = "frmMirror"
        Me.RightToLeft = System.Windows.Forms.RightToLeft.No
        Me.Text = "Triple Mirror State"
        Me.ResumeLayout(False)

    End Sub
#End Region 
#Region "AbvO[h EBU[h̃T|[g R[h"
	Private Shared m_vb6FormDefInstance As frmMirror
	Private Shared m_InitializingDefInstance As Boolean
	Public Shared Property DefInstance() As frmMirror
		Get
			If m_vb6FormDefInstance Is Nothing OrElse m_vb6FormDefInstance.IsDisposed Then
				m_InitializingDefInstance = True
				m_vb6FormDefInstance = New frmMirror()
				m_InitializingDefInstance = False
			End If
			DefInstance = m_vb6FormDefInstance
		End Get
		Set
			m_vb6FormDefInstance = Value
		End Set
	End Property
#End Region 
	
	'*****************************************************************************
	'   t@C F frmMirror.frm
	'
	'   @\ F ~[Xe[^X\@\
	'
	'
	' Copyright (C) NEC Corporation 2005
	'*****************************************************************************
	
	
	
	
	'*****************************************************************************
	' HDD擾p萔`
	'*****************************************************************************
	
	' RETURNXe[^X
	Private Const FCSRASAPI_SUCCESS As Short = &H0s
	Private Const FCSRASAPI_DRVERR As Short = &H1s
	
	
	' HDD̃ANZXw
	Private Const HDDSTS_PRI_MAS As Short = &H10s ' vC}}X^w
	Private Const HDDSTS_PRI_SRV As Short = &H20s ' vC}X[uw
	Private Const HDDSTS_SEC_MAS As Short = &H30s ' ZJ_}X^w
	Private Const HDDSTS_SEC_SRV As Short = &H40s ' ZJ_X[uw
	
	Private Const HDDSTS_MRR_DRV1 As Short = &H1s ' ~[hCuPw
	Private Const HDDSTS_MRR_DRV2 As Short = &H2s ' ~[hCuQw
	
	' HDD󋵂ޯď (IOCTL_FCSOFTRAS_GET_HDDINF)
	Private Const HDDCONN_SMARTERR_BIT As Byte = &H1s ' SMARTG[  0:   1:ُ
	Private Const HDDCONN_CONNECT_BIT As Byte = &H40s ' HDDڑ      0:ڑ 1:ڑL
	Private Const HDDCONN_MIRROR_BIT As Byte = &H80s ' װ      0:ڑ 1:ڑL
	
	' HDDð (IOCTL_FCSOFTRAS_GET_HDDINF)
    Private Const HDDSTS_NORMAL As Byte = &H0S ' 

    Private Const HDDSTS_ERR_DRV1 As Byte = &H10S ' װDrive1̏
    Private Const HDDSTS_ERR_DRV2 As Byte = &H11S ' װDrive2̏
    Private Const HDDSTS_ERR_DRV3 As Byte = &H12S ' װExtDrivȅ
    Private Const HDDSTS_ERR_DRV12 As Byte = &H13S ' װDrive1,2̏
    Private Const HDDSTS_ERR_DRV13 As Byte = &H14S ' װExtDrive,Drive1̏
    Private Const HDDSTS_ERR_DRV23 As Byte = &H15S ' װExtDrive,Drive2̏
	
    Private Const HDDSTS_RECON_1 As Byte = &H20S ' ްč\z(Drive2Drive1ֺ߰)
    Private Const HDDSTS_RECON_2 As Byte = &H21S ' ްč\z(Drive1Drive2ֺ߰)
    Private Const HDDSTS_RECON_3 As Byte = &H22S ' ްč\z(ExtDriveDrive1ֺ߰)
    Private Const HDDSTS_RECON_4 As Byte = &H23S ' ްč\z(Drive1ExtDriveֺ߰)
    Private Const HDDSTS_RECON_5 As Byte = &H24S ' ްč\z(ExtDriveDrive2ֺ߰)
    Private Const HDDSTS_RECON_6 As Byte = &H25S ' ްč\z(Drive2ExtDriveֺ߰)
    Private Const HDDSTS_RECON_7 As Byte = &H26S ' ްč\z(Drive1ExtDrive,Drive2ֺ߰)
    Private Const HDDSTS_RECON_8 As Byte = &H27S ' ްč\z(Drive2ExtDrive,Drive1ֺ߰)
    Private Const HDDSTS_RECON_9 As Byte = &H28S ' ްč\z(ExtDriveDrive1,Drive2ֺ߰)

    Private Const HDDSTS_RECON_SKIP_1 As Byte = &H30S ' غݔ(Drive1Drive2ްč\z)
    Private Const HDDSTS_RECON_SKIP_2 As Byte = &H31S ' غݔ(Drive2Drive1ްč\z)
    Private Const HDDSTS_RECON_SKIP_3 As Byte = &H32S ' غݔ(Drive3)
    Private Const HDDSTS_RECON_SKIP_12 As Byte = &H33S ' غݔ(Drive1,Drive2)
    Private Const HDDSTS_RECON_SKIP_13 As Byte = &H34S ' غݔ(Drive1,Drive3)
    Private Const HDDSTS_RECON_SKIP_23 As Byte = &H35S ' غݔ(Drive2,Drive3)

    Private Const HDDSTS_ERR_RECON_1 As Byte = &H40S ' װDrive1̏,ްč\z(Drive3Drive2ֺ߰)
    Private Const HDDSTS_ERR_RECON_2 As Byte = &H41S ' װDrive1̏,ްč\z(Drive2Drive3ֺ߰)
    Private Const HDDSTS_ERR_RECON_3 As Byte = &H42S ' װDrive2̏,ްč\z(Drive3Drive1ֺ߰)
    Private Const HDDSTS_ERR_RECON_4 As Byte = &H43S ' װDrive2̏,ްč\z(Drive1Drive3ֺ߰)
    Private Const HDDSTS_ERR_RECON_5 As Byte = &H44S ' װDrive3̏,ްč\z(Drive2Drive1ֺ߰)
    Private Const HDDSTS_ERR_RECON_6 As Byte = &H45S ' װDrive3̏,ްč\z(Drive1Drive2ֺ߰)
	
    Private Const vbOrange As Integer = &H80FF ' ԕ\p̐Fݒ(j
	
	'*****************************************************************************
	' \tgRASI/F`
	'*****************************************************************************
	Private Declare Function fcsoftrasOpen Lib "FcSrasapiP.dll"  Alias "fcsoftrasOpenP"() As Integer
	Private Declare Function fcsoftrasClose Lib "FcSrasapiP.dll"  Alias "fcsoftrasCloseP"() As Integer
    Private Declare Function fcsoftrasGetMirrorStatus Lib "FcSrasapiP.dll" Alias "fcsoftrasGetMirrorStatusP" (ByVal DriveNum As Byte, <MarshalAs(UnmanagedType.SafeArray)> ByRef buff() As Byte) As Integer
	Private Declare Function fcsoftrasGetMirrorReconProgress Lib "FcSrasapiP.dll"  Alias "fcsoftrasGetMirrorReconProgressP"(ByVal DriveNum As Byte, ByRef buff As Byte) As Integer
	
	'****************************************************
	'   ֐ F Form_Load
	'   @\   Fʂ̋N()
	'      F Ȃ
	'   ߂l F Ȃ
	'****************************************************
	Private Sub frmMirror_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
		' ƃtH_st@CtH_ɕύX DLLǂݏo
		ChDrive(VB6.GetPath)
		ChDir(VB6.GetPath)
		
		' \tgRAS̃Cu
		Call fcsoftrasOpen()
		' ݂̏Ԃ擾Ɖʂւ̔f
		Call subSetMirrorState()
		
		' ʍXVp̃^C}[ݒ
		Timer1.Interval = 30000 ' 30bݒ
		Timer1.Enabled = True ' L
		
	End Sub
	
	'****************************************************
	'   ֐ F Form_Unload
	'   @\   Fʂ̏I(㏈)
	'      F Ȃ
	'   ߂l F Ȃ
	'****************************************************
    Private Sub frmMirror_Closed(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Closed
        ' \tgRAS̃CuI
        Call fcsoftrasClose()
    End Sub

    '****************************************************
    '   ֐ F Timer1_Timer
    '   @\   F^C}[ɂʍXV
    '      F Ȃ
    '   ߂l F Ȃ
    '****************************************************
    Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
        ' ݂̏Ԃ擾Ɖʂւ̔f
        Call subSetMirrorState()
    End Sub

    '****************************************************
    '   ֐ F subSetMirrorState
    '   @\   F~[̏Ԃ擾Aʂ̍XVsȂ
    '      F Ȃ
    '   ߂l F Ȃ
    '****************************************************
    Private Sub subSetMirrorState()
        Dim buff(3) As Byte ' ~[Xe[^Xۑp
        Dim Ret As Short ' ߂lۑp
        Dim Progress As Byte ' i󋵕ۑp

        ' ~[Xe[^X̎擾
        Ret = fcsoftrasGetMirrorStatus(HDDSTS_PRI_MAS, buff)

        ' ~[Xe[^X擾H
        If FCSRASAPI_SUCCESS = Ret Then

            With lblSmartState
                ' ~[Xe[^X̏󋵂ɂʂXV
                Select Case buff(0)

                    ' 
                Case HDDSTS_NORMAL
                        .Text = "Normal" ' ڍ׏ݒ
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' hCuPG[
                    Case HDDSTS_ERR_DRV1
                        .Text = "DRIVE1 failure" ' ڍ׏ݒ
                        LedDrive1.BackColor = Color.Red ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' hCuQG[
                    Case HDDSTS_ERR_DRV2
                        .Text = "DRIVE2 failure" ' ڍ׏ݒ
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Red ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' ghCuG[
                    Case HDDSTS_ERR_DRV3
                        .Text = "ExtDRIVE failure" ' ڍ׏ݒ
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Red ' ghCu LEDݒ()

                        ' hCuPAQG[
                    Case HDDSTS_ERR_DRV12
                        .Text = "DRIVE1,DRIVE2 failure" ' ڍ׏ݒ
                        LedDrive1.BackColor = Color.Red ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Red ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' ghCuAhCuPG[
                    Case HDDSTS_ERR_DRV13
                        .Text = "ExtDRIVE,DRIVE1 failure" ' ڍ׏ݒ
                        LedDrive1.BackColor = Color.Red ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Red ' ghCu LEDݒ()

                        ' ghCuAhCuQG[
                    Case HDDSTS_ERR_DRV23
                        .Text = "ExtDRIVE,DRIVE2 failure" ' ڍ׏ݒ
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Red ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Red ' ghCu LEDݒ()

                        ' f[^č\z(DRIVE1DRIVE2)
                    Case HDDSTS_RECON_1
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "Currently copying(DRIVE1<-DRIVE2)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Currently copying(DRIVE1<-DRIVE2)"
                        End If
                        LedDrive1.BackColor = Color.Orange ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' f[^č\z(DRIVE1DRIVE2)
                    Case HDDSTS_RECON_2
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "Currently copying(DRIVE1->DRIVE2)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Currently copying(DRIVE1->DRIVE2)"
                        End If
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Orange ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' f[^č\z(ExtDRIVEDRIVE1)
                    Case HDDSTS_RECON_3
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "Currently copying(ExtDRIVE->DRIVE1)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Currently copying(ExtDRIVE->DRIVE1)"
                        End If
                        LedDrive1.BackColor = Color.Orange ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' f[^č\z(ExtDRIVEDRIVE1)
                    Case HDDSTS_RECON_4
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "Currently copying(ExtDRIVE<-DRIVE1)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Currently copying(ExtDRIVE<-DRIVE1)"
                        End If
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Orange ' ghCu LEDݒ()

                        ' f[^č\z(ExtDRIVEDRIVE2)
                    Case HDDSTS_RECON_5
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "Currently copying(ExtDRIVE->DRIVE2)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Currently copying(ExtDRIVE->DRIVE2)"
                        End If
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Orange ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' f[^č\z(ExtDRIVEDRIVE2)
                    Case HDDSTS_RECON_6
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "Currently copying(ExtDRIVE<-DRIVE2)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Currently copying(ExtDRIVE<-DRIVE2)"
                        End If
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Orange ' ghCu LEDݒ()

                        ' f[^č\z(DRIVE1ExtDRIVE,DRIVE2)
                    Case HDDSTS_RECON_7
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "Currently copying(DRIVE1->ExtDRIVE,DRIVE2)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Currently copying(DRIVE1->ExtDRIVE,DRIVE2)"
                        End If
                        LedDrive1.BackColor = Color.Lime           ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Orange          ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Orange          ' ghCu LEDݒ()

                        ' f[^č\z(DRIVE2ExtDRIVE,DRIVE1)
                    Case HDDSTS_RECON_8
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "Currently copying(DRIVE2->ExtDRIVE,DRIVE1)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Currently copying(DRIVE2->ExtDRIVE,DRIVE1)"
                        End If
                        LedDrive1.BackColor = Color.Orange          ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime           ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Orange          ' ghCu LEDݒ()

                        ' f[^č\z(ExtDRIVEDRIVE1,DRIVE2)
                    Case HDDSTS_RECON_9
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "Currently copying(ExtDRIVE->DRIVE1,DRIVE2)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Currently copying(ExtDRIVE->DRIVE1,DRIVE2)"
                        End If
                        LedDrive1.BackColor = Color.Orange          ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Orange          ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime           ' ghCu LEDݒ()

                        ' XLbvR
                    Case HDDSTS_RECON_SKIP_1
                        .Text = "Skip recon(DRIVE1)"
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' XLbvR
                    Case HDDSTS_RECON_SKIP_2
                        .Text = "Skip recon(DRIVE2)"
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' XLbvR
                    Case HDDSTS_RECON_SKIP_3
                        .Text = "Skip recon(ExtDRIVE)"
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' XLbvR
                    Case HDDSTS_RECON_SKIP_12
                        .Text = "Skip recon(DRIVE1,DRIVE2)"
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' XLbvR
                    Case HDDSTS_RECON_SKIP_13
                        .Text = "Skip recon(ExtDRIVE,DRIVE1)"
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' XLbvR
                    Case HDDSTS_RECON_SKIP_23
                        .Text = "Skip recon(ExtDRIVE,DRIVE2)"
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' hCuPG[Af[^č\z(ExtDRIVEDRIVE2)
                    Case HDDSTS_ERR_RECON_1
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "DRIVE1 failure,Currently copying(ExtDRIVE->DRIVE2)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Drive1 failure,Currently copying(ExtDRIVE->DRIVE2)"
                        End If
                        LedDrive1.BackColor = Color.Red ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Orange ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' hCuPG[Af[^č\z(ExtDRIVEDRIVE2)
                    Case HDDSTS_ERR_RECON_2
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "DRIVE1 failure,Currently copying(ExtDRIVE<-DRIVE2)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "Drive1 failure,Currently copying(ExtDRIVE<-DRIVE2)"
                        End If
                        LedDrive1.BackColor = Color.Red ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Orange ' ghCu LEDݒ()

                        ' hCuQG[Af[^č\z(ExtDRIVEDRIVE1)
                    Case HDDSTS_ERR_RECON_3
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "DRIVE2 failure,Currently copying(ExtDRIVE->DRIVE1)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "DRIVE2 failure,Currently copying(ExtDRIVE->DRIVE1)"
                        End If
                        LedDrive1.BackColor = Color.Orange ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Red ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Lime ' ghCu LEDݒ()

                        ' hCuQG[Af[^č\z(ExtDRIVEDRIVE1)
                    Case HDDSTS_ERR_RECON_4
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "DRIVE2 failure,Currently copying(ExtDRIVE<-DRIVE1)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "DRIVE2 failure,Currently copying(ExtDRIVE<-DRIVE1)"
                        End If
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Red ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Orange ' ghCu LEDݒ()

                        ' ghCuG[Af[^č\z(DRIVE1DRIVE2)
                    Case HDDSTS_ERR_RECON_5
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "ExtDRIVE failure,Currently copying(DRIVE1<-DRIVE2)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "ExtDRIVE failure,Currently copying(DRIVE1<-DRIVE2)"
                        End If
                        LedDrive1.BackColor = Color.Orange ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Lime ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Red ' ghCu LEDݒ()

                        ' ghCuG[Af[^č\z(DRIVE1DRIVE2)
                    Case HDDSTS_ERR_RECON_6
                        ' i̎擾
                        If FCSRASAPI_SUCCESS = fcsoftrasGetMirrorReconProgress(HDDSTS_PRI_MAS, Progress) Then
                            ' ڍ׏ݒ(i܂)
                            .Text = "ExtDRIVE failure,Currently copying(DRIVE1->DRIVE2)" & Progress & "%"

                            ' i̎擾s
                        Else
                            ' ڍ׏ݒ
                            .Text = "ExtDRIVE failure,Currently copying(DRIVE1->DRIVE2)"
                        End If
                        LedDrive1.BackColor = Color.Lime ' hCu1 LEDݒ()
                        LedDrive2.BackColor = Color.Orange ' hCu2 LEDݒ()
                        LedDrive3.BackColor = Color.Red ' ghCu LEDݒ()
                End Select
            End With
        Else
            ' ~[Xe[^X̎擾ŝŖ̏󋵂\
            lblSmartState.Text = "None mirror board"
            LedDrive1.BackColor = Color.White
            LedDrive2.BackColor = Color.White
            LedDrive3.BackColor = Color.White
        End If
    End Sub
End Class