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
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
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!
Re: Mirage driver released under GPL!
Lev,
The SF.NET directory seems to be empty.
Cheers,
M
The SF.NET directory seems to be empty.
Cheers,
M
Re: Mirage driver released under GPL!
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:
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
Re: Mirage driver released under GPL!
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.Feel free to use it in any noncommercial (Open Source) product.
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.
Re: Mirage driver released under GPL!
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.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.
But this doesn't matter anyway. Currently it looks like classical VaporWare
Oliver
How to Report Bugs Effectively
My homepage | WinDirStat
PGP-keys:
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
Re: Mirage driver released under GPL!
the address was changed.
http://www.demoforge.com/dfmirage.htm
http://www.demoforge.com/tightvnc/dfmir ... 1.68.2.exe
http://www.demoforge.com/dfmirage.htm
http://www.demoforge.com/tightvnc/dfmir ... 1.68.2.exe
UltraVNC 1.0.9.6.1 (built 20110518)
OS Win: xp home + vista business + 7 home
only experienced user, not developer
OS Win: xp home + vista business + 7 home
only experienced user, not developer
Re: Mirage driver released under GPL!
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
OS Win: xp home + vista business + 7 home
only experienced user, not developer
Re: Mirage driver released under GPL!
More than one year, nothing in the CVS or on the website.
VaporWare (tm)?
VaporWare (tm)?
Oliver
How to Report Bugs Effectively
My homepage | WinDirStat
PGP-keys:
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
-
- Posts: 2
- Joined: 2009-02-25 14:48
Error Loading Mirror Video Driver (Mirage Driver)
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.
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
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;
}
Thanks
-
- Posts: 2
- Joined: 2009-02-25 14:48
Re: Error Loading Mirror Video Driver (Mirage Driver)
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...
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...