⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setupapi.inc

📁 borland c++ 4.0 用于学习ucos的
💻 INC
📖 第 1 页 / 共 4 页
字号:
        ERROR STFERR
    END IF
END SUB


'*************************************************************************
SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
'$ifdef DEBUG
    if szDll$ = "" then
        n% = 1
    elseif idDlg% = 0 then
        n% = 2
    elseif szProc$ = "" then
        n% = 3
    elseif lTicks& <= 0 then
        n% = 4
    else
        n% = 0
    end if
    if n% > 0 then
        BadArgErr n%, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
    end if
'$endif ''DEBUG

    IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
'$endif ''DEBUG
        ERROR STFERR
    END IF
END SUB


'*************************************************************************
SUB AddBlankToBillboardList (lTicks&) STATIC
'$ifdef DEBUG
    if lTicks& <= 0 then
        BadArgErr 1, "AddBlankToBillboardList", STR$(lTicks&)
    end if
'$endif ''DEBUG
    IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "AddBlankToBillboardList", STR$(lTicks&)
'$endif ''DEBUG
        ERROR STFERR
    END IF
END SUB


'*************************************************************************
SUB ClearBillboardList STATIC
    IF FClearBillboardList = 0 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "ClearBillboardList", ""
'$endif ''DEBUG
        ERROR STFERR
    END IF
END SUB


'*************************************************************************
SUB OpenLogFile (szFile$, fAppend%) STATIC
'$ifdef DEBUG
    if FValidFATPath(szFile$) = 0 then
        BadArgErr 1, "OpenLogFile", szFile$+", "+STR$(fAppend%)
    end if
'$endif ''DEBUG
    IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "OpenLogFile", szFile$+", "+STR$(fAppend%)
'$endif ''DEBUG
        ERROR STFERR
    END IF
END SUB


'*************************************************************************
SUB CloseLogFile STATIC
    IF FCloseLogFile() = 0 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "CloseLogFile", ""
'$endif ''DEBUG
        ERROR STFERR
    END IF
END SUB


'*************************************************************************
SUB WriteToLogFile (szStr$) STATIC
    IF FWriteToLogFile(szStr$, 1) = 0 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "WriteToLogFile", szStr$
'$endif ''DEBUG
        ERROR STFERR
    END IF
END SUB


