MASM32 寫關機 (ShutDown) & 重開機 (Reboot) |
|
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
關機 (Shut Down)
;=====================================================
.386
.model flat, stdcall
option casemap :none ; case sensitive
;=====================================================
include \masm32\include\windows.inc
include \masm32\include\user32.inc includelib \masm32\lib\user32.lib
;=====================================================
.code
start:
invoke ExitWindowsEx, EWX_SHUTDOWN, 0
; EWX_LOGOFF equ 0
; EWX_SHUTDOWN equ 1
; EWX_REBOOT equ 2
; EWX_FORCE equ 4
; EWX_POWEROFF equ 8
ret
;=====================================================
end start
;===================================================== ------------------------------------------------------------- 重開機 (Reboot)
;=====================================================
.386
.model flat, stdcall
option casemap :none ; case sensitive
;=====================================================
include \masm32\include\windows.inc
include \masm32\include\user32.inc includelib \masm32\lib\user32.lib
;=====================================================
.code
start:
invoke ExitWindowsEx, EWX_REBOOT, 0
; EWX_LOGOFF equ 0
; EWX_SHUTDOWN equ 1
; EWX_REBOOT equ 2
; EWX_FORCE equ 4
; EWX_POWEROFF equ 8
ret
;=====================================================
end start
;===================================================== 以上範例只試用於 95/98/Me, 並不適用 "權限分級" 很重的 NT/2000/XP ----------------
局局棋盤步步新,
變化無常平常待。
人生相處平常心,
無憂無慮心事成。
----------------
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
建立一個起動程式: C:\>debug
-a
0ABC:0100 int 19
0ABC:0102
-r cx
CX 0000
:2
-n reboot.com
-w
Writting 00002 bytes
-q Note: 請在DOS下使用 ************************************* 建立一個起動程式: C:\>debug
-a
0ABC:0100 mov al,fe
0ABC:0102 out 64,al
0ABC:0104
-r cx
CX 0000
:4
-n reset.com
-w
Writting 00004 bytes
-q Note:請在DOS下使用
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
^^ 這裡有個但書...........工作經驗加上要跟上潮流 對Keyboard 下0FEh Command有個時候會無效, 怎麼說呢?
如果你們家的BIOS support Legacy USB的話, 就會這樣. (也就是開到DOS下, 還可以使用USB Keyboard/Floppy/Mouse) 因為, USB的服務常式(存放於SMI) 會把Keyboard的command攔走, 因為要support USB Keyboard的關係 所以, 如果你家的PC, 對port 64h下0FEh不能重開機的話, 把BIOS選項的
Legacy USB support:作disable就可以囉 要讓系統作Warm boot的基本三個動作有
1. jmp f000:fff0 (模擬重開機時, CPU去讀EEPROM的第一個位址)
2. 對port cf9h丟data 6(PCI reset, 使CPU作reset)
3. 對port 64h丟data 0FEh(叫Keyboard conotrol去reset CPU) 不過現在不建議使用第三個方式來reset系統, 因為如果支援USB legacy的話
會失效, 有時會覺的怎麼會這樣, 會以為自己觀念or程式寫錯了, 其實是被攔
走了 給各位有一個基本的觀念
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |