Esempio n. 1
0
/*F+F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F+++F
  Function: DllUnregisterServer

  Summary:  The standard exported function that can be called to command
            this DLL server to unregister itself from the system Registry.

  Args:     void.

  Returns:  HRESULT
              NOERROR
F---F---F---F---F---F---F---F---F---F---F---F---F---F---F---F---F---F---F-F*/
STDAPI DllUnregisterServer(void)
{
  HRESULT  hr = NOERROR;
  TCHAR    szID[GUID_SIZE+1];
  TCHAR    szCLSID[GUID_SIZE+1];
  TCHAR    szTemp[GUID_SIZE+1];

  /*-------------------------------------------------------------------------
    Delete registry entries for the Ball Component.
  -------------------------------------------------------------------------*/
  //Create some base key strings.
  StringFromGUID2(CLSID_Ball, szID, GUID_SIZE);
  hr = StringCbCopy(szCLSID, sizeof(szCLSID), TEXT("CLSID\\"));
  assert(hr == S_OK);
  hr = StringCbCat(szCLSID, sizeof(szCLSID), szID);
  assert(hr == S_OK);

  RegDeleteKey(HKEY_CLASSES_ROOT, TEXT("DllBall\\CurVer"));
  RegDeleteKey(HKEY_CLASSES_ROOT, TEXT("DllBall\\CLSID"));
  RegDeleteKey(HKEY_CLASSES_ROOT, TEXT("DllBall"));

  RegDeleteKey(HKEY_CLASSES_ROOT, TEXT("DllBall1.0\\CLSID"));
  RegDeleteKey(HKEY_CLASSES_ROOT, TEXT("DllBall1.0"));

  hr = StringCbPrintf(szTemp, sizeof(szTemp), TEXT("%s\\%s"), szCLSID, TEXT("ProgID"));
  assert(hr == S_OK);
  RegDeleteKey(HKEY_CLASSES_ROOT, szTemp);

  hr = StringCbPrintf(szTemp, sizeof(szTemp), TEXT("%s\\%s"), szCLSID, TEXT("VersionIndependentProgID"));
  assert(hr == S_OK);
  RegDeleteKey(HKEY_CLASSES_ROOT, szTemp);

  hr = StringCbPrintf(szTemp, sizeof(szTemp), TEXT("%s\\%s"), szCLSID, TEXT("NotInsertable"));
  assert(hr == S_OK);
  RegDeleteKey(HKEY_CLASSES_ROOT, szTemp);

  hr = StringCbPrintf(szTemp, sizeof(szTemp), TEXT("%s\\%s"), szCLSID, TEXT("InprocServer32"));
  assert(hr == S_OK);
  RegDeleteKey(HKEY_CLASSES_ROOT, szTemp);

  RegDeleteKey(HKEY_CLASSES_ROOT, szCLSID);

  return hr;
}
Esempio n. 2
0
HFCERROR StdHFCErrorCallbackMsgBox(HFCERROR nError,DWORD_PTR dwData)
{
	if (nError!=HFC_NOERROR)
	{
		char text[1000];
		StringCbPrintf(text,1000,"Code %X:%s",(DWORD)nError,GetStdErrorStr(nError));
		MessageBox((HWND)dwData,text,"HFC Error",MB_ICONERROR|MB_OK);
	}
	return nError;
}
Esempio n. 3
0
TCHAR *GetTimeDateStr()															// Return date and time [01/01/2013]:[22:29:22]
{
	TCHAR *tStr = new TCHAR[50];
	SYSTEMTIME time;

	GetLocalTime(&time);

	StringCbPrintf(tStr,50,TEXT("[%02d/%02d/%04d]:[%02d:%02d:%02d]"),time.wDay,time.wMonth,time.wYear, time.wHour,time.wMinute,time.wSecond);
	return tStr;
}
STDMETHODIMP_(ULONG) CShellExtClassFactory::AddRef()
{
    ODS("CShellExtClassFactory::AddRef()");

	char szNum[100];
	StringCbPrintf(szNum,100,"m_cRef is after this call %d",m_cRef+1);
	DebugMessage(szNum);

	return ++m_cRef;
}
Esempio n. 5
0
	//***************************************************************************************************
	// check if the key is already exist
	bool IsKeyExist( HKEY hKey, LPCTSTR lpcsPath, LPCTSTR lpcsKeyName )
	{
		HKEY hSubKey = NULL;
		_TCHAR tcsKey[MAX_PATH];
		if ( lpcsKeyName != NULL ) {
			StringCbPrintf( tcsKey, MAX_PATH* sizeof(_TCHAR), _T("%s\\%s"), lpcsPath, lpcsKeyName );
		}
		else	{
			StringCbPrintf( tcsKey, MAX_PATH* sizeof(_TCHAR), _T("%s"), lpcsPath );
		}

		if ( ERROR_SUCCESS == ::RegOpenKeyEx( hKey, tcsKey, 0, KEY_READ, &hSubKey)
			&& hSubKey != NULL )
		{
			::RegCloseKey( hSubKey );
			return true;
		}
		return false;
	}
