> > Но, кроме числа слэшей вот тут: > > число слешей зависит от языка на котором кодишь > на асме - 2 (и на самом деле) > на си - 4 > > а по-поводу vxd call - по-моему так дохрена на эту тему > написано...
Вот код примера. С его помощью я пытаюсь позвать vmm32.vxd, загрузив его CreateFile. Пробовал также и другие vxd, например, hasp95.vxd от 1C(для защиты):
.data
VxDName db "\\.\VMM32.VXD",0
Success db "The VxD is successfully loaded!",0
Failure db "The VxD is not loaded!",0
Unload db "The VxD is now unloaded!",0
MsgTitle db "DeviceIoControl Example",0
MsgText db "I'm called from a VxD!",0
InBuffer dd offset MsgTitle
dd offset MsgText
;...
.code
start:
invoke CreateFile,addr VxDName,0,0,0,0,FILE_FLAG_DELETE_ON_CLOSE,0
.if eax!=INVALID_HANDLE_VALUE
mov hVxD,eax
invoke MessageBox,NULL,addr Success,addr AppName,MB_OK+MB_ICONINFORMATION
invoke DeviceIoControl,hVxD,1,addr InBuffer,8,NULL,NULL,NULL,NULL
invoke CloseHandle,hVxD
invoke MessageBox,NULL,addr Unload,addr AppName,MB_OK+MB_ICONINFORMATION
.else
invoke MessageBox,NULL,addr Failure,NULL,MB_OK+MB_ICONERROR
.endif
;...
И мне всегда выдается, что vxd "The VxD is not loaded!"...
Про то, что надо задавать полное имя до файла(C:\WIN..), я проходил ...
Либо мне попадались статические VxD, которые нельзя грузить из win32-приложений, либо вообще нихрена не понимаю Ж(((
|