ReactOS  0.4.12-dev-18-gf469aca
settings.c File Reference
#include "precomp.h"
Include dependency graph for settings.c:

Go to the source code of this file.

Functions

VOID SaveAllSettings (PINFO pInfo)
 
BOOL SetIntegerToSettings (PRDPSETTINGS pRdpSettings, LPWSTR lpKey, INT Value)
 
BOOL SetStringToSettings (PRDPSETTINGS pRdpSettings, LPWSTR lpKey, LPWSTR lpValue)
 
INT GetIntegerFromSettings (PRDPSETTINGS pRdpSettings, LPWSTR lpKey)
 
LPWSTR GetStringFromSettings (PRDPSETTINGS pRdpSettings, LPWSTR lpKey)
 
static BOOL WriteRdpFile (HANDLE hFile, PRDPSETTINGS pRdpSettings)
 
static VOID ParseSettings (PRDPSETTINGS pRdpSettings, LPWSTR lpBuffer)
 
static LPWSTR ReadRdpFile (HANDLE hFile)
 
static HANDLE OpenRdpFile (LPWSTR path, BOOL bWrite)
 
static VOID CloseRdpFile (HANDLE hFile)
 
BOOL SaveRdpSettingsToFile (LPWSTR lpFile, PRDPSETTINGS pRdpSettings)
 
BOOL LoadRdpSettingsFromFile (PRDPSETTINGS pRdpSettings, LPWSTR lpFile)
 
BOOL InitRdpSettings (PRDPSETTINGS pRdpSettings)
 

Variables

LPWSTR lpSettings [NUM_SETTINGS]
 

Function Documentation

◆ CloseRdpFile()

static VOID CloseRdpFile ( HANDLE  hFile)
static

Definition at line 362 of file settings.c.

Referenced by LoadRdpSettingsFromFile(), and SaveRdpSettingsToFile().

363 {
364  if (hFile)
365  CloseHandle(hFile);
366 }
#define CloseHandle
Definition: compat.h:398

◆ GetIntegerFromSettings()

INT GetIntegerFromSettings ( PRDPSETTINGS  pRdpSettings,
LPWSTR  lpKey 
)

Definition at line 144 of file settings.c.

Referenced by ReLoadDisplayPage(), and wWinMain().

