Update: UltraVNC 1.4.3.6 and UltraVNC SC 1.4.3.6: https://forum.uvnc.com/viewtopic.php?t=37885
Important: Please update to latest version before to create a reply, a topic or an issue: https://forum.uvnc.com/viewtopic.php?t=37864

Join us on social networks and share our announcements:
- Website: https://uvnc.com/
- GitHub: https://github.com/ultravnc
- Mastodon: https://mastodon.social/@ultravnc
- Facebook: https://www.facebook.com/ultravnc1
- X/Twitter: https://x.com/ultravnc1
- Reddit community: https://www.reddit.com/r/ultravnc
- OpenHub: https://openhub.net/p/ultravnc

Mirage driver released under GPL!

This forum is for VNC related products | This means not only UltraVNC | It even is allowed to announce or describe commercial (and of course non-commercial) programs here (but not anywhere else in the forum)
Post Reply
levk
Posts: 1
Joined: 2006-12-19 02:49

Mirage driver released under GPL!

Post by levk »

To whom it may concern.

Good news ladies and gentlemen!
Mirage driver, a well-known high-performance yet reliable Windows desktop
capture engine (previously known as Df Mirage driver) used with
TightVNC and many other products is now available in Open Source,
under GPL license.
It's the only working mirror driver available in source to date!
Feel free to use it in any noncommercial (Open Source) product.
Enjoy full access to its source code!

Welcome to the SourceForge project page: http://mirage-driver.sourceforge.net.

Project mirrors will appear soon on Novell forge and other
Open Source hostings as well.

Anyone interested in commercial licensing should contact
project administrator and copyright holder Lev Kazarkin:
levk@users.sourceforge.net
lev.kazarkin@gmail.com
levk@mail.tomsknet.ru

--
Sincerelly,
Lev Kazarkin
knowlengr
Posts: 1
Joined: 2007-02-17 16:25

Re: Mirage driver released under GPL!

Post by knowlengr »

Lev,

The SF.NET directory seems to be empty.

Cheers,
M
User avatar
Oliver
Site-Admin
Site-Admin
Posts: 532
Joined: 2004-04-21 23:04
Location: Frankfurt am Main
Contact:

Re: Mirage driver released under GPL!

Post by Oliver »

The project is empty, no downloads, no website, no files in CVS. A joke? Vaporware?
Oliver

How to Report Bugs Effectively
My homepage | WinDirStat
PGP-keys:
  • Forum or UltraVNC-related: 0xA2DD1DBD, E18B 2E2F 4F3E D143 4ED4 3E2B E172 FB55 A2DD 1DBD
  • Other matters: 0x0E88590F, 38B5 5EBA A470 C0F7 0942 81B8 C779 D829 0E88 590F
Guspaz
Posts: 7
Joined: 2007-01-22 14:37

Re: Mirage driver released under GPL!

Post by Guspaz »

Feel free to use it in any noncommercial (Open Source) product.
That restriction is a violation of the GPL; the GPL protects the right to release a GPL'd project commercially, so long as they adhere to the GPL and release the required code.

One good example is the Quake 3 engine, which was GPL'd. A commercial game may use the GPL'd engine without a traditional engine license, and charge as much as they want for their game; they simply need to release the full sourcecode (but not the media, which is what the game is really all about).

Remember, opensource != non-commercial.
User avatar
Oliver
Site-Admin
Site-Admin
Posts: 532
Joined: 2004-04-21 23:04
Location: Frankfurt am Main
Contact:

Re: Mirage driver released under GPL!

Post by Oliver »

Guspaz wrote:That restriction is a violation of the GPL; the GPL protects the right to release a GPL'd project commercially, so long as they adhere to the GPL and release the required code.
The GPL does not require anyone to release the source code, instead it requires that if you make the binaries available, the corresponding source must be made available. This is by far not the same as having to release the source.

But this doesn't matter anyway. Currently it looks like classical VaporWare :-D
Oliver

How to Report Bugs Effectively
My homepage | WinDirStat
PGP-keys:
  • Forum or UltraVNC-related: 0xA2DD1DBD, E18B 2E2F 4F3E D143 4ED4 3E2B E172 FB55 A2DD 1DBD
  • Other matters: 0x0E88590F, 38B5 5EBA A470 C0F7 0942 81B8 C779 D829 0E88 590F
redge
1000
1000
Posts: 6797
Joined: 2004-07-03 17:05
Location: Switzerland - Geneva

Re: Mirage driver released under GPL!

Post by redge »

UltraVNC 1.0.9.6.1 (built 20110518)
OS Win: xp home + vista business + 7 home
only experienced user, not developer
redge
1000
1000
Posts: 6797
Joined: 2004-07-03 17:05
Location: Switzerland - Geneva

Re: Mirage driver released under GPL!

Post by redge »

the mirage driver is also available for EchoVNC => 2.10
UltraVNC 1.0.9.6.1 (built 20110518)
OS Win: xp home + vista business + 7 home
only experienced user, not developer
User avatar
Oliver
Site-Admin
Site-Admin
Posts: 532
Joined: 2004-04-21 23:04
Location: Frankfurt am Main
Contact:

Re: Mirage driver released under GPL!

Post by Oliver »

More than one year, nothing in the CVS or on the website.

VaporWare (tm)?
Oliver

How to Report Bugs Effectively
My homepage | WinDirStat
PGP-keys:
  • Forum or UltraVNC-related: 0xA2DD1DBD, E18B 2E2F 4F3E D143 4ED4 3E2B E172 FB55 A2DD 1DBD
  • Other matters: 0x0E88590F, 38B5 5EBA A470 C0F7 0942 81B8 C779 D829 0E88 590F
