WINVNCDRV (video hook driver for windows 2000) The problem with the old driver was the terrible overhead of drvescape and extescape. Drvescape stops the video driver while passing data to winvnc.
The new driver use shared kernel/user memory. (a lot faster) All rectangles and source points are cached in regions(driver site). (region code from rdp2vnc) Shared memory is used to pass changed rectancles and points from the cached regions to winvnc. Simple syncronizing for writing and reading implemented. There is still work to do (optimalisation-vncClient.cpp) on the winvnc site, so I included the winvncsrc. Bugs,comments,questions... I will try to answer.. CHECK AFTER INSTALLING THAT BOTH DLL's: VNCDRV.DLL and VNCHELP.DLL are in system32 else blue screen if you start vncclient.(vnchelp.dll creates the chared memory and pointers) NO RISK, driver is always inactive after reboot. UPDATE from older version, copy vncdrv.dll AND vnchelp.dll in system32 Groeten Rudi For those who asked for a kind of testcode without vnc. This is the sample code I used to test the driver ---------------------------------------------------------------------------------------------------------- #include <Wingdi.h> #define MAXCOPYRECT 250 #define MAPMEM 1030 #define UNMAPMEM 1031 typedef struct _SHORTCOPYRECT { long type; RECTL rect; POINTL point; }SHORTCOPYRECT; typedef SHORTCOPYRECT *PSHORTCOPYRECT; typedef struct _BUFDATA { ULONG aantal; ULONG readwrite; SHORTCOPYRECT pointrect[MAXCOPYRECT]; }BUFDATA; typedef BUFDATA *PBUFDATA; typedef struct _GETDATABUFFER { PBUFDATA buffer; }GETBUFDATA; typedef GETBUFDATA *PGETBUFDATA; int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pszCommandLine, int nCommandShow) { GETBUFDATA bufdata; HDC gdc; gdc = GetDC(NULL); ExtEscape(gdc, MAPMEM, 0, NULL, sizeof(GETBUFDATA), (LPSTR) &bufdata); /// syncronization //readwrite 1=reading or writing,block start reading or writing //readwrite 0=done reading,ready to write //readwrite 2=done writing,ready to read //shared memory // bufdata.buffer->pointrect[ 1 to bufdata.buffer->aantal] contains the rectangles and points bufdata.buffer->readwrite=0; for (int i=0; i<200;i++) { if (bufdata.buffer->readwrite==2) { bufdata.buffer->readwrite=1; Sleep(10); //emulate reading data bufdata.buffer->readwrite=0; } } ExtEscape(gdc, UNMAPMEM, 0, NULL, sizeof(GETBUFDATA), (LPSTR) &bufdata); ReleaseDC(NULL, gdc); return 0; } -------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, mail [EMAIL PROTECTED] with the line: 'unsubscribe vnc-list' in the message BODY See also: http://www.uk.research.att.com/vnc/intouch.html ---------------------------------------------------------------------