146 {
147  INT Value = -1;
148 
149  if (pRdpSettings)
150  {
151  INT i;
152 
153  for (i = 0; i < pRdpSettings->NumSettings; i++)
154  {
155  if (wcscmp(pRdpSettings->pSettings[i].Key, lpKey) == 0)
156  {
157  if (pRdpSettings->pSettings[i].Type == L'i')
158  {
159  Value = pRdpSettings->pSettings[i].Value.i;
160  break;
161  }
162  }
163  }
164  }
165 
166  return Value;
167 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2327
int32_t INT
Definition: typedefs.h:56
GLenum GLclampf GLint i
Definition: glfuncs.h:14
union _SETTINGS::@13 Value
PSETTINGS pSettings
Definition: precomp.h:45
INT i
Definition: precomp.h:38
static const WCHAR L[]
Definition: oid.c:1087
static LPCTSTR lpKey
Definition: virtmem.c:13
WCHAR Type
Definition: precomp.h:36
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
WCHAR Key[MAXKEY]
Definition: precomp.h:35
INT NumSettings
Definition: precomp.h:46

◆ GetStringFromSettings()

LPWSTR GetStringFromSettings ( PRDPSETTINGS  pRdpSettings,
LPWSTR  lpKey 
)

Definition at line 171 of file settings.c.

Referenced by ReLoadGeneralPage(), and wWinMain().

173 {
174  LPWSTR lpValue = NULL;
175 
176  if (pRdpSettings)
177  {
178  INT i;
179 
180  for (i = 0; i < pRdpSettings->NumSettings; i++)
181  {
182  if (wcscmp(pRdpSettings->pSettings[i].Key, lpKey) == 0)
183  {
184  if (pRdpSettings->pSettings[i].Type == L's')
185  {
186  lpValue = pRdpSettings->pSettings[i].Value.s;
187  break;
188  }
189  }
190  }
191  }
192 
193  return lpValue;
194 }
int32_t INT
Definition: typedefs.h:56
GLenum GLclampf GLint i
Definition: glfuncs.h:14
smooth NULL
Definition: ftsmooth.c:416
union _SETTINGS::@13 Value
PSETTINGS pSettings
Definition: precomp.h:45
static const WCHAR L[]
Definition: oid.c:1087
static LPCTSTR lpKey
Definition: virtmem.c:13
WCHAR Type
Definition: precomp.h:36
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
WCHAR Key[MAXKEY]
Definition: precomp.h:35
INT NumSettings
Definition: precomp.h:46
WCHAR * LPWSTR
Definition: xmlstorage.h:184
WCHAR s[MAXVALUE]
Definition: precomp.h:39

◆ InitRdpSettings()

BOOL InitRdpSettings ( PRDPSETTINGS  pRdpSettings)

Definition at line 475 of file settings.c.

Referenced by wWinMain().

476 {
477  BOOL bRet = FALSE;
478 
479  pRdpSettings->pSettings = HeapAlloc(GetProcessHeap(),
480  0,
481  sizeof(SETTINGS) * NUM_SETTINGS);
482  if (pRdpSettings->pSettings)
483  {
484  INT i;
485 
486  for (i = 0; i < NUM_SETTINGS; i++)
487  {
488  wcscpy(pRdpSettings->pSettings[i].Key, lpSettings[i]);
489  pRdpSettings->pSettings[i].Type = (WCHAR)0;
490  pRdpSettings->pSettings[i].Value.i = 0;
491  }
492 
493  pRdpSettings->NumSettings = NUM_SETTINGS;
494 
495  bRet = TRUE;
496  }
497 
498  return bRet;
499 }
#define TRUE
Definition: types.h:120
LPWSTR lpSettings[NUM_SETTINGS]
Definition: settings.c:5
#define WCHAR
Definition: msvc.h:43
int32_t INT
Definition: typedefs.h:56
GLenum GLclampf GLint i
Definition: glfuncs.h:14
#define NUM_SETTINGS
Definition: precomp.h:30
union _SETTINGS::@13 Value
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
PSETTINGS pSettings
Definition: precomp.h:45
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
INT i
Definition: precomp.h:38
WCHAR Type
Definition: precomp.h:36
WCHAR Key[MAXKEY]
Definition: precomp.h:35
INT NumSettings
Definition: precomp.h:46

◆ LoadRdpSettingsFromFile()

BOOL LoadRdpSettingsFromFile ( PRDPSETTINGS  pRdpSettings,
LPWSTR  lpFile 
)

Definition at line 418 of file settings.c.

Referenced by DoOpenFile(), ParseCommandLine(), and wWinMain().

420 {
421  WCHAR pszPath[MAX_PATH];
422  HANDLE hFile;
423  BOOL bRet = FALSE;
424 
425  /* use default file */
426  if (lpFile == NULL)
427  {
428  HRESULT hr;
429  LPITEMIDLIST lpidl= NULL;
430 
433  NULL,
434  0,
435  &lpidl);
436  if (hr == S_OK)
437  {
438  if (SHGetPathFromIDListW(lpidl, pszPath))
439  {
440  wcscat(pszPath, L"\\Default.rdp");
441  lpFile = pszPath;
442  CoTaskMemFree(lpidl);
443  }
444  }
445  }
446 
447  if (lpFile)
448  {
449  LPWSTR lpBuffer = NULL;
450 
451  hFile = OpenRdpFile(lpFile, FALSE);
452  if (hFile)
453  {
454  lpBuffer = ReadRdpFile(hFile);
455  if (lpBuffer)
456  {
457  ParseSettings(pRdpSettings, lpBuffer);
458 
460  0,
461  lpBuffer);
462 
463  bRet = TRUE;
464  }
465 
466  CloseRdpFile(hFile);
467  }
468  }
469 
470  return bRet;
471 }
#define TRUE
Definition: types.h:120
static LPWSTR ReadRdpFile(HANDLE hFile)
Definition: settings.c:300
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:422
__wchar_t WCHAR
Definition: xmlstorage.h:180
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1280
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:163
static HANDLE OpenRdpFile(LPWSTR path, BOOL bWrite)
Definition: settings.c:342
smooth NULL
Definition: ftsmooth.c:416
static VOID CloseRdpFile(HANDLE hFile)
Definition: settings.c:362
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GetProcessHeap()
Definition: compat.h:395
LONG HRESULT
Definition: typedefs.h:77
#define MAX_PATH
Definition: compat.h:26
static const WCHAR L[]
Definition: oid.c:1087
_In_ HANDLE hFile
Definition: mswsock.h:90
static VOID ParseSettings(PRDPSETTINGS pRdpSettings, LPWSTR lpBuffer)
Definition: settings.c:244
#define S_OK
Definition: intsafe.h:59
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define CSIDL_PERSONAL
Definition: shlobj.h:1881
HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl)
Definition: shellpath.c:2598
WCHAR * LPWSTR
Definition: xmlstorage.h:184
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
#define HeapFree(x, y, z)
Definition: compat.h:394

