找回密码
注册 登录
查看: 384|回复: 1

[PECMD开发] DismApi挂载卸载WIM,及进度回调获取

[复制链接]
  • TA的每日心情

    2017-11-24 01:58
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2022-10-4 21:36:09 | 显示全部楼层 |阅读模式
    1. ENVI^ ENVIMODE=1
    2. ENVI &&DISMAPI_E_DISMAPI_ALREADY_INITIALIZED=1
    3. ENVI &&DismLogErrorsWarningsInfo=2
    4. ENVI &&DismImageIndex=0
    5. ENVI &&DISM_MOUNT_READWRITE=0x00000000
    6. ENVI &&DISM_DISCARD_IMAGE=0x00000001
    7. ENVI &&DismWorkTime=

    8. ENVI^ WndProc1,&&WndProc1Addr   // WndProc1为PECMD2012专用语法格式,绑定到当前 PE执行栈,以寻找 OnWndProc1 函数       //相当于MountProgressCallback
    9. CALL wmain
    10. ENVI^ WndProc1=0  // WndProc1 解绑
    11. _SUB wmain
    12.     CALL $--qd --ret:&&DismInitializeRet dismapi.dll,DismInitialize,#%&DismLogErrorsWarningsInfo%,$C:\MyLogFile.txt,#0
    13.     CALL $--qd --ret:&&DismInitializeRet dismapi.dll,DismInitialize,#%&DismLogErrorsWarningsInfo%,$C:\MyLogFile.txt,#0
    14.     IFEX #[ %&&DismInitializeRet%<>0 & %&&DismInitializeRet%<>%&DISMAPI_E_DISMAPI_ALREADY_INITIALIZED% ],
    15.     {*
    16.         MESS. DismInitialize Failed !!!@%&&DismInitializeRet%
    17.         CALL Cleanup
    18.     }
    19.     IFEX C:\MountPath\,! MDIR C:\MountPath
    20.     ENVI &DismWorkTime=DismMountImage
    21.     CALL $--qd --16 --ret:&&DismMountImageRet dismapi.dll,DismMountImage,$C:\a.wim,$C:\MountPath,#1,#0,#%&DismImageIndex%,#%&DISM_MOUNT_READWRITE%,#0,#%&WndProc1Addr%,#0
    22.     IFEX #%&&DismMountImageRet%<>0,
    23.     {*
    24.         MESS. DismMountImage Failed !!!@%&&DismMountImageRet%
    25.     }
    26.     ENVI &DismWorkTime=DismUnmountImage
    27.     CALL $--qd --16 --ret:&&DismUnmountImageRet dismapi.dll,DismUnmountImage,$C:\MountPath,#%&DISM_DISCARD_IMAGE%,#0,#%&WndProc1Addr%,#0
    28.     IFEX #%&&DismUnmountImageRet%<>0,
    29.     {*
    30.         MESS. DismUnmountImage Failed !!!@%&&DismUnmountImageRet%
    31.     }
    32. _END

    33. _SUB Cleanup
    34. _END

    35. _SUB OnWndProc1
    36.     //%~1   uiCurrent   当前进度值
    37.     //%~2   uiTotal     总进度值
    38.     //%~3   pUserData
    39.     IFEX #%~1=%~2,
    40.     {*
    41.         MESS. %&DismWorkTime% Complete@
    42.     }
    43. _END

    复制代码

    简单的挂载,卸载,及进度获取。(进度的难点已翻译好)参考:
    https://learn.microsoft.com/zh-c ... ple?view=windows-11




    上一篇:下载不下来 提示未知错误
    下一篇:USM_v5.0.2022.0622F 制作U盘后,不显示U盘了
  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 2084 天

    [LV.Master]伴坛终老

    发表于 2022-10-5 00:29:21 | 显示全部楼层
    管理员辛苦啦!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则