Esempio n. 6
0
char *
AclToString(struct Acl *acl)
{
    static char mydata[AFS_PIOCTL_MAXSIZE];
    char tstring[AFS_PIOCTL_MAXSIZE];
    char dfsstring[30];
    struct AclEntry *tp;

    if (acl->dfs) {
        if( FAILED(StringCbPrintf(dfsstring, sizeof(dfsstring), " dfs:%d %s", acl->dfs, acl->cell))) {
            fprintf (stderr, "dfsstring - cannot be populated");
            exit(1);
        }
    } else {
        dfsstring[0] = '\0';
    }
    if( FAILED(StringCbPrintf(mydata, sizeof(mydata), "%d%s\n%d\n", acl->nplus, dfsstring, acl->nminus))) {
        fprintf (stderr, "mydata - cannot be populated");
        exit(1);
    }
    for (tp = acl->pluslist;tp;tp=tp->next) {
        if( FAILED(StringCbPrintf(tstring, sizeof(tstring), "%s %d\n", tp->name, tp->rights))) {
            fprintf (stderr, "tstring - cannot be populated");
            exit(1);
        }
        if( FAILED(StringCbCat(mydata, sizeof(mydata), tstring))) {
            fprintf (stderr, "mydata - not enough space");
            exit(1);
        }
    }
    for (tp = acl->minuslist;tp;tp=tp->next) {
        if( FAILED(StringCbPrintf(tstring, sizeof(tstring), "%s %d\n", tp->name, tp->rights))) {
            fprintf (stderr, "tstring - cannot be populated");
            exit(1);
        }
        if( FAILED(StringCbCat(mydata, sizeof(mydata), tstring))) {
            fprintf (stderr, "mydata - not enough space");
            exit(1);
        }
    }
    return mydata;
}
Esempio n. 7
0
const TCHAR *DeviceInfo::LocationString()
{
    static TCHAR   locus[30];

    if (devUsbValid) {
        ZeroMemory(locus, sizeof(locus));
        StringCbPrintf(locus, sizeof(locus), _T("USB hub %i port %i"), devUsbHub, devUsbPort);
        return locus;
    }
    return NULL;
}
Esempio n. 8
0
static FILE *_OpenSettings (const TCHAR *pszSettingsLocation, const TCHAR *pszBase, const TCHAR *pszConfig) {
	TCHAR szPath[PATH_MAX];
	StringCbPrintf (szPath, sizeof (szPath), TEXT ("%s%s%s"), pszBase, pszConfig, pszSettingsLocation);
	FILE *f = fopen (szPath, TEXT ("rt"));
	if (!f) {
		LOGWARN (TEXT ("Couldn't open ") << szPath << TEXT (", error ") << GetLastError ());
	} else {
		LOGDEBUG (TEXT ("Reading from ") << szPath);
	}
	return f;
}
Esempio n. 9
0
VOID CFormatMessage::OutputDebugString(LPCTSTR szFormat,...)
{
	va_list vagrc;
	va_start(vagrc,szFormat);
	TCHAR szParamText[2048]={NULL};
	StringCbVPrintf(szParamText,sizeof(szParamText),szFormat,vagrc);
	va_end(vagrc);
	INT nLen = _tcslen(szParamText);
	StringCbPrintf(&szParamText[nLen],sizeof(szParamText)-nLen,TEXT("\r\n╢МнСт╜рР:(%d)%s"),m_nLastError,szErrorText);
	::OutputDebugString(szParamText);
}
/**\brief static dialog callback procedure
 *
 * The default behavior you get out of this procedure is:
 * - Stores the dialog pointer passed in on lParam in GWLP_USERDATA for later use
 * - Bails if there is no dialog pointer in GWLP_USERDATA on any message other than INITDIALOG
 * - Forwards to the polymorphic ProcessMessage method on the BMD instance
 * - Calls EndDialog if you percolate an IDOK or IDCANCEL back up the stack
 */