◆ OpenRdpFile()

static HANDLE OpenRdpFile ( LPWSTR  path,
BOOL  bWrite 
)
static

Definition at line 342 of file settings.c.

Referenced by LoadRdpSettingsFromFile(), and SaveRdpSettingsToFile().

343 {
344  HANDLE hFile = NULL;
345 
346  if (path)
347  {
348  hFile = CreateFileW(path,
349  bWrite ? GENERIC_WRITE : GENERIC_READ,
350  0,
351  NULL,
352  bWrite ? CREATE_ALWAYS : OPEN_EXISTING,
354  NULL);
355  }
356 
357  return hFile;
358 }
#define GENERIC_WRITE
Definition: nt_native.h:90
smooth NULL
Definition: ftsmooth.c:416
#define OPEN_EXISTING
Definition: compat.h:426
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:126
#define GENERIC_READ
Definition: compat.h:124
_In_ HANDLE hFile
Definition: mswsock.h:90
#define CREATE_ALWAYS
Definition: disk.h:72
Definition: services.c:325
#define FILE_ATTRIBUTE_HIDDEN
Definition: nt_native.h:703
#define CreateFileW
Definition: compat.h:400

◆ ParseSettings()

static VOID ParseSettings ( PRDPSETTINGS  pRdpSettings,
LPWSTR  lpBuffer 
)
static

Definition at line 244 of file settings.c.

Referenced by LoadRdpSettingsFromFile().

