嬈^]? N a m e d P i p e d:\xpsp\base\fs\npfs\create.c d:\xpsp\base\fs\npfs\create.c d:\xpsp\base\fs\npfs\create.c d:\xpsp\base\fs\npfs\create.c 烫烫烫?U嬱冹僥?僥鸖媇V媢W3?E鼚}臬媨$岶P佺 塃X
下面是一个BIOS读取的测试程序:
APP:
.386 .model flat, stdcall option casemap:none
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; I N C L U D E F I L E S ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
include windows.inc
include kernel32.inc include user32.inc include advapi32.inc
IOCTL_GET_INFO equ CTL_CODE(FILE_DEVICE_UNKNOWN, 800h, METHOD_BUFFERED, FILE_READ_ACCESS + FILE_WRITE_ACCESS) ; Macro definition for defining IOCTL and FSCTL function control codes. Note ; that function codes 0-2047 are reserved for Microsoft Corporation, and ; 2048-4095 are reserved for customers. CTL_CODE MACRO DeviceType:=<0>, Function:=<0>, Method:=<0>, Access:=<0> EXITM %(((DeviceType) SHL 16) OR ((Access) SHL 14) OR ((Function) SHL 2) OR (Method)) ENDM
.const .data sysname db "ReadBios.sys",0 ;驱动程序名 device db "ReadBios",0 driver db "ReadBios Driver",0 abyInBuffer db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,111,128,128,180,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;传输试验数据用 abyOutBuffer db 128*512 dup(0) ;用于存放驱动传回的64kbios数据 name_buffer db 'ReadBios.bin',0 ;读取的bios数据保存到bios_tst.bin ok_1 db "读取成功,请查看ReadBios.bin",0 dwBytesReturned dd 0 .data? hFile HANDLE ? ;文件句柄 SizeReadWrite DWORD ? ;文件中实际写入的字节数 .code
invoke CloseHandle, hDevice ; Driver will received IRP of type IRP_MJ_CLOSE .else invoke MessageBox, NULL, $CTA0("Device is not present."), NULL, MB_ICONSTOP .endif
invoke ControlService, hService, SERVICE_CONTROL_STOP, addr _ss ; DriverUnload proc in our driver will be called .else invoke MessageBox, NULL, $CTA0("Can't start driver."), NULL, MB_OK + MB_ICONSTOP .endif