INT_PTR CALLBACK BasicModalDialog::_DlgProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  BasicModalDialog *bmd = (BasicModalDialog *)NULL;

  // the bmd pointer will be cached in GWLP_USERDATA once we get an INITDIALOG message
  bmd = reinterpret_cast<BasicModalDialog *>(GetWindowLongPtr(hWndDlg,GWLP_USERDATA));

  // Toss everything to the default dialog proc until we get the INITDIALOG message that has our camera pointer
  if(bmd == NULL && uMsg != WM_INITDIALOG)
  {
    // if we get a CANCEL in the interim, bail out
    if(uMsg == WM_COMMAND && LOWORD(wParam) == IDCANCEL)
    {
      EndDialog(hWndDlg,LOWORD(wParam));
      return TRUE;
    }
    return FALSE;
  } // fall through: bmd != NULL and/or WM_INITDIALOG

  if(uMsg == WM_INITDIALOG)
  {
    // bmd is in lParam
    bmd = reinterpret_cast<BasicModalDialog *>(lParam);
    // idiotproofing for bad bmd pointer at this point
    if(bmd == NULL)
    {
      MessageBox(hWndDlg,"Invalid context pointer passed to DialogBoxParam!","BasicModalDialog Error",MB_OK|MB_ICONERROR);
      EndDialog(hWndDlg,-1);
      return TRUE;
    } else {
      char buf[256];
      StringCbPrintf(buf,sizeof(buf),"BasicModalDialog::_DlgProc: bmd @ %p\n",bmd);
      OutputDebugString(buf);
      // cache in GWLP_USERDATA
      SetWindowLongPtr(hWndDlg,GWLP_USERDATA,(LONG_PTR)(bmd));
    }
    // here bmd guaranteed non-NULL
  } // else msg != WM_INITDIALOG, so bmd != NULL from previous test... fall through

  // all paths here lead to bmd != NULL, so forward the message to the virtual handler

  bool res = bmd->ProcessMessage(hWndDlg,uMsg,wParam,lParam);
  if(!res)
  {
    // do minimum of watching for IDOK/IDCANCEL and closing the dialog
    if(uMsg == WM_COMMAND && (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) )
    {
      EndDialog(hWndDlg, LOWORD(wParam));
      res = true;
    }
  }
  return res ? TRUE : FALSE;
}
Esempio n. 11
0
void DeviceInfo::UpdateDeviceState(enum DevState aDevState, FILETIME aNow, unsigned aScanId)
{
    // check for change of state, eg removed etc...
    if (devState != aDevState) {
        BOOL chgState = FALSE;

        if (aDevState == DevAbsent) {
            if ((devState == DevPresent) || (devState == DevArrived)) {
#ifdef _DEBUG
                PrintDebugStatus(_T("Change state to removed\n"));
#endif
                // update DeviceTracker counts, decide on notifications
                gdevTracker->DetermineRemovalNotifications(devType, devState, DevRemoved);

                devState = DevRemoved;
                devElapsed = 0;
                devTimestamp = aNow;
                chgState = TRUE;
                // update counts
                DecDeviceTypeCount();
            }
        } else if (aDevState == DevPresent) {
            if ((devState == DevAbsent) || (devState == DevRemoved)) {
#ifdef _DEBUG
                PrintDebugStatus(_T("Change state to arrived\n"));
#endif
                devDeleteOnUnlock = FALSE; // device has returned, no longer need to delete

                // update DeviceTracker counts, decide on notifications 
                gdevTracker->DetermineArrivalNotifications(devType, aDevState);

                devState = gdevTracker->CheckInitialScanFlag(devType) ? DevPresent : DevArrived;
                devTimestamp = aNow;
                devElapsed = 0;
                chgState = TRUE;
                // update counts
                IncDeviceTypeCount();
            }
        }

        if (chgState) {
            TCHAR   buffer[20];

            StringCbPrintf(buffer, sizeof(buffer), _T("%s 0min"), StateName());
            SetDeviceIcon();

            // update port status & icon on display
            gdevTracker->UpdateViewItemIconAndState(devImage, buffer, (LPARAM)this);
        }
    }

    devScanId = aScanId;
}
Esempio n. 12
0
void ShowErrorMessage(HWND hwnd, PCWSTR format, HRESULT hrErr)
{
    HRESULT hr = S_OK;
    WCHAR msg[MAX_PATH];

    hr = StringCbPrintf(msg, sizeof(msg), L"%s (hr=0x%X)", format, hrErr);

    if (SUCCEEDED(hr))
    {
        MessageBox(hwnd, msg, L"Error", MB_ICONERROR);
    }
}
Esempio n. 13
0
void CreateLnkOnDesktop(const LPWSTR connTitle)
{
	IShellLink   *SLink;
	IPersistFile *PF;
	HRESULT HRes;
	TCHAR desktop_path[MAX_PATH] = TEXT("");
	TCHAR pszFullLnkPath[MAX_PATH]; 

	CoInitialize(NULL);

	ITEMIDLIST* pidl1 = NULL;
    SHGetFolderLocation(NULL, CSIDL_CONNECTIONS, NULL, 0, &pidl1);
    IShellFolder *desktop, *ncfolder;
    SHGetDesktopFolder(&desktop);
    desktop->BindToObject(pidl1, NULL, IID_IShellFolder, (void**)&ncfolder);

    IEnumIDList *items;
    ncfolder->EnumObjects(NULL, SHCONTF_NONFOLDERS, &items);
    ITEMIDLIST* pidl2 = NULL;
    while (S_OK == items->Next(1, &pidl2, NULL))
    {
        STRRET sr = {STRRET_WSTR};
        ncfolder->GetDisplayNameOf(pidl2, SHGDN_NORMAL, &sr);

        TCHAR buf[MAX_PATH] = TEXT("");
        StrRetToBuf(&sr, pidl2, buf, MAX_PATH);

        if (0 == StrCmpI(buf, connTitle))
        {
            ITEMIDLIST* pidl3 = ILCombine(pidl1, pidl2);
			HRESULT HRes = CoCreateInstance(CLSID_ShellLink, 0, CLSCTX_INPROC_SERVER, IID_IShellLink, ( LPVOID*)&SLink);
            SLink->SetIDList(pidl3);
			SHGetFolderPath(NULL, CSIDL_DESKTOP, NULL, 0, desktop_path);
			StringCbPrintf(pszFullLnkPath, MAX_PATH * sizeof(TCHAR), TEXT("%s\\%s.lnk"), desktop_path, connTitle);
			HRes = SLink->QueryInterface(IID_IPersistFile, (LPVOID*)&PF);
			HRes = PF->Save((LPCOLESTR)pszFullLnkPath, TRUE);
			PF->Release();
			SLink->Release();
            ILFree(pidl3);
            ILFree(pidl2);
            break;
        }

        ILFree(pidl2);
        pidl2 = NULL;
    }
	ncfolder->Release();
	desktop->Release();

    ILFree(pidl1);

	CoUninitialize();
}
Esempio n. 14
0
// 키보드 후킹 프로시저
LRESULT CALLBACK
KeyHook(int code, WPARAM w, LPARAM l)
{
	if(code >= 0)
	{
		TCHAR buf[80];

        StringCbPrintf(buf, sizeof(buf), TEXT("%c"), w);
		OutputDebugString(buf);
	}

    return CallNextHookEx(NULL, code, w, l);
}
Esempio n. 15
0
BOOL
InitDebugLog(LPWSTR lpLogName, LPWSTR lpVersion)
{
    WCHAR szPath[MAX_PATH], szMsg[MAX_STR_LEN],
          szCurrentPath[MAX_PATH];
    DWORD dwBytesWritten;

    if (!GetCurrentPath(szCurrentPath, MAX_PATH))
        return FALSE;

    StringCbPrintf(szPath, sizeof(szPath),
                   L"%s%s",
                   szCurrentPath,
                   lpLogName);

    hDebugLog = CreateFile(szPath,
                           GENERIC_WRITE,
                           FILE_SHARE_READ | FILE_SHARE_WRITE,
                           NULL,
                           CREATE_ALWAYS,
                           FILE_ATTRIBUTE_NORMAL,
                           NULL);
    if (hDebugLog == INVALID_HANDLE_VALUE)
        return FALSE;
    
    WriteFile(hDebugLog, "\xFF\xFE", 2, &dwBytesWritten, NULL);

    StringCbPrintf(szMsg, sizeof(szMsg),
#ifdef _M_IX86
                   L"Log file created, Aspia %s",
#else
                   L"Log file created, Aspia %s (x64)",
#endif
                   lpVersion);
    DebugTrace(szMsg);

    return TRUE;
}
void StartCounter()
{
  int i;
  TCHAR buffer[255];

  for(i = 0; i < 100; i++)
  {
    StringCbPrintf(buffer, sizeof(buffer), TEXT("%d"), i);
    if(g_dlg)
    {
      g_dlg->Append(buffer);
    }
  }
}
Esempio n. 17
0
HRESULT MakeFullItemName(
    _In_ IWiaDrvItem* pParent,
    _In_ BSTR bstrItemName,
    _Out_ BSTR* pbstrFullItemName)
{
    HRESULT hr = S_OK;

    if (pParent && bstrItemName && pbstrFullItemName)
    {
        BSTR bstrParentFullItemName = NULL;
        hr = pParent->GetFullItemName(&bstrParentFullItemName);
        if (SUCCEEDED(hr))
        {
            WCHAR wFullItemName[MAX_PATH * 2] = {};

            hr = StringCbPrintf(wFullItemName, sizeof(wFullItemName), TEXT("%ws\\%ws"), bstrParentFullItemName, bstrItemName);
            if (SUCCEEDED(hr))
            {
                *pbstrFullItemName = SysAllocString(wFullItemName);
                if (*pbstrFullItemName)
                {
                    hr = S_OK;
                }
                else
                {
                    hr = E_OUTOFMEMORY;
                    WIAEX_ERROR((g_hInst, "Failed to allocate memory for BSTR full item name, hr = 0x%08X", hr));
                }
            }
            else
            {
                WIAEX_ERROR((g_hInst, "Failed to allocate memory for BSTR full item name, hr = 0x%08X", hr));
            }

            SysFreeString(bstrParentFullItemName);
            bstrParentFullItemName = NULL;
        }
        else
        {
            WIAEX_ERROR((g_hInst, "Failed to produce the full item name, hr = 0x%08X", hr));
        }
    }
    else
    {
        hr = E_INVALIDARG;
        WIAEX_ERROR((g_hInst, "Invalid parameter, hr = 0x%08X", hr));
    }
    return hr;
}
Esempio n. 18
0
// new DeviceInfo object, transfers ownership of strings, 
DeviceInfo *DeviceInfo::NewDevice(enum DevType aDevType, 
    enum DevState aDevState, FILETIME aNow, wchar_t *aSerialnumber, wchar_t *aPortName,
    wchar_t *aFriendlyName, wchar_t *aHardwareId, int aPortNumber, wchar_t *aContainerId,
    unsigned aUsbHub, unsigned aUsbPort, BOOL aUsbValid, unsigned aScanId, DeviceInfo *aDevNext,
    BOOL aIsWinSerial, SerialType aSerialType)
{
    DeviceInfo *newDev = NULL;

    // decide if new device should be DevArrived rather than DevPresent
    if ((aDevState == DevPresent) && !gdevTracker->CheckInitialScanFlag(aDevType)) {
        aDevState = DevArrived;
    }

    newDev = new DeviceInfo(aDevType, aDevState, aNow, aSerialnumber, aPortName,
        aPortNumber, aContainerId, aFriendlyName, aHardwareId,
        aUsbHub, aUsbPort, aUsbValid, aScanId, aDevNext,
        aIsWinSerial, aSerialType);

    if (newDev) {
        TCHAR   buffer[20];

        // update double linked list
        if (aDevNext) {
            aDevNext->devPrev = newDev;
        }
        gdevTracker->SetPortList(newDev);

        StringCbPrintf(buffer, sizeof(buffer), 
            (newDev->DeviceState() == DevArrived) ? _T("%s 0min") : _T("%s"), newDev->StateName());

        // display update shouldn't fail, but check anyway
        if (!gdevTracker->AddViewItem(newDev->DisplayName(), newDev->devImage,
                newDev->DevTypeName(), buffer, newDev->LocationString(), aSerialnumber,
                (LPARAM)newDev)) {
            newDev->Destroy();
            newDev = NULL;
        } else {
            if ((aDevState == DevArrived) || (aDevState == DevPresent)) {
                // update count
                newDev->IncDeviceTypeCount();
            }

            // update DeviceTracker counts, decide on notifications 
            gdevTracker->DetermineArrivalNotifications(aDevType, aDevState);
        }
    }

    return newDev;
}
Esempio n. 19
0
static int connect_to_daemon(struct qdb_handle *qh) {
    WCHAR pipe_name[MAX_FILE_NAME];
    ULONG status;

    if (qh->vmname && strcmp(qh->vmname, "dom0") != 0) {
        StringCbPrintf(pipe_name, sizeof(pipe_name), QDB_DAEMON_PATH_PATTERN, qh->vmname);
    } else {
#ifdef BACKEND_VMM_wni
        /* on WNI we don't have separate namespace for each VM (all is in the
         * single system) */
        DWORD user_name_len = UNLEN + 1;
        WCHAR user_name[user_name_len];

        if (!GetUserName(user_name, &user_name_len)) {
            perror("GetUserName");
            return 0;
        }
        StringCbPrintf(pipe_name, sizeof(pipe_name), QDB_DAEMON_LOCAL_PATH, user_name);
#else

        StringCbPrintf(pipe_name, sizeof(pipe_name), QDB_DAEMON_LOCAL_PATH);
#endif
    }

    qh->read_pipe = INVALID_HANDLE_VALUE;
    qh->write_pipe = INVALID_HANDLE_VALUE;

    status = QpsConnect(pipe_name, &qh->read_pipe, &qh->write_pipe);
    if (status != ERROR_SUCCESS)
    {
        perror2(status, "connect to server");
        return 0;
    }

    return 1;
}
Esempio n. 20
0
TCHAR *generate_screenshot_name(TCHAR *fn, int num, TCHAR *dest, TCHAR *ext) {
	size_t i;
	for (i = _tcslen(fn) - 1; i && fn[i] != '.'; i--);
	 	 
	if (i) {
		fn[i] = '\0';
	}
	
	StringCbPrintf(dest, _tcslen(dest) + _tcslen(ext) + 1, _T("%s%d.%s"), fn, num, ext);
	
	if (i)  {
		fn[i] = '.';
	}
	return dest;
}
Esempio n. 21
0
LRESULT CALLBACK
KeyHookEx(int code, WPARAM w, LPARAM l)
{
	if(code >= 0)
	{
		TCHAR buf[80];

        StringCbPrintf(buf, sizeof(buf), TEXT("W=%08X(%c) L=%08X"), w, w, l);
		OutputDebugString(buf);

		if(w == 'W')
			return TRUE;
	}

    return CallNextHookEx(NULL, code, w, l);
}
Esempio n. 22
0
STDMETHODIMP_(ULONG) CShellExtClassFactory::Release()
{
	ODS("CShellExtClassFactory::Release()");

	char szNum[100];
	StringCbPrintf(szNum,100,"m_cRef is after this call %d",m_cRef-1);
	DebugMessage(szNum);

    if (--m_cRef)
        return m_cRef;

	DebugMessage("Removing class"); 
	delete this;

    return 0L;
}
Esempio n. 23
0
STDMETHODIMP_(ULONG) CLocateShellExtension::Release()
{
    ODS("CShellExt::Release()");

	char szNum[100];
	StringCbPrintf(szNum,100,"m_cRef is after this call %d",m_cRef-1);
	DebugMessage(szNum);

    if (--m_cRef)
        return m_cRef;

    DebugMessage("delete this");
	delete this;

    return 0L;
}
Esempio n. 24
0
	//***************************************************************************************************
	// write string to registry, if the key path is not exist, will create one
	bool WriteDWORD( HKEY hKey, LPCTSTR lpcsPath, LPCTSTR lpcsSubPath, LPCTSTR lpcsKey, DWORD dwValue )
	{
		if ( lpcsPath == NULL || _tcslen( lpcsPath ) < 1 )	{
			_ASSERT( 0 );
			return false;
		}

		if ( lpcsSubPath != NULL )	{
			_TCHAR tcsPath[MAX_PATH];
			StringCbPrintf( tcsPath, MAX_PATH* sizeof(_TCHAR), _T("%s\\%s"), lpcsPath, lpcsSubPath );
			return WriteDWORD( hKey, tcsPath, lpcsKey, dwValue );
		}
		else {
			return WriteDWORD( hKey, lpcsPath, lpcsKey, dwValue );
		}
	}