246 {
247  LPWSTR lpStr = lpBuffer;
248  WCHAR szSeps[] = L":\r\n";
249  WCHAR szNewline[] = L"\r\n";
250  LPWSTR lpToken;
251  BOOL bFound;
252  INT i;
253 
254  /* move past unicode byte order */
255  if (lpStr[0] == 0xFEFF || lpStr[0] == 0xFFFE)
256  lpStr += 1;
257 
258  lpToken = wcstok(lpStr, szSeps);
259  while (lpToken)
260  {
261  bFound = FALSE;
262 
263  for (i = 0; i < pRdpSettings->NumSettings && !bFound; i++)
264  {
265  if (wcscmp(lpToken, pRdpSettings->pSettings[i].Key) == 0)
266  {
267  lpToken = wcstok(NULL, szSeps);
268  if (lpToken[0] == L'i')
269  {
270  pRdpSettings->pSettings[i].Type = lpToken[0];
271  lpToken = wcstok(NULL, szSeps);
272  if (lpToken != NULL)
273  pRdpSettings->pSettings[i].Value.i = _wtoi(lpToken);
274  }
275  else if (lpToken[0] == L's')
276  {
277  pRdpSettings->pSettings[i].Type = lpToken[0];
278  if (lpToken[2] == 13 || lpToken[2] == 10 || lpToken[2] == 0)
279  lpToken[0] = 0; // terminate string
280  else
281  lpToken = wcstok(NULL, szNewline);
282  if (lpToken != NULL)
283  wcscpy(pRdpSettings->pSettings[i].Value.s, lpToken);
284  }
285  bFound = TRUE;
286  }
287  }
288 
289  /* move past the type and value */
290  if (!bFound)
291  lpToken = wcstok(NULL, szNewline);
292 
293  /* move to next key */
294  lpToken = wcstok(NULL, szSeps);
295  }
296 }
#define TRUE
Definition: types.h:120
__wchar_t WCHAR
Definition: xmlstorage.h:180
_Check_return_ _CRTIMP int __cdecl _wtoi(_In_z_ const wchar_t *_Str)
_Check_return_ _CRTIMP wchar_t *__cdecl wcstok(_Inout_opt_z_ wchar_t *_Str, _In_z_ const wchar_t *_Delim)
int32_t INT
Definition: typedefs.h:56
GLenum GLclampf GLint i
Definition: glfuncs.h:14
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:163
smooth NULL
Definition: ftsmooth.c:416
union _SETTINGS::@13 Value
unsigned int BOOL
Definition: ntddk_ex.h:94
PSETTINGS pSettings
Definition: precomp.h:45
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
INT i
Definition: precomp.h:38
static const WCHAR L[]
Definition: oid.c:1087
WCHAR Type
Definition: precomp.h:36
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
WCHAR Key[MAXKEY]
Definition: precomp.h:35
INT NumSettings
Definition: precomp.h:46
WCHAR * LPWSTR
Definition: xmlstorage.h:184
WCHAR s[MAXVALUE]
Definition: precomp.h:39

◆ ReadRdpFile()

static LPWSTR ReadRdpFile ( HANDLE  hFile)
static

Definition at line 300 of file settings.c.

Referenced by LoadRdpSettingsFromFile().

