注册 登录
编程论坛 汇编论坛

使用API格式化磁盘!请小心使用

非虫 发布于 2009-08-05 16:18, 1527 次点击
我2001版的MSDN中没有这个API,
SHFormatDrive    PROTO    hwnd:HWND,drive:UINT,fmtID:UINT,options:UINT
;1、Hwnd:窗口所有者的句柄   
;2、Drive:所有格式化的对象:0指a驱;1指b驱;2指c盘...   
;3、Size:暂时无用     
;4、options:   
SHFMT_OPT_QUICKFORMAT  equ 0   ;快速格式化
SHFMT_OPT_FULL         equ 1   ;全面格式化
SHFMT_OPT_SYSONLY      equ 2   ;格式化时传送系统 sys a(b,c)

源码如下:

;程序只能在Windows XP SP2以上系统使用!!
.386
.model flat, stdcall  ;32 bit memory model
option casemap :none  ;case sensitive

include FormatUseAPI.inc
include    macros.asm
include    rsrc.inc


DlgProc            PROTO    :HWND,:UINT,:WPARAM,:LPARAM
SHFormatDrive    PROTO    hwnd:HWND,drive:UINT,fmtID:UINT,options:UINT
;1、Hwnd:窗口所有者的句柄   
;2、Drive:所有格式化的对象:0指a驱;1指b驱;2指c盘...   
;3、Size:暂时无用     
;4、options:   
SHFMT_OPT_QUICKFORMAT  equ 0   ;快速格式化
SHFMT_OPT_FULL         equ 1   ;全面格式化
SHFMT_OPT_SYSONLY      equ 2   ;格式化时传送系统 sys a(b,c)
        
.data


.data?
hInstance            dd ?


.code

;*******************    对话框回调函数   ***********************************************************
DlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM

    mov        eax,uMsg
    .if eax==WM_INITDIALOG
        
    .elseif eax==WM_COMMAND
        mov    eax,wParam
        movzx    eax,ax
        .if        eax == IDC_BTN1  ;小心使用!!
            invoke    SHFormatDrive,hWnd,2,0,SHFMT_OPT_QUICKFORMAT    ;快速格式化C盘
        .endif
        
    .elseif eax==WM_CLOSE
        invoke EndDialog,hWnd,0
        
    .else
        mov        eax,FALSE
        ret
    .endif
    mov        eax,TRUE
    ret

DlgProc endp

;*******************   程序从这里开始执行  ***********************************************************
start:

    invoke     GetModuleHandle,NULL
    mov        hInstance,eax

    invoke     InitCommonControls
    invoke     DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL
    invoke     ExitProcess,0


end start


请大家小心使用!!否则因格式化磁盘造成的损失我不负任何责任!!

楼主转帖也麻烦!!我自己发了!
3 回复
#2
zklhp2009-08-05 21:58
老大有好东西多多分享啊

又学到东西了~
#3
你们都要疼我哦2009-08-06 01:44
2005版的有
DWORD SHFormatDrive(HWND hwnd,
                    UINT drive,
                    UINT fmtID,
                    UINT options
 );
#4
春色三分2009-08-06 09:27
我越来越喜欢win32了。
1