1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
|
/************************************************************************
* Copyright (c) Wonderware Software Development Corp. 1991-1993. *
* All Rights Reserved. *
* Copyright (c) Microsoft Inc. 1995-1996 *
* All Rights Reserved. *
************************************************************************/
#ifndef _INC_NDDEAPI
#define _INC_NDDEAPI
#include <pshpack1.h> /* Assume byte packing throughout */
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
#ifndef CNLEN /* If not included with netapi header */
#define CNLEN 15 /* Computer name length */
#define UNCLEN (CNLEN+2) /* UNC computer name length */
#endif /* CNLEN */
// the choice of this char affects legal share,topic, etc. names
#define SEP_CHAR ','
#define BAR_CHAR "|"
#define SEP_WCHAR L','
#define BAR_WCHAR L"|"
/* API error codes */
#define NDDE_NO_ERROR 0
#define NDDE_ACCESS_DENIED 1
#define NDDE_BUF_TOO_SMALL 2
#define NDDE_ERROR_MORE_DATA 3
#define NDDE_INVALID_SERVER 4
#define NDDE_INVALID_SHARE 5
#define NDDE_INVALID_PARAMETER 6
#define NDDE_INVALID_LEVEL 7
#define NDDE_INVALID_PASSWORD 8
#define NDDE_INVALID_ITEMNAME 9
#define NDDE_INVALID_TOPIC 10
#define NDDE_INTERNAL_ERROR 11
#define NDDE_OUT_OF_MEMORY 12
#define NDDE_INVALID_APPNAME 13
#define NDDE_NOT_IMPLEMENTED 14
#define NDDE_SHARE_ALREADY_EXIST 15
#define NDDE_SHARE_NOT_EXIST 16
#define NDDE_INVALID_FILENAME 17
#define NDDE_NOT_RUNNING 18
#define NDDE_INVALID_WINDOW 19
#define NDDE_INVALID_SESSION 20
#define NDDE_INVALID_ITEM_LIST 21
#define NDDE_SHARE_DATA_CORRUPTED 22
#define NDDE_REGISTRY_ERROR 23
#define NDDE_CANT_ACCESS_SERVER 24
#define NDDE_INVALID_SPECIAL_COMMAND 25
#define NDDE_INVALID_SECURITY_DESC 26
#define NDDE_TRUST_SHARE_FAIL 27
/* string size constants */
#define MAX_NDDESHARENAME 256
#define MAX_DOMAINNAME 15
#define MAX_USERNAME 15
#define MAX_APPNAME 255
#define MAX_TOPICNAME 255
#define MAX_ITEMNAME 255
/* connectFlags bits for ndde service affix */
#define NDDEF_NOPASSWORDPROMPT 0x0001
#define NDDEF_NOCACHELOOKUP 0x0002
#define NDDEF_STRIP_NDDE 0x0004
/* NDDESHAREINFO - contains information about a NDDE share */
struct NDdeShareInfo_tag {
LONG lRevision;
LPTSTR lpszShareName;
LONG lShareType;
LPTSTR lpszAppTopicList;
LONG fSharedFlag;
LONG fService;
LONG fStartAppFlag;
LONG nCmdShow;
LONG qModifyId[2];
LONG cNumItems;
LPTSTR lpszItemList;
};
typedef struct NDdeShareInfo_tag NDDESHAREINFO;
typedef struct NDdeShareInfo_tag * PNDDESHAREINFO;
/* Share Types */
#define SHARE_TYPE_OLD 0x01 // Excel|sheet1.xls
#define SHARE_TYPE_NEW 0x02 // ExcelWorksheet|sheet1.xls
#define SHARE_TYPE_STATIC 0x04 // ClipSrv|SalesData
/*
Add new share
*/
UINT WINAPI
NDdeShareAddA (
LPSTR lpszServer, // server to execute on ( must be NULL )
UINT nLevel, // info level must be 2
PSECURITY_DESCRIPTOR pSD, // initial security descriptor (optional)
LPBYTE lpBuffer, // contains (NDDESHAREINFO) + data
DWORD cBufSize // sizeof supplied buffer
);
UINT WINAPI
NDdeShareAddW (
LPWSTR lpszServer, // server to execute on ( must be NULL )
UINT nLevel, // info level must be 2
PSECURITY_DESCRIPTOR pSD, // initial security descriptor (optional)
LPBYTE lpBuffer, // contains (NDDESHAREINFO) + data
DWORD cBufSize // sizeof supplied buffer
);
/*
Delete a share
*/
UINT WINAPI
NDdeShareDelA (
LPSTR lpszServer, // server to execute on ( must be NULL )
LPSTR lpszShareName, // name of share to delete
UINT wReserved // reserved for force level (?) 0 for now
);
UINT WINAPI
NDdeShareDelW (
LPWSTR lpszServer, // server to execute on ( must be NULL )
LPWSTR lpszShareName, // name of share to delete
UINT wReserved // reserved for force level (?) 0 for now
);
/*
Get Share Security Descriptor
*/
UINT WINAPI
NDdeGetShareSecurityA(
LPSTR lpszServer, // server to execute on ( must be NULL )
LPSTR lpszShareName, // name of share to delete
SECURITY_INFORMATION si, // requested information
PSECURITY_DESCRIPTOR pSD, // address of security descriptor
DWORD cbSD, // size of buffer for security descriptor
LPDWORD lpcbsdRequired // address of required size of buffer
);
UINT WINAPI
NDdeGetShareSecurityW(
LPWSTR lpszServer, // server to execute on ( must be NULL )
LPWSTR lpszShareName, // name of share to delete
SECURITY_INFORMATION si, // requested information
PSECURITY_DESCRIPTOR pSD, // address of security descriptor
DWORD cbSD, // size of buffer for security descriptor
LPDWORD lpcbsdRequired // address of required size of buffer
);
/*
Set Share Security Descriptor
*/
UINT WINAPI
NDdeSetShareSecurityA(
LPSTR lpszServer, // server to execute on ( must be NULL )
LPSTR lpszShareName, // name of share to delete
SECURITY_INFORMATION si, // type of information to set
PSECURITY_DESCRIPTOR pSD // address of security descriptor
);
UINT WINAPI
NDdeSetShareSecurityW(
LPWSTR lpszServer, // server to execute on ( must be NULL )
LPWSTR lpszShareName, // name of share to delete
SECURITY_INFORMATION si, // type of information to set
PSECURITY_DESCRIPTOR pSD // address of security descriptor
);
/*
Enumerate shares
*/
UINT WINAPI
NDdeShareEnumA (
LPSTR lpszServer, // server to execute on ( NULL for local )
UINT nLevel, // 0 for null separated 00 terminated list
LPBYTE lpBuffer, // pointer to buffer
DWORD cBufSize, // size of buffer
LPDWORD lpnEntriesRead, // number of names returned
LPDWORD lpcbTotalAvailable // number of bytes available
);
UINT WINAPI
NDdeShareEnumW (
LPWSTR lpszServer, // server to execute on ( NULL for local )
UINT nLevel, // 0 for null separated 00 terminated list
LPBYTE lpBuffer, // pointer to buffer
DWORD cBufSize, // size of buffer
LPDWORD lpnEntriesRead, // number of names returned
LPDWORD lpcbTotalAvailable // number of bytes available
);
/*
Get information on a share
*/
UINT WINAPI
NDdeShareGetInfoA (
LPSTR lpszServer, // server to execute on ( must be NULL )
LPSTR lpszShareName, // name of share
UINT nLevel, // info level must be 2
LPBYTE lpBuffer, // gets struct containing (NDDESHAREINFO) + data
DWORD cBufSize, // sizeof buffer
LPDWORD lpnTotalAvailable, // number of bytes available
LPWORD lpnItems // item mask for partial getinfo (must be 0)
);
UINT WINAPI
NDdeShareGetInfoW (
LPWSTR lpszServer, // server to execute on ( must be NULL )
LPWSTR lpszShareName, // name of share
UINT nLevel, // info level must be 2
LPBYTE lpBuffer, // gets struct containing (NDDESHAREINFO) + data
DWORD cBufSize, // sizeof buffer
LPDWORD lpnTotalAvailable, // number of bytes available
LPWORD lpnItems // item mask for partial getinfo (must be 0)
);
/*
Modify DDE share data
*/
UINT WINAPI
NDdeShareSetInfoA (
LPSTR lpszServer, // server to execute on ( must be NULL )
LPSTR lpszShareName, // name of share
UINT nLevel, // info level must be 2
LPBYTE lpBuffer, // points to struct with (NDDESHAREINFO) + data
DWORD cBufSize, // sizeof buffer
WORD sParmNum // Parameter index ( must be 0 - entire )
);
UINT WINAPI
NDdeShareSetInfoW (
LPWSTR lpszServer, // server to execute on ( must be NULL )
LPWSTR lpszShareName, // name of share
UINT nLevel, // info level must be 2
LPBYTE lpBuffer, // points to struct with (NDDESHAREINFO) + data
DWORD cBufSize, // sizeof buffer
WORD sParmNum // Parameter index ( must be 0 - entire )
);
/*
Set/Create a trusted share
*/
UINT WINAPI
NDdeSetTrustedShareA (
LPSTR lpszServer, // server to execute on ( must be NULL )
LPSTR lpszShareName, // name of share to delete
DWORD dwTrustOptions // trust options to apply
);
UINT WINAPI
NDdeSetTrustedShareW (
LPWSTR lpszServer, // server to execute on ( must be NULL )
LPWSTR lpszShareName, // name of share to delete
DWORD dwTrustOptions // trust options to apply
);
/* Trusted share options */
#define NDDE_TRUST_SHARE_START 0x80000000L // Start App Allowed
#define NDDE_TRUST_SHARE_INIT 0x40000000L // Init Conv Allowed
#define NDDE_TRUST_SHARE_DEL 0x20000000L // Delete Trusted Share (on set)
#define NDDE_TRUST_CMD_SHOW 0x10000000L // Use supplied cmd show
#define NDDE_CMD_SHOW_MASK 0x0000FFFFL // Command Show mask
/*
Get a trusted share options
*/
UINT WINAPI
NDdeGetTrustedShareA (
LPSTR lpszServer, // server to execute on ( must be NULL )
LPSTR lpszShareName, // name of share to query
LPDWORD lpdwTrustOptions, // trust options in effect
LPDWORD lpdwShareModId0, // first word of share mod id
LPDWORD lpdwShareModId1 // second word of share mod id
);
UINT WINAPI
NDdeGetTrustedShareW (
LPWSTR lpszServer, // server to execute on ( must be NULL )
LPWSTR lpszShareName, // name of share to query
LPDWORD lpdwTrustOptions, // trust options in effect
LPDWORD lpdwShareModId0, // first word of share mod id
LPDWORD lpdwShareModId1 // second word of share mod id
);
/*
Enumerate trusted shares
*/
UINT WINAPI
NDdeTrustedShareEnumA (
LPSTR lpszServer, // server to execute on ( NULL for local )
UINT nLevel, // 0 for null separated 00 terminated list
LPBYTE lpBuffer, // pointer to buffer
DWORD cBufSize, // size of buffer
LPDWORD lpnEntriesRead, // number of names returned
LPDWORD lpcbTotalAvailable // number of bytes available
);
UINT WINAPI
NDdeTrustedShareEnumW (
LPWSTR lpszServer, // server to execute on ( NULL for local )
UINT nLevel, // 0 for null separated 00 terminated list
LPBYTE lpBuffer, // pointer to buffer
DWORD cBufSize, // size of buffer
LPDWORD lpnEntriesRead, // number of names returned
LPDWORD lpcbTotalAvailable // number of bytes available
);
/*
Convert error code to string value
*/
UINT WINAPI
NDdeGetErrorStringA (
UINT uErrorCode, // Error code to get string for
LPSTR lpszErrorString, // buffer to hold error string
DWORD cBufSize // sizeof buffer
);
UINT WINAPI
NDdeGetErrorStringW (
UINT uErrorCode, // Error code to get string for
LPWSTR lpszErrorString, // buffer to hold error string
DWORD cBufSize // sizeof buffer
);
/*
Validate share name format
*/
BOOL WINAPI
NDdeIsValidShareNameA (
LPSTR shareName
);
BOOL WINAPI
NDdeIsValidShareNameW (
LPWSTR shareName
);
/*
Validate application/topic list format
*/
BOOL WINAPI
NDdeIsValidAppTopicListA (
LPSTR targetTopic
);
BOOL WINAPI
NDdeIsValidAppTopicListW (
LPWSTR targetTopic
);
#ifdef UNICODE
#define NDdeShareAdd NDdeShareAddW
#define NDdeShareDel NDdeShareDelW
#define NDdeSetShareSecurity NDdeSetShareSecurityW
#define NDdeGetShareSecurity NDdeGetShareSecurityW
#define NDdeShareEnum NDdeShareEnumW
#define NDdeShareGetInfo NDdeShareGetInfoW
#define NDdeShareSetInfo NDdeShareSetInfoW
#define NDdeGetErrorString NDdeGetErrorStringW
#define NDdeIsValidShareName NDdeIsValidShareNameW
#define NDdeIsValidAppTopicList NDdeIsValidAppTopicListW
#define NDdeSetTrustedShare NDdeSetTrustedShareW
#define NDdeGetTrustedShare NDdeGetTrustedShareW
#define NDdeTrustedShareEnum NDdeTrustedShareEnumW
#else
#define NDdeShareAdd NDdeShareAddA
#define NDdeShareDel NDdeShareDelA
#define NDdeSetShareSecurity NDdeSetShareSecurityA
#define NDdeGetShareSecurity NDdeGetShareSecurityA
#define NDdeShareEnum NDdeShareEnumA
#define NDdeShareGetInfo NDdeShareGetInfoA
#define NDdeShareSetInfo NDdeShareSetInfoA
#define NDdeGetErrorString NDdeGetErrorStringA
#define NDdeIsValidShareName NDdeIsValidShareNameA
#define NDdeIsValidAppTopicList NDdeIsValidAppTopicListA
#define NDdeSetTrustedShare NDdeSetTrustedShareA
#define NDdeGetTrustedShare NDdeGetTrustedShareA
#define NDdeTrustedShareEnum NDdeTrustedShareEnumA
#endif
#ifdef __cplusplus
}
#endif /* __cplusplus */
#include <poppack.h>
#endif /* _INC_NDDEAPI */
|