301 {
302  LPWSTR lpBuffer = NULL;
303  DWORD BytesToRead, BytesRead;
304  BOOL bRes;
305 
306  if (hFile)
307  {
308  BytesToRead = GetFileSize(hFile, NULL);
309  if (BytesToRead)
310  {
311  lpBuffer = HeapAlloc(GetProcessHeap(),
312  0,
313  BytesToRead + 2);
314  if (lpBuffer)
315  {
316  bRes = ReadFile(hFile,
317  lpBuffer,
318  BytesToRead,
319  &BytesRead,
320  NULL);
321  if (bRes)
322  {
323  lpBuffer[BytesRead / 2] = 0;
324  }
325  else
326  {
328  0,
329  lpBuffer);
330 
331  lpBuffer = NULL;
332  }
333  }
334  }
335  }
336 
337  return lpBuffer;
338 }
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:163
smooth NULL
Definition: ftsmooth.c:416
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD WINAPI GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
Definition: fileinfo.c:481
WCHAR * LPWSTR
Definition: xmlstorage.h:184
BOOL WINAPI ReadFile(IN HANDLE hFile, IN LPVOID lpBuffer, IN DWORD nNumberOfBytesToRead, OUT LPDWORD lpNumberOfBytesRead OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:123
#define HeapFree(x, y, z)
Definition: compat.h:394
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ FLT_IO_OPERATION_FLAGS _Out_opt_ PULONG BytesRead
Definition: fltkernel.h:1255

◆ SaveAllSettings()

VOID SaveAllSettings ( PINFO  pInfo)

Definition at line 16 of file settings.c.

Referenced by DlgProc(), DoSaveAs(), and GeneralDlgProc().

17 {
18  INT ret;
19  WCHAR szValue[MAXVALUE];
20 
21  /* server */
22  if (GetDlgItemText(pInfo->hGeneralPage,
24  szValue,
25  MAXVALUE))
26  {
28  L"full address",
29  szValue);
30  }
31 
32  /* resolution and fullscreen*/
33  ret = SendDlgItemMessage(pInfo->hDisplayPage,
35  TBM_GETPOS,
36  0,
37  0);
38  if (ret != -1)
39  {
41  L"screen mode id",
42  (ret == SendDlgItemMessageW(pInfo->hDisplayPage, IDC_GEOSLIDER, TBM_GETRANGEMAX, 0, 0)) ? 2 : 1);
44  L"desktopwidth",
47  L"desktopheight",
49  }
50 
51  /* bpp */
52  ret = SendDlgItemMessage(pInfo->hDisplayPage,
55  0,
56  0);
57  if (ret != CB_ERR)
58  {
59  ret = SendDlgItemMessage(pInfo->hDisplayPage,
62  ret,
63  0);
64  if (ret != CB_ERR)
65  {
67  L"session bpp",
68  ret);
69  }
70  }
71 
72  /* user name */
73  if (GetDlgItemText(pInfo->hGeneralPage,
75  szValue,
76  MAXVALUE))
77  {
79  L"username",
80  szValue);
81  }
82 }
BOOL SetIntegerToSettings(PRDPSETTINGS pRdpSettings, LPWSTR lpKey, INT Value)
Definition: settings.c:86
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define CB_GETITEMDATA
Definition: winuser.h:1911
#define TBM_GETRANGEMAX
Definition: commctrl.h:2003
#define IDC_NAMEEDIT
Definition: resource.h:22
#define SendDlgItemMessage
Definition: winuser.h:5708
PDISPLAY_DEVICE_ENTRY DisplayDeviceList
Definition: precomp.h:86
int32_t INT
Definition: typedefs.h:56
BOOL SetStringToSettings(PRDPSETTINGS pRdpSettings, LPWSTR lpKey, LPWSTR lpValue)
Definition: settings.c:115
HWND hGeneralPage
Definition: precomp.h:90
#define CB_GETCURSEL
Definition: winuser.h:1904
#define TBM_GETPOS
Definition: commctrl.h:2001
#define IDC_GEOSLIDER
Definition: resource.h:19
#define CB_ERR
Definition: winuser.h:2389
PRDPSETTINGS pRdpSettings
Definition: precomp.h:85
#define GetDlgItemText
Definition: winuser.h:5651
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define IDC_SERVERCOMBO
Definition: resource.h:15
int ret
static const WCHAR L[]
Definition: oid.c:1087
#define IDC_BPPCOMBO
Definition: resource.h:20
DWORD dmPelsWidth
Definition: precomp.h:54
PRESOLUTION_INFO Resolutions
Definition: precomp.h:77
DWORD dmPelsHeight
Definition: precomp.h:55
HWND hDisplayPage
Definition: precomp.h:91
#define MAXVALUE
Definition: precomp.h:29

◆ SaveRdpSettingsToFile()

BOOL SaveRdpSettingsToFile ( LPWSTR  lpFile,
PRDPSETTINGS  pRdpSettings 
)

Definition at line 370 of file settings.c.

Referenced by DlgProc(), DoSaveAs(), and GeneralDlgProc().

