createfile()问题?

vcshcn 2002-04-07 11:56:32
我写了一个vxd,用createfile加载,返回-1
可是我用vtoolsd的vxd view确实加载进了内存,这是为什么?
...全文
49 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcshcn 2002-04-10
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var hVxd:THandle;
begin
hVxd:=CreateFile(pchar('\\.\mem.vxd'),0,0,nil,0,FILE_FLAG_DELETE_ON_CLOSE,0);
if hVxd=INVALID_HANDLE_VALUE then
begin
ShowMessage(SysErrorMessage(GetLastError()));
end
else
begin
ShowMessage('ok');
CloseHandle(hVxd);
end;
end;
Hume 2002-04-09
  • 打赏
  • 举报
回复
看看代码才知道了...
vcshcn 2002-04-09
  • 打赏
  • 举报
回复
用createfile返回-1
用vtoolsd的vxdload就可以成功加载,不明白
Hume 2002-04-08
  • 打赏
  • 举报
回复
注意VxD的反悔值...
wowocock 2002-04-08
  • 打赏
  • 举报
回复
你的原代码呢??用C++还是汇编写的,程序有没有错呢?路径对吗?
TESTVXD。ASM
.386p
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib

.data
hFile dd ?
FileName db '\\.\FirstVxd.vxd',0
Caption db 'Test Dynamic Vxd',0
ErrTest db 'Test error!',0
OKTest db 'Load Dynamiv Vxd OK!',0


.code
start:
invoke CreateFileA,addr FileName,0,0,NULL,0,FILE_FLAG_DELETE_ON_CLOSE,NULL
mov hFile,eax
cmp eax,INVALID_HANDLE_VALUE
jnz LoadOK
invoke MessageBoxA,0,offset ErrTest,offset Caption,MB_OK
jmp Exit
LoadOK:
invoke MessageBoxA,0,offset OKTest,offset Caption,MB_OK
invoke CloseHandle,hFile
Exit:
invoke ExitProcess,0
end start

FIRSTVXD。ASM
.386p
include \masm32\win98ddk\vmm.inc
include \masm32\win98ddk\shell.inc
include \masm32\win98ddk\debug.inc

; #########################################################################
DECLARE_VIRTUAL_DEVICE \
FIRSTVXD,\
1 ,0, \
FIRSTVXD_Control,\
UNDEFINED_DEVICE_ID, \
UNDEFINED_INIT_ORDER


; #########################################################################

Begin_control_dispatch FIRSTVXD
Control_Dispatch Create_VM, OnVMCreate
Control_Dispatch VM_Terminate, OnVMClose
Control_Dispatch Sys_Dynamic_Device_Init , OnDynInit
Control_Dispatch Sys_Dynamic_Device_Exit ,OnDynExit
Control_Dispatch W32_DeviceIoControl , OnDeviceIoControl
End_control_dispatch FIRSTVXD

VxD_PAGEABLE_DATA_SEG
MsgTitle db 'VxD MessageBox',0
VMCreated db 'A VM is created',0
VMDestroyed db 'A VM is destroyed',0
VxdCreated db 'A Vxd is being loaded',0
VxdDestroyed db ' Vxd is being destroyed',0
VxD_PAGEABLE_DATA_ENDS

VxD_PAGEABLE_CODE_SEG
BeginProc OnVMCreate
mov ecx, OFFSET32 VMCreated
CommonCodeVM:
VMMCall Get_sys_vm_handle
mov eax,MB_OK+MB_ICONEXCLAMATION
mov edi, OFFSET32 MsgTitle
xor esi,esi
xor edx,edx
VxDCall SHELL_Message
ret
EndProc OnVMCreate

BeginProc OnVMClose
mov ecx,OFFSET32 VMDestroyed
jmp CommonCodeVM
EndProc OnVMClose

BeginProc OnDynInit
mov ecx, OFFSET32 VxdCreated
CommonCodeVxd:
VMMCall Get_sys_vm_handle
mov eax,MB_OK+MB_ICONEXCLAMATION
mov edi, OFFSET32 MsgTitle
xor esi,esi
xor edx,edx
VxDCall SHELL_Message
ret
EndProc OnDynInit

BeginProc OnDynExit
mov ecx,OFFSET32 VxdDestroyed
jmp CommonCodeVxd
EndProc OnDynExit

BeginProc OnDeviceIoControl
xor eax,eax
ret
EndProc OnDeviceIoControl

VxD_PAGEABLE_CODE_ENDS
end


21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