How to exchange data between static VxD and application!

hi!Everyone,
Who can tell me How to exchange data between static VxD and application?
Thanks a lot!

Anbo -Mega Inc.

Hello

hi!Everyone,
Who can tell me How to exchange data between static VxD and application?

You need only a normal Win32 DeviceIoControl Handler in your VXD. When
you are using NUMEGA VToolsD this is very simple.

When your a using the DDK way you need this …

a entry in your VXD dispatch table like this

Control_Dispatch W32_DEVICEIOCONTROL, hwioW32DeviceIOControl, sCall,


And your handler in C code like this

DWORD _stdcall hwioW32DeviceIOControl(
DWORD dwService,
DWORD dwDDB,
DWORD hDevice,
PDIOCPARAMETERS ioParam
);

mathias

Do i use creatfile to get a HANDLE?
Can you provide me a source code of ASM sample?

Thanks!

anbo

----- Original Message -----
From: Mathias Ellinger
To: NT Developers Interest List
Sent: Friday, October 20, 2000 6:09 PM
Subject: [ntdev] Re: How to exchange data between static VxD and application!

> Hello
>
> >hi!Everyone,
> > Who can tell me How to exchange data between static VxD and application?
>
> You need only a normal Win32 DeviceIoControl Handler in your VXD. When
> you are using NUMEGA VToolsD this is very simple.
>
> When your a using the DDK way you need this …
>
> a entry in your VXD dispatch table like this
> …
> Control_Dispatch W32_DEVICEIOCONTROL, hwioW32DeviceIOControl, sCall,
> …
>
> And your handler in C code like this
>
> DWORD _stdcall hwioW32DeviceIOControl(
> DWORD dwService,
> DWORD dwDDB,
> DWORD hDevice,
> PDIOCPARAMETERS ioParam
> );
>
> mathias
>
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@edu.21cn.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>

hello,

Can you provide me a source code of ASM sample?

IOTEST_DEVICE_ID EQU 0999H
DDK_VERSION EQU 400h
Create_IOTEST_Service_Table EQU 1

.386p
.xlist
include vmm.inc
.list

BEGIN_SERVICE_TABLE IOTEST
IOTEST_Service ioTestGetVersion, local
END_SERVICE_TABLE IOTEST

;============================================================================
; V I R T U A L D E V I C E D E C L A R A T I O N
;============================================================================

DECLARE_VIRTUAL_DEVICE IOTEST, 1, 0, IOTEST_Control, IOTEST_DEVICE_ID, UNDEFINED_INIT_ORDER,0,0,0

VxD_LOCKED_CODE_SEG

;===========================================================================
;
; PROCEDURE: ioControl
;
; DESCRIPTION:
; Device control procedure for the ioTest VxD
;
; ENTRY:
; EAX = Control call ID
;
; EXIT:
; If carry clear then
; Successful
; else
; Control call failed
;
; USES:
; EAX, EBX, ECX, EDX, ESI, EDI, Flags
;
;============================================================================

BEGINPROC IOTEST_Control

OK, here you need the static handler

Control_Dispatch SYS_DYNAMIC_DEVICE_INIT, ioTestDynamicInit, sCall
Control_Dispatch SYS_DYNAMIC_DEVICE_EXIT, ioTestDynamicExit, sCall

Control_Dispatch INIT_COMPLETE, ioTestInitComplete, sCall
Control_Dispatch W32_DEVICEIOCONTROL, ioTestW32DeviceIOControl, sCall,

clc
ret
ENDPROC IOTEST_Control

BEGINPROC ioTestGetVersion
mov eax,100
clc
ret
ENDPROC ioTestGetVersion

VxD_LOCKED_CODE_ENDS
END

mathias