372 {
373  WCHAR pszPath[MAX_PATH];
374  HANDLE hFile;
375  BOOL bRet = FALSE;
376 
377  /* use default file */
378  if (lpFile == NULL)
379  {
380  HRESULT hr;
381  LPITEMIDLIST lpidl= NULL;
382 
385  NULL,
386  0,
387  &lpidl);
388  if (hr == S_OK)
389  {
390  if (SHGetPathFromIDListW(lpidl, pszPath))
391  {
392  wcscat(pszPath, L"\\Default.rdp");
393  lpFile = pszPath;
394  CoTaskMemFree(lpidl);
395  }
396  }
397  }
398 
399  if (lpFile)
400  {
401  hFile = OpenRdpFile(lpFile, TRUE);
402  if (hFile)
403  {
404  if (WriteRdpFile(hFile, pRdpSettings))
405  {
406  bRet = TRUE;
407  }
408 
409  CloseRdpFile(hFile);
410  }
411  }
412 
413  return bRet;
414 }
#define TRUE
Definition: types.h:120
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:422
__wchar_t WCHAR
Definition: xmlstorage.h:180
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1280
static HANDLE OpenRdpFile(LPWSTR path, BOOL bWrite)
Definition: settings.c:342
smooth NULL
Definition: ftsmooth.c:416
static VOID CloseRdpFile(HANDLE hFile)
Definition: settings.c:362
unsigned int BOOL
Definition: ntddk_ex.h:94
LONG HRESULT
Definition: typedefs.h:77
#define MAX_PATH
Definition: compat.h:26
static const WCHAR L[]
Definition: oid.c:1087
_In_ HANDLE hFile
Definition: mswsock.h:90
#define S_OK
Definition: intsafe.h:59
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static BOOL WriteRdpFile(HANDLE hFile, PRDPSETTINGS pRdpSettings)
Definition: settings.c:198
#define CSIDL_PERSONAL
Definition: shlobj.h:1881
HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl)
Definition: shellpath.c:2598
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41

◆ SetIntegerToSettings()

BOOL SetIntegerToSettings ( PRDPSETTINGS  pRdpSettings,
LPWSTR  lpKey,
INT  Value 
)

Definition at line 86 of file settings.c.

Referenced by ParseCommandLine(), and SaveAllSettings().

89 {
90  BOOL bRet = FALSE;
91 
92  if (pRdpSettings)
93  {
94  INT i;
95 
96  for (i = 0; i < pRdpSettings->NumSettings; i++)
97  {
98  if (wcscmp(pRdpSettings->pSettings[i].Key, lpKey) == 0)
99  {
100  if (pRdpSettings->pSettings[i].Type == 0)
101  pRdpSettings->pSettings[i].Type = L'i';
102 
103  pRdpSettings->pSettings[i].Value.i = Value;
104  bRet = TRUE;
105  break;
106  }
107  }
108  }
109 
110  return bRet;
111 }
_In_opt_ ULONG _Out_ PULONG Value
Definition: rtlfuncs.h:2327
#define TRUE
Definition: types.h:120
int32_t INT
Definition: typedefs.h:56
GLenum GLclampf GLint i
Definition: glfuncs.h:14
union _SETTINGS::@13 Value
unsigned int BOOL
Definition: ntddk_ex.h:94
PSETTINGS pSettings
Definition: precomp.h:45
INT i
Definition: precomp.h:38
static const WCHAR L[]
Definition: oid.c:1087
static LPCTSTR lpKey
Definition: virtmem.c:13
WCHAR Type
Definition: precomp.h:36
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
WCHAR Key[MAXKEY]
Definition: precomp.h:35
INT NumSettings
Definition: precomp.h:46

◆ SetStringToSettings()

BOOL SetStringToSettings ( PRDPSETTINGS  pRdpSettings,
LPWSTR  lpKey,
LPWSTR  lpValue 
)

Definition at line 115 of file settings.c.

Referenced by ParseCommandLine(), and SaveAllSettings().

118 {
119  BOOL bRet = FALSE;
120 
121  if (pRdpSettings)
122  {
123  INT i;
124 
125  for (i = 0; i < pRdpSettings->NumSettings; i++)
126  {
127  if (wcscmp(pRdpSettings->pSettings[i].Key, lpKey) == 0)
128  {
129  if (pRdpSettings->pSettings[i].Type == 0)
130  pRdpSettings->pSettings[i].Type = L's';
131 
132  wcscpy(pRdpSettings->pSettings[i].Value.s, lpValue);
133  bRet = TRUE;
134  break;
135  }
136  }
137  }
138 
139  return bRet;
140 }
#define TRUE
Definition: types.h:120
int32_t INT
Definition: typedefs.h:56
GLenum GLclampf GLint i
Definition: glfuncs.h:14
union _SETTINGS::@13 Value
unsigned int BOOL
Definition: ntddk_ex.h:94
PSETTINGS pSettings
Definition: precomp.h:45
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const WCHAR L[]
Definition: oid.c:1087
static LPCTSTR lpKey
Definition: virtmem.c:13
WCHAR Type
Definition: precomp.h:36
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
WCHAR Key[MAXKEY]
Definition: precomp.h:35
INT NumSettings
Definition: precomp.h:46
WCHAR s[MAXVALUE]
Definition: precomp.h:39

◆ WriteRdpFile()

static BOOL WriteRdpFile ( HANDLE  hFile,
PRDPSETTINGS  pRdpSettings 
)
static

Definition at line 198 of file settings.c.

Referenced by SaveRdpSettingsToFile().

200 {
201  WCHAR line[MAXKEY + MAXVALUE + 4];
202  DWORD BytesToWrite, BytesWritten;
203  BOOL bRet;
204  INT i, k;
205 
206  for (i = 0; i < pRdpSettings->NumSettings; i++)
207  {
208  /* only write out values in the lpSettings struct */
209  for (k = 0; k < NUM_SETTINGS; k++)
210  {
211  if (wcscmp(lpSettings[k], pRdpSettings->pSettings[i].Key) == 0)
212  {
213  if (pRdpSettings->pSettings[i].Type == L'i')
214  {
215  _snwprintf(line, MAXKEY + MAXVALUE + 4, L"%s:i:%d\r\n",
216  pRdpSettings->pSettings[i].Key,
217  pRdpSettings->pSettings[i].Value.i);
218  }
219  else
220  {
221  _snwprintf(line, MAXKEY + MAXVALUE + 4, L"%s:s:%s\r\n",
222  pRdpSettings->pSettings[i].Key,
223  pRdpSettings->pSettings[i].Value.s);
224  }
225 
226  BytesToWrite = wcslen(line) * sizeof(WCHAR);
227 
228  bRet = WriteFile(hFile,
229  line,
230  BytesToWrite,
231  &BytesWritten,
232  NULL);
233  if (!bRet || BytesWritten == 0)
234  return FALSE;
235  }
236  }
237  }
238 
239  return TRUE;
240 }
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ FLT_IO_OPERATION_FLAGS _Out_opt_ PULONG BytesWritten
Definition: fltkernel.h:1293
#define TRUE
Definition: types.h:120
__wchar_t WCHAR
Definition: xmlstorage.h:180
LPWSTR lpSettings[NUM_SETTINGS]
Definition: settings.c:5
#define WCHAR
Definition: msvc.h:43
int32_t INT
Definition: typedefs.h:56
GLenum GLclampf GLint i
Definition: glfuncs.h:14
#define NUM_SETTINGS
Definition: precomp.h:30
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
smooth NULL
Definition: ftsmooth.c:416
union _SETTINGS::@13 Value
Definition: parser.c:48
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:24
unsigned int BOOL
Definition: ntddk_ex.h:94
PSETTINGS pSettings
Definition: precomp.h:45
#define MAXKEY
Definition: precomp.h:28
unsigned long DWORD
Definition: ntddk_ex.h:95
INT i
Definition: precomp.h:38
static const WCHAR L[]
Definition: oid.c:1087
WCHAR Type
Definition: precomp.h:36
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
WCHAR Key[MAXKEY]
Definition: precomp.h:35
INT NumSettings
Definition: precomp.h:46
#define MAXVALUE
Definition: precomp.h:29
WCHAR s[MAXVALUE]
Definition: precomp.h:39
int k
Definition: mpi.c:3369
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)

Variable Documentation

◆ lpSettings

LPWSTR lpSettings[NUM_SETTINGS]
Initial value:
=
{
L"desktopwidth",
L"desktopheight",
L"session bpp",
L"full address",
L"username",
L"screen mode id",
}
static const WCHAR L[]
Definition: oid.c:1087

Definition at line 5 of file settings.c.

Referenced by InitRdpSettings(), and WriteRdpFile().