Esempio n. 25
0
File: ntfunc.c Progetto: phase/tcsh
void dotitle(Char **vc, struct command * c) {

	int k;
	char titlebuf[512];
	char errbuf[128],err2[128];
	char **v;
	Char **nvc;

	UNREFERENCED_PARAMETER(c);
	vc++;
	nvc = glob_all_or_error(vc);
	if (nvc == NULL)
		return;
	if (nvc != vc)
		cleanup_push(nvc, blk_cleanup);

	if ((k = GetConsoleTitle(titlebuf, sizeof(titlebuf))) != 0) {
		setcopy(STRoldtitle,str2short(titlebuf),
		    VAR_READWRITE|VAR_NOGLOB);
	}

	titlebuf[0] = '\0';
	v = short2blk(nvc);
	if (nvc != vc)
		cleanup_until(nvc);
	cleanup_push((Char **)v, blk_cleanup);
	for (k = 0; v[k] != NULL ; k++){
		__try {
			StringCbCat(titlebuf,sizeof(titlebuf),v[k]);
			StringCbCat(titlebuf,sizeof(titlebuf)," ");
		}
		__except(GetExceptionCode()) {
			stderror(ERR_TOOMANY);
		}
	}

	if (!SetConsoleTitle(titlebuf) ) {
		make_err_str(GetLastError(),errbuf,128);
		(void)StringCbPrintf(err2,sizeof(err2),"%s",v[k]);
		stderror(ERR_SYSTEM,err2,errbuf);
	}
	cleanup_until((Char **)v);
	return;
}
BOOL SetTokenIL(HANDLE hToken, DWORD dwIntegrityLevel)
{

    BOOL                  fRet = FALSE;
    PSID                  pIntegritySid = NULL;
    TOKEN_MANDATORY_LABEL TIL = { 0 };

    // Low integrity SID
    WCHAR wszIntegritySid[32];

    if (FAILED(StringCbPrintf(wszIntegritySid, sizeof(wszIntegritySid), L"S-1-16-%d", dwIntegrityLevel)))
    {
        printf("Error creating IL SID\n");
        goto CleanExit;
    }

    fRet = ConvertStringSidToSid(wszIntegritySid, &pIntegritySid);

    if (!fRet)
    {
        printf("Error converting IL string %ls\n", GetErrorMessage().c_str());
        goto CleanExit;
    }

    TIL.Label.Attributes = SE_GROUP_INTEGRITY;
    TIL.Label.Sid = pIntegritySid;

    fRet = SetTokenInformation(hToken,
                               TokenIntegrityLevel,
                               &TIL,
                               sizeof(TOKEN_MANDATORY_LABEL) + GetLengthSid(pIntegritySid));

    if (!fRet)
    {
        printf("Error setting IL %d\n", GetLastError());
        goto CleanExit;
    }

CleanExit:

    LocalFree(pIntegritySid);

    return fRet;
}
Esempio n. 27
0
void
HttpRequest::FetchFaviconForDomain()
{
    HANDLE hFile = INVALID_HANDLE_VALUE;
    wchar_t domain[MAX_PATH];
    const wchar_t * domain_ptr = domain;

    {
        URL_COMPONENTS uc;

        memset(&uc, 0, sizeof(uc));
        uc.dwStructSize = sizeof(uc);
        uc.lpszHostName = domain;
        uc.dwHostNameLength = ARRAYLENGTH(domain);

        if (!WinHttpCrackUrl(m_target.c_str(), 0, 0, &uc))
            StringCchCopy(domain, ARRAYLENGTH(domain), m_target.c_str());
    }

    MuteReports();

    do {
        khm_int32 rv;

        rv = FetchResource(domain_ptr, L"/favicon.ico", icon_mimetypes);
        if (KHM_SUCCEEDED(rv) || rv != KHM_ERROR_NOT_FOUND)
            break;

        {
            wchar_t wwwdomain[MAX_PATH];

            if (SUCCEEDED(StringCbPrintf(wwwdomain, sizeof(wwwdomain), L"www.%s", domain_ptr)) &&
                (KHM_SUCCEEDED(FetchResource(wwwdomain, L"/favicon.ico", icon_mimetypes))))
                break;
        }

        domain_ptr = wcschr(domain_ptr, L'.');
        if (domain_ptr)
            domain_ptr++;
    } while(domain_ptr != NULL && *domain_ptr != L'\0');

    MuteReports(false);
    ReportComplete(false);
}
Esempio n. 28
0
static void onerr(int iserror,const char* expr,const char*file,int line,const char* function) {
    int ecode=GetLastError();
    char emsg[1024]={0},
         str[1024]={0};
    FormatMessage(  FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
                    0, /* source */
                    ecode, /* id */
                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* lang id */
                    emsg,
                    sizeof(emsg),
                    0);
    StringCbPrintf(str,sizeof(str)
                    ,"%s(%d) - %s()\n\tExpression evaluated to false\n\t%s\n\tLast Windows Error Message: %s\n"
                    ,file,line,function,expr,emsg);
                    
    OutputDebugString(str);
    MessageBox(0,str,iserror?"Error":"Warning", MB_OK);
    /* PostQuitMessage(1); */ /* Closes windows */
}
Esempio n. 29
0
/*****************************************************************************
DWORD WriteSfvHeader(CONST HANDLE hFile)
hFile		: (IN) handle to an open file

Return Value:
- returns NOERROR or GetLastError()
*****************************************************************************/
DWORD WriteFileComment(CONST HANDLE hFile, CONST FILEINFO *pFileInfo, UINT startChar)
{
    TCHAR szLine[MAX_LINE_LENGTH];
#ifdef UNICODE
    CHAR szLineAnsi[MAX_LINE_LENGTH];
#endif
    DWORD dwNumberOfBytesWritten;
    size_t stStringLength;
    VOID *szOutLine=szLine;

    SYSTEMTIME st;
    FILETIME ft;
    TCHAR szTimeStamp[50];

    FileTimeToLocalFileTime( &pFileInfo->ftModificationTime, &ft );
    FileTimeToSystemTime( &ft, &st );
    int chars = GetTimeFormat( LOCALE_USER_DEFAULT, 0, &st, TEXT("HH':'mm'.'ss"), szTimeStamp, 50 );
    GetDateFormat( LOCALE_USER_DEFAULT, 0, &st, TEXT("' 'yyyy'-'MM'-'dd"), szTimeStamp + chars - 1, 50 - chars );
    StringCbPrintf(szLine, MAX_LINE_LENGTH, TEXT(";%13I64d  %s %s%s"), pFileInfo->qwFilesize, szTimeStamp, pFileInfo->szFilename.GetString() + startChar,
                   g_program_options.bCreateUnixStyle ? TEXT("\n") : TEXT("\r\n"));
    StringCbLength(szLine, MAX_LINE_LENGTH, & stStringLength);


#ifdef UNICODE
    if(!g_program_options.bCreateUnicodeFiles) {
        if(!WideCharToMultiByte(CP_ACP, 0, szLine, -1, szLineAnsi, MAX_UTF8_PATH, NULL, NULL) )
            return GetLastError();
        StringCbLengthA(szLineAnsi, MAX_LINE_LENGTH, & stStringLength);
        szOutLine=szLineAnsi;
    } else if(g_program_options.iUnicodeSaveType == UTF_8 || g_program_options.iUnicodeSaveType==UTF_8_BOM) {
        if(!WideCharToMultiByte(CP_UTF8, 0, szLine, -1, szLineAnsi, MAX_UTF8_PATH, NULL, NULL) )
            return GetLastError();
        StringCbLengthA(szLineAnsi, MAX_LINE_LENGTH, & stStringLength);
        szOutLine=szLineAnsi;
    }
#endif

    if(!WriteFile(hFile, szOutLine, (DWORD)stStringLength, & dwNumberOfBytesWritten, NULL) )
        return GetLastError();

    return NOERROR;
}
Esempio n. 30
0
// TODO : This will not only start the response but also send all headers, without content!
bool FilterAgentResponse::startResponse(int status, string reason, list<pair<string, string>> headers) {

	if (committed) {
		jk_log(this->logger, JK_LOG_ERROR, "Response already committed!");
		return false;
	}
	committed = true;

	char statusLine[MAX_HEADER_SIZE];
	statusLine[0] = '\0';

	StringCbPrintf(statusLine, MAX_HEADER_SIZE, "%d %s", status, reason.c_str());

	string plainHeaders = "";
	list<pair<string, string>>::iterator h;
	for (h = headers.begin() ; h != headers.end() ; h ++) {
		pair<string, string> p = *h;
		
		plainHeaders.append(p.first);
		plainHeaders.append(": ");
		plainHeaders.append(p.second);
		plainHeaders.append("\r\n");
	}
	if (plainHeaders.empty()) {
		jk_log(logger, JK_LOG_WARNING, "No HTTP headers in response");
	} else {
		jk_log(logger, JK_LOG_TRACE, "HTTP headers \r\n%s", plainHeaders.c_str());
	}

	plainHeaders.append("\r\n");
	const char * cHeaders = plainHeaders.c_str();

	if(!pfc->ServerSupportFunction (pfc, SF_REQ_SEND_RESPONSE_HEADER, (PVOID) statusLine, (DWORD) cHeaders, 0)) {
		DWORD dwError;
		dwError = GetLastError();
		jk_log(logger, JK_LOG_ERROR, "ServerSupportFunction[SF_REQ_SEND_RESPONSE_HEADER] failed = %d (%x)", dwError, dwError);
		return false;
	}
		
	return true;
}