FreeRDP
Loading...
Searching...
No Matches
environment.h
1
22#ifndef WINPR_ENVIRONMENT_H
23#define WINPR_ENVIRONMENT_H
24
25#include <winpr/winpr.h>
26#include <winpr/wtypes.h>
27
28#ifndef _WIN32
29
30#ifdef __cplusplus
31extern "C"
32{
33#endif
34
35 WINPR_ATTR_NODISCARD
36 WINPR_API DWORD GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer);
37
38 WINPR_ATTR_NODISCARD
39 WINPR_API DWORD GetCurrentDirectoryW(DWORD nBufferLength, LPWSTR lpBuffer);
40
41 WINPR_ATTR_NODISCARD
42 WINPR_API BOOL SetCurrentDirectoryA(LPCSTR lpPathName);
43
44 WINPR_ATTR_NODISCARD
45 WINPR_API BOOL SetCurrentDirectoryW(LPCWSTR lpPathName);
46
47 WINPR_ATTR_NODISCARD
48 WINPR_API DWORD SearchPathA(LPCSTR lpPath, LPCSTR lpFileName, LPCSTR lpExtension,
49 DWORD nBufferLength, LPSTR lpBuffer, LPSTR* lpFilePart);
50
51 WINPR_ATTR_NODISCARD
52 WINPR_API DWORD SearchPathW(LPCWSTR lpPath, LPCWSTR lpFileName, LPCWSTR lpExtension,
53 DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR* lpFilePart);
54
55 WINPR_ATTR_NODISCARD
56 WINPR_API LPSTR GetCommandLineA(VOID);
57
58 WINPR_ATTR_NODISCARD
59 WINPR_API LPWSTR GetCommandLineW(VOID);
60
61 WINPR_ATTR_NODISCARD
62 WINPR_API BOOL NeedCurrentDirectoryForExePathA(LPCSTR ExeName);
63
64 WINPR_ATTR_NODISCARD
65 WINPR_API BOOL NeedCurrentDirectoryForExePathW(LPCWSTR ExeName);
66
67#ifdef __cplusplus
68}
69#endif
70
71#ifdef UNICODE
72#define GetCurrentDirectory GetCurrentDirectoryW
73#define SetCurrentDirectory SetCurrentDirectoryW
74#define SearchPath SearchPathW
75#define GetCommandLine GetCommandLineW
76#define NeedCurrentDirectoryForExePath NeedCurrentDirectoryForExePathW
77#else
78#define GetCurrentDirectory GetCurrentDirectoryA
79#define SetCurrentDirectory SetCurrentDirectoryA
80#define SearchPath SearchPathA
81#define GetCommandLine GetCommandLineA
82#define NeedCurrentDirectoryForExePath NeedCurrentDirectoryForExePathA
83#endif
84
85#endif
86
87#if !defined(_WIN32) || defined(_UWP)
88
89#ifdef __cplusplus
90extern "C"
91{
92#endif
93
94 WINPR_ATTR_NODISCARD
95 WINPR_API DWORD GetEnvironmentVariableA(LPCSTR lpName, LPSTR lpBuffer, DWORD nSize);
96 WINPR_ATTR_NODISCARD
97 WINPR_API DWORD GetEnvironmentVariableW(LPCWSTR lpName, LPWSTR lpBuffer, DWORD nSize);
98
99 WINPR_API BOOL SetEnvironmentVariableA(LPCSTR lpName, LPCSTR lpValue);
100
101 WINPR_API BOOL SetEnvironmentVariableW(LPCWSTR lpName, LPCWSTR lpValue);
102
108 WINPR_API BOOL FreeEnvironmentStringsA(LPCH lpszEnvironmentBlock);
109
110 WINPR_API BOOL FreeEnvironmentStringsW(LPWCH lpszEnvironmentBlock);
111
112 WINPR_ATTR_MALLOC(FreeEnvironmentStringsA, 1)
113 WINPR_API LPCH GetEnvironmentStrings(VOID);
114
115 WINPR_ATTR_MALLOC(FreeEnvironmentStringsW, 1)
116 WINPR_API LPWCH GetEnvironmentStringsW(VOID);
117
118 WINPR_ATTR_NODISCARD
119 WINPR_API BOOL SetEnvironmentStringsA(LPCH NewEnvironment);
120
121 WINPR_ATTR_NODISCARD
122 WINPR_API BOOL SetEnvironmentStringsW(LPWCH NewEnvironment);
123
124 WINPR_ATTR_NODISCARD
125 WINPR_API DWORD ExpandEnvironmentStringsA(LPCSTR lpSrc, LPSTR lpDst, DWORD nSize);
126
127 WINPR_ATTR_NODISCARD
128 WINPR_API DWORD ExpandEnvironmentStringsW(LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize);
129
130#ifdef __cplusplus
131}
132#endif
133
134#ifdef UNICODE
135#define GetEnvironmentVariable GetEnvironmentVariableW
136#define SetEnvironmentVariable SetEnvironmentVariableW
137#define GetEnvironmentStrings GetEnvironmentStringsW
138#define SetEnvironmentStrings SetEnvironmentStringsW
139#define ExpandEnvironmentStrings ExpandEnvironmentStringsW
140#define FreeEnvironmentStrings FreeEnvironmentStringsW
141#else
142#define GetEnvironmentVariable GetEnvironmentVariableA
143#define SetEnvironmentVariable SetEnvironmentVariableA
144#define GetEnvironmentStringsA GetEnvironmentStrings
145#define SetEnvironmentStrings SetEnvironmentStringsA
146#define ExpandEnvironmentStrings ExpandEnvironmentStringsA
147#define FreeEnvironmentStrings FreeEnvironmentStringsA
148#endif
149
150#endif
151
152#ifdef __cplusplus
153extern "C"
154{
155#endif
156
157 WINPR_ATTR_MALLOC(free, 1)
158 WINPR_API LPCH MergeEnvironmentStrings(PCSTR original, PCSTR merge);
159
160 WINPR_ATTR_NODISCARD
161 WINPR_API DWORD GetEnvironmentVariableEBA(LPCSTR envBlock, LPCSTR lpName, LPSTR lpBuffer,
162 DWORD nSize);
163 WINPR_ATTR_NODISCARD
164 WINPR_API BOOL SetEnvironmentVariableEBA(LPSTR* envBlock, LPCSTR lpName, LPCSTR lpValue);
165
166 WINPR_ATTR_MALLOC(free, 1)
167 WINPR_API char** EnvironmentBlockToEnvpA(LPCH lpszEnvironmentBlock);
168
169 WINPR_ATTR_NODISCARD
170 WINPR_API DWORD GetEnvironmentVariableX(const char* lpName, char* lpBuffer, DWORD nSize);
171
172 WINPR_ATTR_MALLOC(free, 1)
173 WINPR_API char* GetEnvAlloc(LPCSTR lpName);
174
175#ifdef __cplusplus
176}
177#endif
178
179#endif /* WINPR_ENVIRONMENT_H */