''' -1 in either parameter will mean 'center in frame client area'
'*************************************************************************
SUB SetCopyGaugePosition (x%, y%) STATIC
    ProSetPos x%, y%
END SUB


'*************************************************************************
FUNCTION FindFileUsingFileOpen (szFile$) STATIC AS STRING
    szBuf$ = STRING$(512, 32)

    wRet% = WFindFileUsingFileOpen(szFile$, szBuf$, len(szBuf$))
    IF wRet% = 0 THEN
        FindFileUsingFileOpen = szBuf$
    ELSEIF wRet% = 1 THEN
        FindFileUsingFileOpen = ""
    ELSE
'$ifdef DEBUG
        StfApiErr saeFail, "FindFileUsingFileOpen", szFile$
'$endif ''DEBUG
        ERROR STFERR
    END IF

    szBuf$ = ""
END FUNCTION


'*************************************************************************
FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
    IsDirWritable = FIsDirWritable(szDir$)
END FUNCTION


'*************************************************************************
FUNCTION IsFileWritable (szFile$) STATIC AS INTEGER
'$ifdef DEBUG
    if FValidFATDir(szFile$) = 0 then
        BadArgErr 1, "IsFileWritable", szFile$
    end if
'$endif ''DEBUG
    IsFileWritable = FIsFileWritable(szFile$)
END FUNCTION


'*************************************************************************
FUNCTION GetNthFieldFromIniString (szLine$, iField%) STATIC AS STRING
    IF iField% < 1 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "GetNthFieldFromIniString", szLine$+", "+STR$(iField%)
'$endif ''DEBUG
        ERROR STFERR
    END IF
    szStart$ = szLine$
    IF iField% <> 1 THEN
        FOR i% = 2 TO iField% STEP 1
            iNew% = INSTR(szStart$, ",")
            IF iNew% = 0 THEN
                GetNthFieldFromIniString = ""
                GOTO _GNFFIS_END
            END IF
            szStart$ = MID$(szStart$, (iNew% + 1))
        NEXT
    END IF

    iNew% = INSTR(szStart$, ",")
    IF iNew% <> 0 THEN
        szStart$ = MID$(szStart$, 1, (iNew% - 1))
    END IF

    GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))

_GNFFIS_END:

END FUNCTION


'*************************************************************************
FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
    GetWindowsMajorVersion = GetVersion() MOD 256
END FUNCTION


'*************************************************************************
FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
    GetWindowsMinorVersion = GetVersion() / 256
END FUNCTION


'*************************************************************************
FUNCTION GetWindowsMode STATIC AS INTEGER
    GetWindowsMode = 0
    longTmp& = GetWinFlags()
    IF longTmp& AND WF_STANDARD THEN
        GetWindowsMode = 1
    ELSEIF longTmp& AND WF_ENHANCED THEN
        GetWindowsMode = 2
    END IF
END FUNCTION


'*************************************************************************
FUNCTION GetWindowsDir STATIC AS STRING
    szBuf$ = string$(256, 32)
    cbBuf% = GetWindowsDirectory(szBuf$, 256)

    IF cbBuf% = 0 THEN
        GetWindowsDir = ""
'$ifdef DEBUG
        StfApiErr saeFail, "GetWindowsDir", ""
'$endif ''DEBUG
        ERROR STFERR
    ELSE
        IF cbBuf% > 255 THEN
            res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
            ERROR STFERR
        END IF
        szBuf$ = RTRIM$(szBuf$)
        IF MID$(szBuf$, 1, 1) = "\" THEN
            'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
            szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
        ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
            szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
        END IF
        IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
            szBuf$ = szBuf$ + "\"
        END IF
        GetWindowsDir = szBuf$
    END IF

    szBuf$ = ""
END FUNCTION


'*************************************************************************
FUNCTION GetWindowsSysDir STATIC AS STRING
    szBuf$ = string$(256, 32)
    cbBuf% = GetSystemDirectory(szBuf$, 256)

    IF cbBuf% = 0 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "GetWindowsSysDir", ""
'$endif ''DEBUG
        ERROR STFERR
    ELSE
        IF cbBuf% > 255 THEN
            res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
            ERROR STFERR
        END IF
        szBuf$ = RTRIM$(szBuf$)
        IF MID$(szBuf$, 1, 1) = "\" THEN
            szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
        ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
            szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
        END IF
        IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
            szBuf$ = szBuf$ + "\"
        END IF
        GetWindowsSysDir = szBuf$
    END IF

    szBuf$ = ""
END FUNCTION


'*************************************************************************
FUNCTION IsWindowsShared STATIC AS INTEGER
    szWin$ = UCASE$(GetWindowsDir())
    szSys$ = UCASE$(GetWindowsSysDir())

    IF len(szWin$) = 0 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "IsWindowsShared", ""
'$endif ''DEBUG
        ERROR STFERR
    END IF

    IF len(szSys$) <= len(szWin$) THEN
        IsWindowsShared = 1
    ELSE
        szSys$ = MID$(szSys$, 1, len(szWin$))
        IF szWin$ = szSys$ THEN
            IsWindowsShared = 0
        ELSE
            IsWindowsShared = 1
        END IF
    END IF
END FUNCTION


'*************************************************************************
FUNCTION GetScreenWidth STATIC AS INTEGER
    GetScreenWidth = GetSystemMetrics(SM_CXSCREEN)
END FUNCTION


'*************************************************************************
FUNCTION GetScreenHeight STATIC AS INTEGER
    GetScreenHeight = GetSystemMetrics(SM_CYSCREEN)
END FUNCTION


'*************************************************************************
SUB SetRestartDir (szDir$) STATIC
'$ifdef DEBUG
    if FValidFATDir(szDir$) = 0 then
        BadArgErr 1, "SetRestartDir", szDir$
    end if
'$endif ''DEBUG
    IF FSetRestartDir(szDir$) = 0 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "SetRestartDir", szDir$
'$endif ''DEBUG
        ERROR STFERR
    END IF
END SUB


'*************************************************************************
FUNCTION RestartListEmpty STATIC AS INTEGER
    IF FRestartListEmpty() = 0 THEN
        RestartListEmpty = 0
    ELSE
        RestartListEmpty = 1
    END IF
END FUNCTION


'*************************************************************************
FUNCTION ExitExecRestart STATIC AS INTEGER
    ExitExecRestart = FExitExecRestart
END FUNCTION


'*************************************************************************
SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC

'$ifdef DEBUG
    if (FValidFATPath(szSrc$) = 0) AND (szSrc$ <> "") then
        n% = 1
    elseif FValidFATPath(szDst$) = 0 then
        n% = 2
    elseif FValidFATDir(szDir$) = 0 then
        n% = 3
    else
        n% = 0
    end if
    if n% > 0 then
        BadArgErr n%, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
    end if
'$endif ''DEBUG

    IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN
'$ifdef DEBUG
        StfApiErr saeFail, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
'$endif ''DEBUG
        ERROR STFERR
    END IF
END SUB



'**************************************************************************
'***************************  Error Handlers  *****************************
'**************************************************************************


'$ifdef DEBUG
'**************************************************************************
SUB StfApiErr (nMsg%, szApi$, szArgs$) STATIC      ''DEBUG only
    select case nMsg%
        case saeFail
            lpText$ = "Failed"
        case saeInit
            lpText$ = "Already Initialized"
        case saeNYI
            lpText$ = "NYI"
        case else
            lpText$ = "Bad Arg "+LTRIM$(STR$(nMsg% - saeArg))
    end select

    lpText$ = lpText$ + ": "+ szApi$
    if szArgs$ <> "" then
        lpText$ = lpText + " (" + szArgs$ + ")"
    end if
    lpCaption$ = "MS-Setup Toolkit API Error"
    res% = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
    print lpText$
    lpText$ = ""
    lpCaption$ = ""
END SUB

'**************************************************************************
SUB BadArgErr (nArg%, szApi$, szArgs$) STATIC      ''DEBUG only
    StfApiErr nArg%+saeArg, szApi$, szArgs$
    ERROR STFERR
END SUB


'** REVIEW: Move this function into common lib (we'll need it there too)
'**************************************************************************
FUNCTION FValidInfSect (szSect$) STATIC AS INTEGER
    if (szSect$ = "") OR (INSTR(1,szSect$,"]") <> 0) then
        FValidInfSect = 0
    else
        FValidInfSect = 1
    end if
END FUNCTION


'** REVIEW: Move this function into common lib (we'll need it there too)
'**************************************************************************
FUNCTION FValidIniFile (szFile$) STATIC AS INTEGER
    if (FValidFATPath(szFile$) = 0) AND (UCASE$(szFile$) <> "WIN.INI") then
        FValidIniFile = 0
    else
        FValidIniFile = 1
    end if
END FUNCTION

'**************************************************************************
FUNCTION FValidDrive (szDrive$) STATIC AS INTEGER

    if szDrive$ = "" then
        FValidDrive = 0
    elseif INSTR(1,szDrive$,"\\") = 1 then   ' UNC path
        FValidDrive = 1
    elseif ASC(UCASE$(szDrive$)) - ASC("A") < 0 then
        FValidDrive = 0
    elseif ASC(UCASE$(szDrive$)) - ASC("A") > 25 then
        FValidDrive = 0
    elseif LEN(szDrive$) = 1 then
        FValidDrive = 1
    elseif INSTR(2,szDrive$,":\") = 2 then
        FValidDrive = 1
    elseif INSTR(1,szDrive$,":") = 2 then
        FValidDrive = 1
    else
        FValidDrive = 0
    end if
END FUNCTION

'$endif ''DEBUG


TRAP CleanupTrap From "MSSHLSTF.DLL"

End Trap

hSetup = InitSetup(COMMAND$)

ON ERROR GOTO QUIT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -