//Copyright 2005-2008 e-Software , All Rights Reserved.
//Written by Gengjian. Email:gengs@163.com
//**Start Encode**
function GetDrvCopyFileList( BackupDriverInfo )
{
    
	
	
	
	
	
	
	
	
    
    
    
    
    
    
    var CopyFilesQueue = new Array()
    CopyFilesQueue["DevRows"] = 0


        var INFFileName     = BackupDriverInfo["DriverBackupPath"] + "\\" + BackupDriverInfo["INFName"]
        var MfgName         = BackupDriverInfo["DriverProvider"]
        var SectionName     = BackupDriverInfo["INFSectionName"]
        var SectionExtName  =   ( SectionName.search( /.nt$/i    ) != -1 ) ? ".NT"
                              : ( SectionName.search( /.ntx86$/i ) != -1 ) ? ".NTx86"
                              : ( SectionName.search( /.x86$/i   ) != -1 ) ? ".x86" 
                              : ""
        var HardwareID      = BackupDriverInfo["MatchingDeviceID"]
        var DevDesc         = BackupDriverInfo["DeviceDesc"]

        var InfHandle = DrvInf.OpenINFFile( INFFileName )
        if ( InfHandle == 0xFFFFFFFF ) 
        {
            alert( "" + PromptArray["DrvChk.js_35_1"] + "INF" + PromptArray["DrvChk.js_35_2"] + "6" + PromptArray["DrvChk.js_35_3"] + "" + INFFileName )
            return ( CopyFilesQueue )
        }

        CopyFilesQueue["Dev0,InfPathFileName"]  = INFFileName
        CopyFilesQueue["Dev0,InfCopyFiles"   ]  = 0















        var CatalogFile = DrvInf.GetSectionKeyValue( InfHandle , "Version" , "CatalogFile" + SectionExtName , 1 )
        CopyFilesQueue["Dev0,CatFileName"]      = CatalogFile

        CopyFilesQueue["Dev0,DeviceID"]     = HardwareID
        CopyFilesQueue["Dev0,DeviceDesc"]   = DevDesc
        CopyFilesQueue["Dev0,SectionName"]  = SectionName

        var Class       = DrvInf.GetSectionKeyValue( InfHandle , "Version" , "Class" , 1 )
        CopyFilesQueue["Dev0,DeviceClass"]  =  Class

        CopyFilesQueue["Dev0,Mfg"]          = MfgName
        
        var DriverDate   = DrvInf.GetSectionKeyValue( InfHandle , "Version" , "DriverVer" , 1 )
        CopyFilesQueue["Dev0,Date"]         = DriverDate

        var SectionFalg             = (DrvInf.GetSectionKeyValue( InfHandle , SectionName , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionFalg )   ? 1 : 0

        var CopyFileLine            = ( SectionFalg )   ? DrvInf.GetSectionKeyValue( InfHandle , SectionName, "CopyFiles" , -1 ) : ""
        var CopyFileSectionArray    = ( CopyFileLine )   ? CopyFileLine.split(",") : ""
        if ( CopyFileLine )
        {
            var CopyFileInfo = new Array()
            for (var i=0;CopyFileSectionArray[i];i++)
            {
                CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]         = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]         = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"]        = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = SectionName
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]      = CopyFileSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        var SectionNTFalg           = (DrvInf.GetSectionKeyValue( InfHandle , SectionName+".NT", "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionNTFalg )   ? 1 : 0
        var CopyFileNTLine          = ( SectionNTFalg ) ? DrvInf.GetSectionKeyValue( InfHandle , SectionName+".NT","CopyFiles" , -1 ) : ""
        var CopyFileNTSectionArray  = ( CopyFileNTLine ) ? CopyFileNTLine.split(",") : ""
        if ( CopyFileNTLine )
        {
            for (var i=0;CopyFileNTSectionArray[i];i++)
            {
                var CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileNTSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]  = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]  = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"] = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = SectionName + ".NT"
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]=CopyFileNTSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        var SectionNTx86Falg        = (DrvInf.GetSectionKeyValue( InfHandle , SectionName+".NTx86" , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionNTx86Falg )   ? 1 : 0
        var CopyFileNTx86Line       = (SectionNTx86Falg)? DrvInf.GetSectionKeyValue( InfHandle , SectionName+".NTx86","CopyFiles" , -1 ) : ""
        var CopyFileNTx86SectionArray=(CopyFileNTx86Line)? CopyFileNTx86Line.split(",") : ""
        if ( CopyFileNTx86Line )
        {
            for (var i=0;CopyFileNTx86SectionArray[i];i++)
            {
                var CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileNTx86SectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]  = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]  = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"] = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = SectionName + ".NTx86"
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]=CopyFileNTx86SectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        var SectionFalg       = (DrvInf.GetSectionKeyValue( InfHandle , SectionName+".CoInstallers" , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionFalg )   ? 1 : 0
        var CopyFileLine      = (SectionFalg)? DrvInf.GetSectionKeyValue( InfHandle , SectionName+".CoInstallers","CopyFiles" , -1 ) : ""
        var CopyFileSectionArray=(CopyFileLine)? CopyFileLine.split(",") : ""
        if ( CopyFileLine )
        {
            var CopyFileInfo = new Array()
            for (var i=0;CopyFileSectionArray[i];i++)
            {
                CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]         = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]         = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"]        = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = SectionName + ".CoInstallers"
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]      = CopyFileSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        var SectionFalg       = (DrvInf.GetSectionKeyValue( InfHandle , SectionName+".NT.CoInstallers" , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionFalg )   ? 1 : 0
        var CopyFileLine      = (SectionFalg)? DrvInf.GetSectionKeyValue( InfHandle , SectionName+".NT.CoInstallers","CopyFiles" , -1 ) : ""
        var CopyFileSectionArray=(CopyFileLine)? CopyFileLine.split(",") : ""
        if ( CopyFileLine )
        {
            var CopyFileInfo = new Array()
            for (var i=0;CopyFileSectionArray[i];i++)
            {
                CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]         = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]         = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"]        = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = SectionName + ".NT.CoInstallers"
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]      = CopyFileSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        var SectionFalg       = (DrvInf.GetSectionKeyValue( InfHandle , SectionName+".NTx86.CoInstallers" , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionFalg )   ? 1 : 0
        var CopyFileLine      = (SectionFalg)? DrvInf.GetSectionKeyValue( InfHandle , SectionName+".NTx86.CoInstallers","CopyFiles" , -1 ) : ""
        var CopyFileSectionArray=(CopyFileLine)? CopyFileLine.split(",") : ""
        if ( CopyFileLine )
        {
            var CopyFileInfo = new Array()
            for (var i=0;CopyFileSectionArray[i];i++)
            {
                CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]         = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]         = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"]        = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = SectionName + ".NTx86.CoInstallers"
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]      = CopyFileSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        var SectionFalg       = (DrvInf.GetSectionKeyValue( InfHandle , "ClassInstall32" + SectionExtName , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionFalg )   ? 1 : 0
        var CopyFileLine      = (SectionFalg)? DrvInf.GetSectionKeyValue( InfHandle , "ClassInstall32" + SectionExtName,"CopyFiles" , -1 ) : ""
        var CopyFileSectionArray=(CopyFileLine)? CopyFileLine.split(",") : ""
        
        if ( CopyFileLine )
        {
            var CopyFileInfo = new Array()
            for (var i=0;CopyFileSectionArray[i];i++)
            {
                CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]         = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]         = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"]        = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = "ClassInstall32" + SectionExtName
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]      = CopyFileSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }

        var SectionFalg       = (DrvInf.GetSectionKeyValue( InfHandle , "ClassInstall32.NT" , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionFalg )   ? 1 : 0
        var CopyFileLine      = (SectionFalg)? DrvInf.GetSectionKeyValue( InfHandle , "ClassInstall32.NT","CopyFiles" , -1 ) : ""
        var CopyFileSectionArray=(CopyFileLine)? CopyFileLine.split(",") : ""
        if ( CopyFileLine )
        {
            var CopyFileInfo = new Array()
            for (var i=0;CopyFileSectionArray[i];i++)
            {
                CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]         = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]         = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"]        = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = "ClassInstall32.NT"
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]      = CopyFileSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        

        var SectionFalg       = (DrvInf.GetSectionKeyValue( InfHandle , "ClassInstall32.NTx86" , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionFalg )   ? 1 : 0
        var CopyFileLine      = (SectionFalg)? DrvInf.GetSectionKeyValue( InfHandle , "ClassInstall32.NTx86","CopyFiles" , -1 ) : ""
        var CopyFileSectionArray=(CopyFileLine)? CopyFileLine.split(",") : ""
        if ( CopyFileLine )
        {
            var CopyFileInfo = new Array()
            for (var i=0;CopyFileSectionArray[i];i++)
            {
                CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]         = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]         = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"]        = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = "ClassInstall32.NTx86"
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]      = CopyFileSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        

        var SectionFalg       = (DrvInf.GetSectionKeyValue( InfHandle , "DefaultInstall" + SectionExtName , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionFalg )   ? 1 : 0
        var CopyFileLine      = (SectionFalg)? DrvInf.GetSectionKeyValue( InfHandle , "DefaultInstall" + SectionExtName ,"CopyFiles" , -1 ) : ""
        var CopyFileSectionArray=(CopyFileLine)? CopyFileLine.split(",") : ""
        if ( CopyFileLine )
        {
            var CopyFileInfo = new Array()
            for (var i=0;CopyFileSectionArray[i];i++)
            {
                CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]         = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]         = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"]        = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = "DefaultInstall" + SectionExtName
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]      = CopyFileSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        var SectionFalg       = (DrvInf.GetSectionKeyValue( InfHandle , "DefaultInstall.NT" , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionFalg )   ? 1 : 0
        var CopyFileLine      = (SectionFalg)? DrvInf.GetSectionKeyValue( InfHandle , "DefaultInstall.NT","CopyFiles" , -1 ) : ""
        var CopyFileSectionArray=(CopyFileLine)? CopyFileLine.split(",") : ""
        if ( CopyFileLine )
        {
            var CopyFileInfo = new Array()
            for (var i=0;CopyFileSectionArray[i];i++)
            {
                CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]         = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]         = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"]        = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = "DefaultInstall.NT"
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]      = CopyFileSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        var SectionFalg       = (DrvInf.GetSectionKeyValue( InfHandle , "DefaultInstall.NTx86" , "" , 0 )) ? true : false
        
        CopyFilesQueue["DevRows"]  |= ( SectionFalg )   ? 1 : 0
        var CopyFileLine      = (SectionFalg)? DrvInf.GetSectionKeyValue( InfHandle , "DefaultInstall.NTx86","CopyFiles" , -1 ) : ""
        var CopyFileSectionArray=(CopyFileLine)? CopyFileLine.split(",") : ""
        if ( CopyFileLine )
        {
            var CopyFileInfo = new Array()
            for (var i=0;CopyFileSectionArray[i];i++)
            {
                CopyFileInfo    = GetCopyFileInfo( INFFileName , CopyFileSectionArray[i] )
                for ( var j=0;j<CopyFileInfo["Rows"];j++)
                {
                    var m = CopyFilesQueue["Dev0,InfCopyFiles"   ]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFilePath"]         = CopyFileInfo[j+",SourcePath"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileName"]         = CopyFileInfo[j+",SourceFileName"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileClass"]        = CopyFileInfo[j+",NeedUserInstFlag"]
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileRootSection"]  = "DefaultInstall.NTx86"
                    CopyFilesQueue["Dev0,CopyFile" + m + ",SourceFileSection"]      = CopyFileSectionArray[i]
                    CopyFilesQueue["Dev0,InfCopyFiles"   ] ++
                }
            }
        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
return (CopyFilesQueue)
}
function GetCopyFileInfo( INFFileName , CopyFileSectionName )
{
    var CopyFileList = new Array()
    
    
    var InfHandle = DrvInf.OpenINFFile( INFFileName )
    if ( InfHandle == 0xFFFFFFFF ) 
    {
        alert( "" + PromptArray["DrvChk.js_698_1"] + "INF" + PromptArray["DrvChk.js_698_2"] + "4" + PromptArray["DrvChk.js_698_3"] + "" + INFFileName )
        return false
    }

    
    if ( CopyFileSectionName.indexOf("@") == 0 )
    {
        var FileName    = CopyFileSectionName.substr(1)
        var SourcePath  = DrvInf.GetSourceFilePath( InfHandle , FileName )
        var TargetPath  = DrvInf.GetTargetFilePath( InfHandle , "DefaultDestDir" )
        if (!TargetPath) TargetPath = "%" + DrvInf.GetSectionKeyValue( InfHandle , "DestinationDirs" ,"DefaultDestDir" , -1 ) + "%"
        CopyFileList["Rows"]                = 1
        CopyFileList["0,FileName"]          = FileName
        CopyFileList["0,SourceFileName"]    = FileName
        CopyFileList["0,SourcePath"]        = SourcePath
        CopyFileList["TargetPath"]          = TargetPath
        
        var CurInfExistDrvFileFlag = DrvInf.GetSectionKeyValue( InfHandle , "SourceDisksFiles" , FileName , 0 ) ? true : false

        
        var MasterInfHandle = DrvInf.OpenMasterINF()
        var MasterInfExistDrvFileAFlag  = DrvInf.GetSectionKeyValue( MasterInfHandle , "SourceDisksFiles"     , FileName , 0 ) ? true : false
        var MasterInfExistDrvFileBFlag  = DrvInf.GetSectionKeyValue( MasterInfHandle , "SourceDisksFiles.x86" , FileName , 0 ) ? true : false
        DrvInf.CloseINFFile( MasterInfHandle )

        if ( CurInfExistDrvFileFlag )
        {
            CopyFileList["0,NeedUserInstFlag"] = "User"
        }
        else if ( MasterInfExistDrvFileAFlag || MasterInfExistDrvFileBFlag )
        {
            CopyFileList["0,NeedUserInstFlag"] = "System"
        }
        else
        {
            CopyFileList["0,NeedUserInstFlag"] = "Unknown"
        }
    }
    
    else
    {
        CopyFileList = GetCopyFileList( INFFileName , CopyFileSectionName )
        for (var i=0;i<CopyFileList["Rows"];i++)
        {
            var SourcePath  = DrvInf.GetSourceFilePath( InfHandle , CopyFileList[i+",SourceFileName"] )
            CopyFileList[i+",SourcePath"] = SourcePath
        }
        var TargetPath  = DrvInf.GetTargetFilePath( InfHandle , CopyFileSectionName )
        if (!TargetPath) TargetPath = "%" + DrvInf.GetSectionKeyValue( InfHandle , "DestinationDirs" ,"DefaultDestDir" , -1 ) + "%"
        CopyFileList["TargetPath"] = TargetPath
    }
    DrvInf.CloseINFFile( InfHandle )


























return ( CopyFileList )
}
function GetCopyFileList( INFFileName , CopyFileSectionName )
{
    var FileList = new Array()
    
    var InfHandle = DrvInf.OpenINFFile( INFFileName )
    if ( InfHandle == 0xFFFFFFFF ) 
    {
        alert( "" + PromptArray["DrvChk.js_785_1"] + "INF" + PromptArray["DrvChk.js_785_2"] + "5" + PromptArray["DrvChk.js_785_3"] + "" + INFFileName )
        return false
    }
    
    var InfContext = DrvInf.FindFirstLineInSection( InfHandle , CopyFileSectionName , "" )
    if ( !InfContext ) 
    {
        FileList["Rows"] = 0
        
        return (FileList)
    }
    var i=0
    do
    {
        var FileName        = DrvInf.GetFieldValueInLine( InfContext ,  1 )
        var SourceFileName  = DrvInf.GetFieldValueInLine( InfContext ,  2 )
        if ( !SourceFileName) SourceFileName = FileName

        FileList[i+",FileName"] = FileName
        FileList[i+",SourceFileName"] = SourceFileName

        var SourceDisksFileName = DrvInf.GetSectionKeyValue( InfHandle , "SourceDisksFiles" , SourceFileName , 0 )
        var CurInfExistDrvFileFlag = ( SourceDisksFileName != "" ) ? true : false
        if ( !CurInfExistDrvFileFlag )
        {
            SourceDisksFileName = DrvInf.GetSectionKeyValue( InfHandle , "SourceDisksFiles.x86" , SourceFileName , 0 )
            CurInfExistDrvFileFlag = ( SourceDisksFileName != "" ) ? true : false
        }

        var MasterInfHandle = DrvInf.OpenMasterINF()
        var MasterInfExistDrvFileAFlag  = DrvInf.GetSectionKeyValue( MasterInfHandle , "SourceDisksFiles"     , FileName , 0 ) ? true : false
        var MasterInfExistDrvFileBFlag  = DrvInf.GetSectionKeyValue( MasterInfHandle , "SourceDisksFiles.x86" , FileName , 0 ) ? true : false
        DrvInf.CloseINFFile( MasterInfHandle )

        if ( CurInfExistDrvFileFlag )
        {
            FileList[i+",NeedUserInstFlag"] = "User"
        }
        else if ( MasterInfExistDrvFileAFlag || MasterInfExistDrvFileBFlag )
        {
            FileList[i+",NeedUserInstFlag"] = "System"
        }
        else
        {
            FileList[i+",NeedUserInstFlag"] = "Unknown"
        }
        
        i++
        FileList["Rows"] = i

        InfContext = DrvInf.FindNextLineInSection( InfContext )
    }
    while( InfContext )
    DrvInf.CloseINFFile( InfHandle )
return ( FileList )
}
function ChangeDrvCopyFilesQueueToInfCopyFilesQueue( CopyFilesQueue )
{
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    
    
    
    

    
    
    var CopyFilesUniqueQueue = new Array()
    CopyFilesUniqueQueue["InfRows"] = 0

    for (var i=0;i<CopyFilesQueue["DevRows"];i++)
    {
        
        
        
        
        for (var j=0;j<=CopyFilesQueue["Dev" + i + ",InfCopyFiles"];j++)
        {
            var InfExistFlag     = false

            for (var k=0;k<CopyFilesUniqueQueue["InfRows"];k++)
            {
                if ( !CopyFilesUniqueQueue["Inf" + k + ",InfPathFileName"] ) continue
                
                if ( CopyFilesUniqueQueue["Inf" + k + ",InfPathFileName"].toUpperCase() == CopyFilesQueue["Dev" + i + ",InfPathFileName"].toUpperCase() )
                {
                    InfExistFlag = true
                    
                    var DrvFileExistFlag = false
                    for (var l=0;l<CopyFilesUniqueQueue["Inf" + k + ",InfCopyFiles"] ;l++)
                    {
                        
                        if ( !CopyFilesUniqueQueue["Inf" + k + ",CopyFile" + l + ",SourceFileName"] ) continue
                        var InfCopyFileName = CopyFilesUniqueQueue["Inf" + k + ",CopyFile" + l + ",SourceFileName"]
                        var DrvCopyFileName = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFileName"]
                        
                        
                        
                        if (!InfCopyFileName || !DrvCopyFileName ) 
                        {
                            DrvFileExistFlag = true
                            break
                        }
                        
                        if (  InfCopyFileName.toUpperCase() == DrvCopyFileName.toUpperCase() ) 
                        {
                            DrvFileExistFlag = true
                            break
                        }
                    }
                    
                    if ( !DrvFileExistFlag && CopyFilesQueue["Dev" + i + ",InfCopyFiles"] )
                    {
                        var z = CopyFilesUniqueQueue["Inf" + k + ",InfCopyFiles"]
                        CopyFilesUniqueQueue["Inf" + k + ",CopyFile" + z + ",SourceFileName"]           = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFileName"]
                        CopyFilesUniqueQueue["Inf" + k + ",CopyFile" + z + ",SourceFilePath"]           = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFilePath"]
                        CopyFilesUniqueQueue["Inf" + k + ",CopyFile" + z + ",SourceFileClass"]          = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFileClass"]
                        CopyFilesUniqueQueue["Inf" + k + ",CopyFile" + z + ",SourceFileRootSection"]    = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFileRootSection"]
                        CopyFilesUniqueQueue["Inf" + k + ",CopyFile" + z + ",SourceFileSection"]        = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFileSection"]
                        CopyFilesUniqueQueue["Inf" + k + ",InfCopyFiles"] ++
                    }
                }
            }
            
            if ( !InfExistFlag )
            {
                var x = CopyFilesUniqueQueue["InfRows"]
                CopyFilesUniqueQueue["Inf" + x + ",InfPathFileName"]     = CopyFilesQueue["Dev" + i + ",InfPathFileName"]

                CopyFilesUniqueQueue["Inf" + x + ",CatFileName"]         = CopyFilesQueue["Dev" + i + ",CatFileName"]
                if ( CopyFilesQueue["Dev" + i + ",NTCatFileName"] )
                    CopyFilesUniqueQueue["Inf" + x + ",NTCatFileName"]   = CopyFilesQueue["Dev" + i + ",NTCatFileName"]
                if ( CopyFilesQueue["Dev" + i + ",x86CatFileName"] )
                    CopyFilesUniqueQueue["Inf" + x + ",x86CatFileName"]  = CopyFilesQueue["Dev" + i + ",x86CatFileName"]
                if ( CopyFilesQueue["Dev" + i + ",NTx86CatFileName"] )
                    CopyFilesUniqueQueue["Inf" + x + ",NTx86CatFileName"]= CopyFilesQueue["Dev" + i + ",NTx86CatFileName"]

                    CopyFilesUniqueQueue["Inf" + x + ",DeviceClass"]     = CopyFilesQueue["Dev" + i + ",DeviceClass"]
                    CopyFilesUniqueQueue["Inf" + x + ",Mfg"]             = CopyFilesQueue["Dev" + i + ",Mfg"]
                    CopyFilesUniqueQueue["Inf" + x + ",Date"]            = CopyFilesQueue["Dev" + i + ",Date"]

                CopyFilesUniqueQueue["Inf" + x + ",InfCopyFiles"]    = 0
                
                if (  CopyFilesQueue["Dev" + i + ",InfCopyFiles"] )
                {
                    CopyFilesUniqueQueue["Inf" + x + ",CopyFile0,SourceFileName"]           = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFileName"]
                    CopyFilesUniqueQueue["Inf" + x + ",CopyFile0,SourceFilePath"]           = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFilePath"]
                    CopyFilesUniqueQueue["Inf" + x + ",CopyFile0,SourceFileClass"]          = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFileClass"]
                    CopyFilesUniqueQueue["Inf" + x + ",CopyFile0,SourceFileRootSection"]    = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFileRootSection"]
                    CopyFilesUniqueQueue["Inf" + x + ",CopyFile0,SourceFileSection"]        = CopyFilesQueue["Dev" + i + ",CopyFile" + j + ",SourceFileSection"]

                    CopyFilesUniqueQueue["Inf" + x + ",InfCopyFiles"] ++
                }
                CopyFilesUniqueQueue["InfRows"] ++
            }
        }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
return ( CopyFilesUniqueQueue )
}
function CheckExportDriverValidity( BackupDriverInfo )
{
    
	
	
	
	
	
	
	
	
    
    
    
    
    
    

    var CopyFilesQueue = GetDrvCopyFileList( BackupDriverInfo )

    
    

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    if ( !CopyFilesQueue["DevRows"] )
    {
        
        
        
        
        
        return ""
    }
    
    
    
    
    
    var CopyFilesUniqueQueue = ChangeDrvCopyFilesQueueToInfCopyFilesQueue( CopyFilesQueue )
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    
    

    var DrvFileErrorString = ""
    
    for (var i=0;i<CopyFilesUniqueQueue["InfRows"];i++)
    {
        var missingFileFlag = false

        
        var pathLen = CopyFilesUniqueQueue["Inf" + i + ",InfPathFileName"].lastIndexOf("\\")+1
        var InfFilePath   = CopyFilesUniqueQueue["Inf" + i + ",InfPathFileName"].substring( 0 , pathLen )
        var InfFileDriver = CopyFilesUniqueQueue["Inf" + i + ",InfPathFileName"].substring( 0 , 2 )

        
        

        for (var j=0;j<CopyFilesUniqueQueue["Inf" + i + ",InfCopyFiles"];j++)
        {
            var DrvClass = CopyFilesUniqueQueue["Inf" + i + ",CopyFile" + j + ",SourceFileClass"]
            
            

            if ( DrvClass == "User" )
            {
                var DrvFilePath = ""
                
                if ( CopyFilesUniqueQueue["Inf" + i + ",CopyFile" + j + ",SourceFilePath"].indexOf("\\") == 0 )
                {   
                    var DrvSubDir = CopyFilesUniqueQueue["Inf" + i + ",CopyFile" + j + ",SourceFilePath"]
                    DrvSubDir = ( DrvSubDir.length == 1 ) ? "\\" : DrvSubDir + "\\"
                    DrvFilePath = InfFileDriver + DrvSubDir
                }
                else
                {   
                    var DrvSubDir = CopyFilesUniqueQueue["Inf" + i + ",CopyFile" + j + ",SourceFilePath"]
                    DrvSubDir = DrvSubDir ? DrvSubDir + "\\" : ""
                    DrvFilePath = InfFilePath + DrvSubDir
                }


                var DrvFilePathFileName = DrvFilePath + CopyFilesUniqueQueue["Inf" + i + ",CopyFile" + j + ",SourceFileName"]
                
                

                var DrvFileNameXml = DrvCert.FindFileInPath( DrvFilePathFileName )
                var DrvFileName = GetXmlSingleNodeText( DrvFileNameXml , "FileItem0" )
                if ( !DrvFileName )
                {
                    if ( !missingFileFlag )
                    {

                        
                        
                        
                        
                        
                        
                        
                        var UnderLineDrvFilePathFileName = DrvFilePathFileName.substring( 0 , DrvFilePathFileName.length - 1 ) + "_"
                        
                        

                        DrvFileNameXml = DrvCert.FindFileInPath( UnderLineDrvFilePathFileName )
                        DrvFileName = GetXmlSingleNodeText( DrvFileNameXml , "FileItem0" )
                        if ( DrvFileName )
                        {
                            
                            
                        }
                        else
                        {
                            
                            
                            
                            UnderLineDrvFilePathFileName = DrvFilePathFileName.substring( 0 , DrvFilePathFileName.length ) + "_"
                            DrvFileNameXml = DrvCert.FindFileInPath( UnderLineDrvFilePathFileName )
                            DrvFileName = GetXmlSingleNodeText( DrvFileNameXml , "FileItem0" )
                            if ( !DrvFileName )
                            {
                                DrvFileErrorString  += "" + CopyFilesUniqueQueue["Inf" + i + ",InfPathFileName"] + "" + PromptArray["DrvChk.js_1205_1"] + "\n"
                                DrvFileErrorString  += "" + DrvFilePath + CopyFilesUniqueQueue["Inf" + i + ",CopyFile" + j + ",SourceFileName"] + ";\n"
                                missingFileFlag     = true
                            }
                            
                            
                        }
                        
                        

                    }
                    else
                    {
                        
                        
                        
                        
                        
                        
                        

                        
                        
                        
                        var UnderLineDrvFilePathFileName = DrvFilePathFileName.substring( 0 , DrvFilePathFileName.length - 1 ) + "_"
                        DrvFileNameXml = DrvCert.FindFileInPath( UnderLineDrvFilePathFileName )
                        DrvFileName = GetXmlSingleNodeText( DrvFileNameXml , "FileItem0" )
                        if ( !DrvFileName )
                        {
                            
                            UnderLineDrvFilePathFileName = DrvFilePathFileName.substring( 0 , DrvFilePathFileName.length ) + "_"
                            DrvFileNameXml = DrvCert.FindFileInPath( UnderLineDrvFilePathFileName )
                            DrvFileName = GetXmlSingleNodeText( DrvFileNameXml , "FileItem0" )
                            if ( !DrvFileName )
                            {
                                DrvFileErrorString  += "" + DrvFilePath + CopyFilesUniqueQueue["Inf" + i + ",CopyFile" + j + ",SourceFileName"] + ";\n"
                                
                                
                            }
                        }
                        
                        
                    }
                }
            }
        }
    }

    return  DrvFileErrorString 
}
function GetAllSourceFileListFromINF( INFPathFilename )
{
    var FileList = new Array()
    var INFPath = INFPathFilename.substring( 0 , INFPathFilename.lastIndexOf("\\") )
    
    var InfHandle = DrvInf.OpenINFFile( INFPathFilename )
    if ( InfHandle == 0xFFFFFFFF ) 
    {
        FileList["Success"] = false
        FileList["Info"   ] = "" + PromptArray["DrvChk.js_1264_1"] + "INF" + PromptArray["DrvChk.js_1264_2"] + "5" + PromptArray["DrvChk.js_1264_3"] + "" + INFPathFilename
        return ( FileList )
    }
    try
    {
        FileList["Rows"   ] = 1
        FileList[0]         = INFPathFilename

        var CatalogFile = DrvInf.GetSectionKeyValue( InfHandle , "Version" , "CatalogFile" , 1 )
        if ( !CatalogFile )
            CatalogFile = DrvInf.GetSectionKeyValue( InfHandle , "Version" , "CatalogFile.NT" , 1 )
        if ( !CatalogFile )
            CatalogFile = DrvInf.GetSectionKeyValue( InfHandle , "Version" , "CatalogFile.x86" , 1 )
        if ( !CatalogFile )
            CatalogFile = DrvInf.GetSectionKeyValue( InfHandle , "Version" , "CatalogFile.NTx86" , 1 )
        if ( CatalogFile )
        {
            FileList["Rows"   ] = 2
            FileList[1]         = INFPath + "\\" + CatalogFile
        }

        var InfContext = DrvInf.FindFirstLineInSection( InfHandle , "SourceDisksFiles" , "" )
        if ( InfContext == 0) 
        {
            FileList["Success"] = true
            FileList["Info"   ] = ""
            return (FileList)
        }
        var i=FileList["Rows"]
        do
        {
            var FileName  = DrvInf.GetFieldValueInLine( InfContext ,  0 )
            var FilePath  = DrvInf.GetSourceFilePath( InfHandle , FileName )
            FileList[ i ] = INFPath + "\\"
            
            
            if ( FilePath ) FileList[ i ] += FilePath + "\\"
            FileList[ i ] += FileName

            i++
            FileList["Rows"] = i

            InfContext = DrvInf.FindNextLineInSection( InfContext )
        }
        while( InfContext != 0 )
    }
    finally
    {
        DrvInf.CloseINFFile( InfHandle )
    }
    FileList["Success"] = true
    FileList["Info"   ] = ""
return ( FileList )




}