ummarbhutta
Posts: 2
Joined: 2009-02-25 14:48

Error Loading Mirror Video Driver (Mirage Driver)

Post by ummarbhutta »

Hi!
I am developing an application whcih will make a copy of Server Desktop to the client System as it is, Like VNC and other Remote Desktop applications.. I need to capture images as efficiently as possible. for this I am trying to use "Mirage Driver", but I am unable to run "ExtEscape()" function successfully.. here is my code snippet.

Code: Select all

#define MAP 1030   
  
  
typedef struct _CHANGES_RECORD   
{   
    ULONG type;  //screen_to_screen, blit, newcache,oldcache   
    RECT rect;   
    RECT origrect;   
    POINT point;   
    ULONG color; //number used in cache array   
    ULONG refcolor; //slot used to pase btimap data   
}CHANGES_RECORD;   
typedef CHANGES_RECORD *PCHANGES_RECORD;   
typedef struct _CHANGES_BUF   
    {   
     ULONG counter;   
     CHANGES_RECORD pointrect[MAXCHANGES_BUF];   
    }CHANGES_BUF;   
typedef CHANGES_BUF *PCHANGES_BUF;   
  
typedef struct _GETCHANGESBUF   
    {   
     PCHANGES_BUF buffer;   
     PVOID Userbuffer;   
    }GETCHANGESBUF;   
  
  
  
HDC l_gdc = ::CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);   
    if (!l_gdc)   
    {   
        printf("can't create DC on \"%s\"\n",   
            m_devname);   
        return FALSE;   
    }   
  
    oldCounter = 0;   
    int drvCr = ExtEscape(   
        l_gdc,   
        MAP,   
        0, NULL,   
        sizeof(GETCHANGESBUF), (LPSTR) &bufdata);   
    DeleteDC(l_gdc);   
  
    if (drvCr <= 0)   
    {   
        printf(MAP call returned 0x%x\n",   
            drvCr); /*Error*/   
        return FALSE;   
    }  
I have successfully called CreateDC Successfully.. but the ExtEscape() function is always returning 0 for MAP Escape (1030), I have tried the C# version of the above code and same problem there.. Mirage Driver is installed properly and is being displayed in Device Manager.. I am using Windows XP and VS 2005. Please help me out. if any one have some code snippet for me I will really appreciate it.
Thanks
ummarbhutta
Posts: 2
Joined: 2009-02-25 14:48

Re: Error Loading Mirror Video Driver (Mirage Driver)

Post by ummarbhutta »

Hi!
now I have successfully created the driver handle and have loaded it.. But I am facing another problem... I will really appreciate any help from any one.. here is the scenario..

After loading the driver when it has successfully initialized, and I have valid values in "GETCHANGESBUF", then for the first test I want to copy whole of screen image in to a bmp file.. as "GETCHANGESBUF.UserBuffer" contains the pointer to first byte of screen, from that pointer I want to get whole of the screen image.. here is the fucntion I have written for it.

void CopyToBuffer(BYTE *destbuff, const BYTE *srcbuffpos)

{

RECT m_bmrect;

m_bmrect.left = 0;

m_bmrect.top = 0;

m_bmrect.right = GetSystemMetrics(SM_CXSCREEN);

m_bmrect.bottom = GetSystemMetrics(SM_CYSCREEN);




RECT rect;

rect.left = 0;

rect.top = 0;

rect.right = GetSystemMetrics(SM_CXSCREEN);

rect.bottom = GetSystemMetrics(SM_CYSCREEN);



const int crect_re_vd_left = rect.left - m_bmrect.left;

const int crect_re_vd_top = rect.top - m_bmrect.top;



_ASSERTE(crect_re_vd_left >= 0);

_ASSERTE(crect_re_vd_top >= 0);



const int bytesPerPixel = 32 / 8;

const int m_bytesPerRow = GetSystemMetrics(SM_CXSCREEN) * bytesPerPixel;



const int bmoffset = (m_bytesPerRow * crect_re_vd_top) + (bytesPerPixel * crect_re_vd_left);



BYTE *destbuffpos = destbuff + bmoffset;

srcbuffpos += bmoffset;



const int widthBytes = (rect.right - rect.left) * bytesPerPixel;

std::ofstream myfile;

myfile.open("C:\\image.bmp",std::ios::binary | std::ios::out);

for (int y = rect.top; y < rect.bottom; y++)

{

memcpy(destbuffpos, srcbuffpos, widthBytes);

for(int i=0;i<widthBytes;i++)

myfile << destbuffpos;

srcbuffpos += m_bytesPerRow;

destbuffpos += m_bytesPerRow;

}

myfile.close();

}



here is the call to the function CopyToBuffer()



GETCHANGESBUF buf = {0};

void Connect()

{

int res = ExtEscape(hdc, dmf_esc_usm_pipe_map, 0, NULL, sizeof(buf), (LPSTR)&buf);

if (res <= 0)

{

/*Error in mapping*/

}

}









int _tmain(int argc, _TCHAR* argv[])

{

OpenDriver(_T("Mirage Driver"),_T("dfmirage"));

Load();

Connect();

/*Get the update screen*/

BYTE *screenBuffer = new BYTE[ GetSystemMetrics(SM_CXSCREEN) * GetSystemMetrics(SM_CYSCREEN) * 4];

CopyToBuffer(screenBuffer,(BYTE *)buf.Userbuffer);

}



The File I am writing to doesn't become a valid bmp file... please suggesst some solution, Please if you have any code for getting bytes from the initial pointer do send it to me...
Post Reply