Example #1
0
BOOL wf_mirror_driver_cleanup(wfInfo* context)
{
	int status;

	status = ExtEscape(context->driverDC, dmf_esc_usm_pipe_unmap, sizeof(GETCHANGESBUF), (LPSTR) context->changeBuffer, 0, 0);
	
	if (status <= 0)
	{
		_tprintf(_T("Failed to unmap shared memory from the driver! code %d\n"), status);
	}

	if (context->driverDC != NULL)
	{
		status = DeleteDC(context->driverDC);

		if (status == 0)
		{
			_tprintf(_T("Failed to release DC!\n"));
		}
	}

	free(context->changeBuffer);

	return TRUE;
}
Example #2
0
BOOL vncVideoDriver::TestMapped()
{
	_ASSERTE(IsWinNT());

	TCHAR *pDevName;
	if (IsWinVerOrHigher(5, 0))
	{
		DISPLAY_DEVICE dd;
		INT devNum = 0;
		if (!LookupVideoDeviceAlt(szDriverString, szDriverStringAlt, devNum, &dd))
			return FALSE;
		pDevName = (TCHAR *)dd.DeviceName;
	}
	else
	{
		pDevName = "DISPLAY";
	}

	HDC	l_ddc = ::CreateDC(pDevName, NULL, NULL, NULL);
	if (l_ddc)
	{
		BOOL b = ExtEscape(l_ddc, TESTMAPPED, 0, NULL, 0, NULL);	
		DeleteDC(l_ddc);
		return b;
	}
	return FALSE;
}
Example #3
0
BOOL wf_mirror_driver_map_memory(wfInfo* context)
{
	int status;
	GETCHANGESBUF* b;

	context->driverDC = CreateDC(context->deviceName, NULL, NULL, NULL);

	if (context->driverDC == NULL)
	{
		_tprintf(_T("Could not create device driver context!\n"));
		return FALSE;
	}

	context->changeBuffer = malloc(sizeof(GETCHANGESBUF));
	ZeroMemory(context->changeBuffer, sizeof(GETCHANGESBUF));

	status = ExtEscape(context->driverDC, dmf_esc_usm_pipe_map, 0, 0, sizeof(GETCHANGESBUF), (LPSTR) context->changeBuffer);

	if (status <= 0)
	{
		_tprintf(_T("Failed to map shared memory from the driver! code %d\n"), status);
	}

	b = (GETCHANGESBUF*) context->changeBuffer;

	return TRUE;
}
Example #4
0
BOOL vncVideoDriver::MapSharedbuffers(BOOL fForDirectScreenAccess)
{
	_ASSERTE(!m_fIsActive);
	_ASSERTE(!m_fDirectAccessInEffect);
	_ASSERTE(IsWinNT());

	HDC	l_gdc= ::CreateDC(m_devname, NULL, NULL, NULL);
	if (!l_gdc)
	{
		vnclog.Print(
			LL_INTERR,
			VNCLOG("vncVideoDriver::MapSharedbuffers: can't create DC on \"%s\"\n"),
			m_devname);
		return FALSE;
	}

	oldCounter = 0;
	int drvCr = ExtEscape(
		l_gdc,
		MAP1,
		0, NULL,
		sizeof(GETCHANGESBUF), (LPSTR) &bufdata);
	DeleteDC(l_gdc);

	if (drvCr <= 0)
	{
		vnclog.Print(
			LL_INTERR,
			VNCLOG("vncVideoDriver::MapSharedbuffers: MAP1 call returned 0x%x\n"),
			drvCr);
		return FALSE;
	}
	m_fIsActive = true;
	if (fForDirectScreenAccess)
	{
		if (!bufdata.Userbuffer)
		{
			vnclog.Print(
				LL_INTERR,
				VNCLOG("vncVideoDriver::MapSharedbuffers: mirror screen view is NULL\n"));
			return FALSE;
		}
		m_fDirectAccessInEffect = true;
	}
	else
	{
		if (bufdata.Userbuffer)
		{
			vnclog.Print(
				LL_INTINFO,
				VNCLOG("vncVideoDriver::MapSharedbuffers: mirror screen view is mapped but direct access mode is OFF\n"));
		}
	}

// Screen2Screen support added in Mirage ver 1.2
	m_fHandleScreen2ScreenBlt = (m_drv_ver_mj > 1) || (m_drv_ver_mj == 1 && m_drv_ver_mn >= 2);

	return TRUE;	
}
Example #5
0
bool
Display::BlankSupported()
{
  RootCanvas canvas;
  int i = SETPOWERMANAGEMENT;
  return ExtEscape(canvas, QUERYESCSUPPORT,
                   sizeof(i), (LPCSTR)&i, 0, NULL) > 0;
}
Example #6
0
bool
Display::BlankSupported()
{
  RootDC dc;
  int i = SETPOWERMANAGEMENT;
  return ExtEscape(dc, QUERYESCSUPPORT,
                   sizeof(i), (LPCSTR)&i, 0, nullptr) > 0;
}
Example #7
0
int OS_CreateOverlay(OVERLAY_IOCTL *povlIoctl)
{
	int retval;
	HDC hDC = GetDC(NULL);

	retval = ExtEscape(hDC, LCD_OVERLAY_CREATE, sizeof(*povlIoctl), (LPCSTR)povlIoctl, 0, NULL);
	
	ReleaseDC(NULL, hDC);
	return retval;
}
Example #8
0
int OS_SetScreenBackground(unsigned int nBackRGB)
{
	int retval;
	HDC hDC = GetDC(NULL);
	
	retval = ExtEscape(hDC, LCD_BACKGROUND_SET, sizeof(nBackRGB), (LPSTR)&nBackRGB, 0, NULL);
	
	ReleaseDC(NULL, hDC);
	return retval;
}
Example #9
0
int OS_GetScreenColorkey(LCD_COLORKEY_IOCTL *pckIoctl)
{
	int retval;
	HDC hDC = GetDC(NULL);

	retval = ExtEscape(hDC, LCD_COLORKEY_GET, sizeof(*pckIoctl), (LPSTR)pckIoctl, 0, NULL);

	ReleaseDC(NULL, hDC);
	return retval;
}
Example #10
0
BOOL vx_mon_isUpdate(vx_mon_state *mon)	//해당 모니터가 업데이트 되었나 ?
{
	int res;
	res = ExtEscape(mon->hDC,ESC_GET_UNIQ,0,NULL,sizeof(mon->token_last),(PCHAR)&mon->token_last);
	if(!res)
		return FALSE;
	if(mon->token == mon->token_last)
		return FALSE;
	return TRUE;
}
BOOL
VIDEODRIVER:: NoHardwareCursor()
{
	HDC gdc;
	int returnvalue;
	gdc = GetDC(NULL);
	returnvalue= ExtEscape(gdc, CURSORDIS, 0, NULL, NULL, NULL);
	ReleaseDC(NULL,gdc);
	return true;
}
Example #12
0
int OS_DestroyOverlay(OVERLAY_IOCTL ovlIoctl)
{
	int retval;
	HDC hDC = GetDC(NULL);

	retval = ExtEscape(hDC, LCD_OVERLAY_DESTROY, sizeof(ovlIoctl), (LPCSTR)&ovlIoctl, 0, NULL);
	
	ReleaseDC(NULL, hDC); 
	return retval;
}
Example #13
0
int OS_UpdateOverlay(OVERLAY_UPDATE_IOCTL ovlIoctl)
{
	int retval;
	HDC hDC = GetDC(NULL);

	retval = ExtEscape(hDC, LCD_OVERLAY_UPDATE, sizeof(ovlIoctl), (LPCSTR)&ovlIoctl ,0, NULL);
	
	ReleaseDC(NULL, hDC);
	return retval;
}
Example #14
0
int OS_SetNextOverlayBuffer(OVERLAY_UPDATE_IOCTL ovlIoctl)
{
	int retval;
	HDC hDC = GetDC(NULL);

	retval = ExtEscape(hDC, LCD_OVERLAY_SET_NEXT_BUFFER, sizeof(ovlIoctl), (LPCSTR)&ovlIoctl ,0, NULL);
	
	ReleaseDC(NULL, hDC);
	return retval;
}
static cairo_bool_t
printer_is_postscript_level_3 (HDC dc)
{
    DWORD word;
    INT ps_feature, ps_level;

    word = PSIDENT_GDICENTRIC;
    if (ExtEscape (dc, POSTSCRIPT_IDENTIFY, sizeof(DWORD), (char *)&word, 0, (char *)NULL) <= 0)
	return FALSE;

    ps_feature = FEATURESETTING_PSLEVEL;
    if (ExtEscape (dc, GET_PS_FEATURESETTING, sizeof(INT),
		   (char *)&ps_feature, sizeof(INT), (char *)&ps_level) <= 0)
	return FALSE;

    if (ps_level >= 3)
	return TRUE;

    return FALSE;
}
Example #16
0
int OS_SetOverlayConfig(OVERLAY_IOCTL ovlIoctl)
{
	int retval;
	HDC hDC = GetDC(NULL);

	ovlIoctl.flags = 0;

	retval = ExtEscape(hDC, LCD_OVERLAY_CONFIG, sizeof(ovlIoctl), (LPCSTR)&ovlIoctl, 0, NULL);
	
	ReleaseDC(NULL, hDC);
	return retval;
}
Example #17
0
int OS_GetOverlayConfig(OVERLAY_IOCTL *povlIoctl)
{
	int retval;
	HDC hDC = GetDC(NULL);

	povlIoctl->flags = OVERLAY_CONFIG_GET;

	retval = ExtEscape(hDC, LCD_OVERLAY_CONFIG, sizeof(*povlIoctl), (LPCSTR)povlIoctl, 0, NULL);
	
	ReleaseDC(NULL, hDC);
	return retval;
}
Example #18
0
void enter_gl(void)
{
    Wine_GLContext *curctx = (Wine_GLContext *) NtCurrentTeb()->glContext;
    
    if (curctx && curctx->do_escape)
    {
        enum x11drv_escape_codes escape = X11DRV_SYNC_PIXMAP;
        ExtEscape(curctx->hdc, X11DRV_ESCAPE, sizeof(escape), (LPCSTR)&escape, 0, NULL);
    }

    wine_tsx11_lock_ptr();
    return;
}
Example #19
0
static DWORD vboxDispIfEscapeXPDM(PCVBOXDISPIF pIf, PVBOXDISPIFESCAPE pEscape, int cbData)
{
    HDC  hdc = GetDC(HWND_DESKTOP);
    VOID *pvData = cbData ? VBOXDISPIFESCAPE_DATA(pEscape, VOID) : NULL;
    int iRet = ExtEscape(hdc, pEscape->escapeCode, cbData, (LPCSTR)pvData, 0, NULL);
    ReleaseDC(HWND_DESKTOP, hdc);
    if (iRet > 0)
        return VINF_SUCCESS;
    else if (iRet == 0)
        return ERROR_NOT_SUPPORTED;
    /* else */
    return ERROR_GEN_FAILURE;
}
Example #20
0
bool
Display::Blank(bool blank)
{
  RootCanvas canvas;

  VIDEO_POWER_MANAGEMENT vpm;
  vpm.Length = sizeof(vpm);
  vpm.DPMSVersion = 0x0001;
  vpm.PowerState = blank ? VideoPowerOff : VideoPowerOn;

  return ExtEscape(canvas, SETPOWERMANAGEMENT,
                   sizeof(vpm), (LPCSTR)&vpm, 0, NULL) > 0;
}
Example #21
0
STDMETHODIMP CGfxSAMSUNG::SetAlpha(DWORD dwAlpha)
{
	m_uAlpha = (unsigned char)dwAlpha*0xf/MAX_ALPHA_VAL;
	if(m_uAlpha > 0xf)
		m_uAlpha = 0xf;

	if(!ExtEscape( ::GetDC( NULL ), IOCTL_WIN1_SETALPHA, sizeof(m_uAlpha),(LPCSTR)&m_uAlpha,0,NULL))
	{
	   RETAILMSG(1,(L"$$$$$$ SetAlpha Failed ! $$$$$$$$$$$$$$$$$$\n"));
		return E_FAIL;
	}
	return S_OK;
}
Example #22
0
// Return the virtual address of video RAM
uint16 *vidGetVirtVRAM()
{
    // Try GETRAWFRAMEBUFFER method
    RawFrameBufferInfo frameBufferInfo;
    HDC hdc = GetDC(NULL);
    int ret = ExtEscape(hdc, GETRAWFRAMEBUFFER, 0, NULL,
                        sizeof(frameBufferInfo), (char*)&frameBufferInfo);
    ReleaseDC(NULL, hdc);
    if (ret > 0) {
        videoW = 480; //frameBufferInfo.cxPixels;
        videoH = 800; //frameBufferInfo.cyPixels;
        return (uint16*)frameBufferInfo.pFramePointer;
    }

    // Try GAPI method.
    if (late_GXOpenDisplay(GetDesktopWindow(), 0)) {
        uint16 *vaddr = (uint16 *)late_GXBeginDraw();
        videoW = 480;//GetSystemMetrics(SM_CXSCREEN);
        videoH = 800;// GetSystemMetrics(SM_CYSCREEN);
        late_GXEndDraw();
        late_GXCloseDisplay();
        return vaddr;
    }

    // Try GETGXINFO method.
    GXDeviceInfo rfb;
    rfb.Version = 100;
    hdc = GetDC(NULL);
    ret = ExtEscape(hdc, GETGXINFO, 0, NULL, sizeof(rfb), (char*)&rfb);
    ReleaseDC(NULL, hdc);
    if (ret > 0) {
        videoW = 280;//rfb.cxWidth;
        videoH = 800;//rfb.cyHeight;
        return (uint16 *)rfb.pvFrameBuffer;
    }

    Output("Unable to detect frame buffer address");
    return 0;
}
Example #23
0
void i_vx_add_device(vx_state *vx,DISPLAY_DEVICE dd)
{
	int res;

	strcpy(vx->monitor[vx->max_mon].DeviceName,dd.DeviceName);
	strcpy(vx->monitor[vx->max_mon].DeviceString,dd.DeviceString);
	vx->monitor[vx->max_mon].DeviceState = dd.StateFlags;

	//framebuffer / token / vxDevice / res / depth 갱신하기
	// Token
	vx->monitor[vx->max_mon].hDC = CreateDC(NULL,vx->monitor[vx->max_mon].DeviceName, NULL, NULL);
	res = ExtEscape(vx->monitor[vx->max_mon].hDC,ESC_GET_UNIQ,0,NULL,sizeof(vx->monitor[vx->max_mon].token),(PCHAR)&(vx->monitor[vx->max_mon].token));
	if(!res)
	{
		//만일 가상 장치가 아닌 경우 release 시킨다
		vx->monitor[vx->max_mon].is_vxDevice = FALSE;
		DeleteDC(vx->monitor[vx->max_mon].hDC);
	}
	else
	{
		//Framebuffer 및 해상도 정보를 갱신한다.
		vx->monitor[vx->max_mon].is_vxDevice = TRUE;
		
		res = ExtEscape(vx->monitor[vx->max_mon].hDC,ESC_GET_MAPPATH,0,NULL,sizeof(vx->monitor[vx->max_mon].wpath),(PCHAR)&(vx->monitor[vx->max_mon].wpath));
		if(!res)
		{
			//failed!
			return;
		}

		vx->monitor[vx->max_mon].DeviceVideoMemory = i_vx_GetSharedMemoryW(vx->monitor[vx->max_mon].wpath);
		vx->monitor[vx->max_mon].pos.x = *(((int*)vx->monitor[vx->max_mon].DeviceVideoMemory));
		vx->monitor[vx->max_mon].pos.y = *(((int*)vx->monitor[vx->max_mon].DeviceVideoMemory)+1);
		vx->monitor[vx->max_mon].depth = *(((int*)vx->monitor[vx->max_mon].DeviceVideoMemory)+2);
		vx->monitor[vx->max_mon].DeviceFramebuffer = (char*)(((int*)vx->monitor[vx->max_mon].DeviceVideoMemory)+3);
	}
	vx->max_mon++;
}
Example #24
0
void CPSOutput::OutputPS(const FX_CHAR* string, int len) {
  if (len < 0) {
    len = (int)FXSYS_strlen(string);
  }
  int sent_len = 0;
  while (len > 0) {
    int send_len = len > 1024 ? 1024 : len;
    *(FX_WORD*)m_pBuf = send_len;
    FXSYS_memcpy(m_pBuf + 2, string + sent_len, send_len);
    ExtEscape(m_hDC, PASSTHROUGH, send_len + 2, m_pBuf, 0, NULL);
    sent_len += send_len;
    len -= send_len;
  }
}
Example #25
0
BOOL wf_mirror_driver_map_memory(wfInfo* wfi)
{
	int status;

	wfi->driverDC = CreateDC(wfi->deviceName, NULL, NULL, NULL);

	if (wfi->driverDC == NULL)
	{
		WLog_ERR(TAG, "Could not create device driver context!");
		{
			LPVOID lpMsgBuf;
			DWORD dw = GetLastError(); 

			FormatMessage(
				FORMAT_MESSAGE_ALLOCATE_BUFFER | 
				FORMAT_MESSAGE_FROM_SYSTEM |
				FORMAT_MESSAGE_IGNORE_INSERTS,
				NULL,
				dw,
				MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
				(LPTSTR) &lpMsgBuf,
				0, NULL );

			// Display the error message and exit the process
			WLog_ERR(TAG, "CreateDC failed on device [%s] with error %lu: %s", wfi->deviceName, dw, lpMsgBuf);
			LocalFree(lpMsgBuf);
		}

		return FALSE;
	}

	wfi->changeBuffer = calloc(1, sizeof(GETCHANGESBUF));
	if (!wfi->changeBuffer)
		return FALSE;

	status = ExtEscape(wfi->driverDC, dmf_esc_usm_pipe_map, 0, 0, sizeof(GETCHANGESBUF), (LPSTR) wfi->changeBuffer);

	if (status <= 0)
	{
		WLog_ERR(TAG, "Failed to map shared memory from the driver! code %d", status);
		return FALSE;
	}

	return TRUE;
}
Example #26
0
STDMETHODIMP CGfxRMI::init_mae_driver()
{
	DRV_ESCAPE_MAE_CONFIG config;	
	HDC hDC;
	
	config.x = 0;
	config.y = 0;
	config.w = m_dwWidth;
	config.h = m_dwHeight;
	config.bpp = 32;
	config.colorkey  = RGB(0x00,0x08,0x00); 
	config.backcolor = RGB(0x04,0x04,0x04);
	config.fullscreen = 1;
	hDC = GetDC(NULL);
	ExtEscape(hDC,DRV_ESCAPE_MAE_ENABLE,sizeof(config),(char*)&config,0,NULL);
	ReleaseDC(NULL,hDC);
	return S_OK;
}
Example #27
0
void DisplayOff()
{   /* Switch the screen off now */
    HDC hdc;
    VIDEO_POWER_MANAGEMENT vpm;

    hdc = GetDC(NULL);
    vpm.PowerState = VideoPowerOff;
    vpm.Length = sizeof(VIDEO_POWER_MANAGEMENT);

    ExtEscape(hdc,
              SETPOWERMANAGEMENT,
              sizeof(VIDEO_POWER_MANAGEMENT),
              (LPCSTR)&vpm,
              0,
              NULL);

    return;
}
Example #28
0
BOOL wf_mirror_driver_cleanup(wfInfo* wfi)
{
	int status;

	status = ExtEscape(wfi->driverDC, dmf_esc_usm_pipe_unmap, sizeof(GETCHANGESBUF), (LPSTR) wfi->changeBuffer, 0, 0);
	
	if (status <= 0)
	{
		WLog_ERR(TAG, "Failed to unmap shared memory from the driver! code %d", status);
	}

	if (wfi->driverDC != NULL)
	{
		status = DeleteDC(wfi->driverDC);

		if (status == 0)
		{
			WLog_ERR(TAG, "Failed to release DC!"));
		}
Example #29
0
bool CPSOutput::WriteBlock(const void* str, size_t len) {
  int sent_len = 0;
  while (len > 0) {
    char buffer[1026];
    size_t send_len = std::min(len, static_cast<size_t>(1024));
    *(reinterpret_cast<uint16_t*>(buffer)) = send_len;
    memcpy(buffer + 2, static_cast<const char*>(str) + sent_len, send_len);

    switch (m_mode) {
      case OutputMode::kExtEscape:
        ExtEscape(m_hDC, PASSTHROUGH, send_len + 2, buffer, 0, nullptr);
        break;
      case OutputMode::kGdiComment:
        GdiComment(m_hDC, send_len + 2, reinterpret_cast<const BYTE*>(buffer));
        break;
    }
    sent_len += send_len;
    len -= send_len;
  }
  return true;
}
Example #30
0
static BOOL dispBitmap(HDC hDC, LPCTSTR lpszFileName)
{
	HANDLE hFile = CreateFile(lpszFileName,
		GENERIC_READ, FILE_SHARE_READ,
		NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (INVALID_HANDLE_VALUE == hFile)
		return FALSE;

	DISPBITMAP dispBmp;
	dispBmp.nCount = (int)GetFileSize(hFile, NULL);
	dispBmp.x = dispBmp.y = 0;
	dispBmp.pBuffer = new BYTE [dispBmp.nCount];
	if (NULL == dispBmp.pBuffer)
	{
		CloseHandle(hFile);
		return FALSE;
	}

	DWORD dwNumberOfBytesRead;
	ReadFile(hFile, dispBmp.pBuffer, dispBmp.nCount, &dwNumberOfBytesRead, NULL);
	if (dispBmp.nCount != dwNumberOfBytesRead)
	{
		CloseHandle(hFile);
		delete [] dispBmp.pBuffer;
		return FALSE;
	}

	dispBmp.pUpdate = NULL;
	dispBmp.bIsWait = TRUE;
	int nRet = ExtEscape(hDC, DRVESC_DISP_BITMAP, sizeof(dispBmp), (LPCSTR)&dispBmp, 0, NULL);
	RETAILMSG(0, (_T("+ DRVESC_DISP_BITMAP %d\r\n"), nRet));

	delete [] dispBmp.pBuffer;
	CloseHandle(hFile);

	return TRUE;
}