| 1 |
/** |
| 2 |
* This file has no copyright assigned and is placed in the Public Domain. |
| 3 |
* This file is part of the mingw-w64 runtime package. |
| 4 |
* No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 |
*/ |
| 6 |
#ifndef SVRAPI_INCLUDED |
| 7 |
#define SVRAPI_INCLUDED |
| 8 |
|
| 9 |
#include <lmcons.h> |
| 10 |
#include <lmerr.h> |
| 11 |
|
| 12 |
#ifndef RC_INVOKED |
| 13 |
#pragma pack(1) |
| 14 |
#endif |
| 15 |
|
| 16 |
#ifdef __cplusplus |
| 17 |
extern "C" { |
| 18 |
#endif |
| 19 |
|
| 20 |
#ifndef _SVRAPI_ |
| 21 |
#define API_FUNCTION DECLSPEC_IMPORT API_RET_TYPE WINAPI |
| 22 |
#else |
| 23 |
#define API_FUNCTION API_RET_TYPE WINAPI |
| 24 |
#endif |
| 25 |
|
| 26 |
extern API_FUNCTION NetAccessAdd(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer); |
| 27 |
extern API_FUNCTION NetAccessCheck (char *pszReserved,char *pszUserName,char *pszResource,unsigned short usOperation,unsigned short *pusResult); |
| 28 |
extern API_FUNCTION NetAccessDel(const char *pszServer,char *pszResource); |
| 29 |
extern API_FUNCTION NetAccessEnum(const char *pszServer,char *pszBasePath,short fsRecursive,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail); |
| 30 |
extern API_FUNCTION NetAccessGetInfo(const char *pszServer,char *pszResource,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail); |
| 31 |
extern API_FUNCTION NetAccessSetInfo(const char *pszServer,char *pszResource,short sLevel,char *pbBuffer,unsigned short cbBuffer,short sParmNum); |
| 32 |
extern API_FUNCTION NetAccessGetUserPerms (char *pszServer,char *pszUgName,char *pszResource,unsigned short *pusPerms); |
| 33 |
|
| 34 |
struct access_list { |
| 35 |
char acl_ugname[LM20_UNLEN+1]; |
| 36 |
char acl_ugname_pad_1; |
| 37 |
short acl_access; |
| 38 |
}; |
| 39 |
|
| 40 |
struct access_list_2 { |
| 41 |
char *acl2_ugname; |
| 42 |
unsigned short acl2_access; |
| 43 |
}; |
| 44 |
|
| 45 |
struct access_list_12 { |
| 46 |
char *acl12_ugname; |
| 47 |
unsigned short acl12_access; |
| 48 |
}; |
| 49 |
|
| 50 |
struct access_info_0 { |
| 51 |
char *acc0_resource_name; |
| 52 |
}; |
| 53 |
|
| 54 |
struct access_info_1 { |
| 55 |
char *acc1_resource_name; |
| 56 |
short acc1_attr; |
| 57 |
short acc1_count; |
| 58 |
}; |
| 59 |
|
| 60 |
struct access_info_2 { |
| 61 |
char *acc2_resource_name; |
| 62 |
short acc2_attr; |
| 63 |
short acc2_count; |
| 64 |
}; |
| 65 |
|
| 66 |
struct access_info_10 { |
| 67 |
char *acc10_resource_name; |
| 68 |
}; |
| 69 |
|
| 70 |
struct access_info_12 { |
| 71 |
char *acc12_resource_name; |
| 72 |
short acc12_attr; |
| 73 |
short acc12_count; |
| 74 |
}; |
| 75 |
|
| 76 |
#define MAXPERMENTRIES 64 |
| 77 |
|
| 78 |
#define ACCESS_NONE 0 |
| 79 |
#define ACCESS_ALL (ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM|ACCESS_FINDFIRST) |
| 80 |
|
| 81 |
#define ACCESS_READ 0x1 |
| 82 |
#define ACCESS_WRITE 0x2 |
| 83 |
#define ACCESS_CREATE 0x4 |
| 84 |
#define ACCESS_EXEC 0x8 |
| 85 |
#define ACCESS_DELETE 0x10 |
| 86 |
#define ACCESS_ATRIB 0x20 |
| 87 |
#define ACCESS_PERM 0x40 |
| 88 |
#define ACCESS_FINDFIRST 0x80 |
| 89 |
#define ACCESS_GROUP 0x8000 |
| 90 |
#define ACCESS_AUDIT 0x1 |
| 91 |
#define ACCESS_ATTR_PARMNUM 2 |
| 92 |
#define ACCESS_LETTERS "RWCXDAP " |
| 93 |
|
| 94 |
extern API_FUNCTION NetShareAdd(const char *pszServer,short sLevel,const char *pbBuffer,unsigned short cbBuffer); |
| 95 |
extern API_FUNCTION NetShareDel(const char *pszServer,const char *pszNetName,unsigned short usReserved); |
| 96 |
extern API_FUNCTION NetShareEnum(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail); |
| 97 |
extern API_FUNCTION NetShareGetInfo(const char *pszServer,const char *pszNetName,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail); |
| 98 |
extern API_FUNCTION NetShareSetInfo(const char *pszServer,const char *pszNetName,short sLevel,const char *pbBuffer,unsigned short cbBuffer,short sParmNum); |
| 99 |
|
| 100 |
struct share_info_0 { |
| 101 |
char shi0_netname[LM20_NNLEN+1]; |
| 102 |
}; |
| 103 |
|
| 104 |
struct share_info_1 { |
| 105 |
char shi1_netname[LM20_NNLEN+1]; |
| 106 |
char shi1_pad1; |
| 107 |
unsigned short shi1_type; |
| 108 |
char *shi1_remark; |
| 109 |
}; |
| 110 |
|
| 111 |
struct share_info_2 { |
| 112 |
char shi2_netname[LM20_NNLEN+1]; |
| 113 |
char shi2_pad1; |
| 114 |
unsigned short shi2_type; |
| 115 |
char *shi2_remark; |
| 116 |
unsigned short shi2_permissions; |
| 117 |
unsigned short shi2_max_uses; |
| 118 |
unsigned short shi2_current_uses; |
| 119 |
char *shi2_path; |
| 120 |
char shi2_passwd[SHPWLEN+1]; |
| 121 |
char shi2_pad2; |
| 122 |
}; |
| 123 |
|
| 124 |
struct share_info_50 { |
| 125 |
char shi50_netname[LM20_NNLEN+1]; |
| 126 |
unsigned char shi50_type; |
| 127 |
unsigned short shi50_flags; |
| 128 |
char *shi50_remark; |
| 129 |
char *shi50_path; |
| 130 |
char shi50_rw_password[SHPWLEN+1]; |
| 131 |
char shi50_ro_password[SHPWLEN+1]; |
| 132 |
}; |
| 133 |
|
| 134 |
#define SHI50F_RDONLY 0x0001 |
| 135 |
#define SHI50F_FULL 0x0002 |
| 136 |
#define SHI50F_DEPENDSON (SHI50F_RDONLY|SHI50F_FULL) |
| 137 |
#define SHI50F_ACCESSMASK (SHI50F_RDONLY|SHI50F_FULL) |
| 138 |
|
| 139 |
#define SHI50F_PERSIST 0x0100 |
| 140 |
|
| 141 |
#define SHI50F_SYSTEM 0x0200 |
| 142 |
|
| 143 |
#ifndef PARMNUM_ALL |
| 144 |
#define PARMNUM_ALL 0 |
| 145 |
#endif |
| 146 |
|
| 147 |
#define SHI_REMARK_PARMNUM 4 |
| 148 |
#define SHI_PERMISSIONS_PARMNUM 5 |
| 149 |
#define SHI_MAX_USES_PARMNUM 6 |
| 150 |
#define SHI_PASSWD_PARMNUM 9 |
| 151 |
|
| 152 |
#define SHI1_NUM_ELEMENTS 4 |
| 153 |
#define SHI2_NUM_ELEMENTS 10 |
| 154 |
|
| 155 |
#define STYPE_DISKTREE 0 |
| 156 |
#define STYPE_PRINTQ 1 |
| 157 |
#define STYPE_DEVICE 2 |
| 158 |
#define STYPE_IPC 3 |
| 159 |
|
| 160 |
#define SHI_USES_UNLIMITED -1 |
| 161 |
|
| 162 |
extern API_FUNCTION NetSessionDel(const char *pszServer,const char *pszClientName,short sReserved); |
| 163 |
extern API_FUNCTION NetSessionEnum(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail); |
| 164 |
extern API_FUNCTION NetSessionGetInfo(const char *pszServer,const char *pszClientName,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail); |
| 165 |
|
| 166 |
struct session_info_0 { |
| 167 |
char *sesi0_cname; |
| 168 |
}; |
| 169 |
|
| 170 |
struct session_info_1 { |
| 171 |
char *sesi1_cname; |
| 172 |
char *sesi1_username; |
| 173 |
unsigned short sesi1_num_conns; |
| 174 |
unsigned short sesi1_num_opens; |
| 175 |
unsigned short sesi1_num_users; |
| 176 |
unsigned __LONG32 sesi1_time; |
| 177 |
unsigned __LONG32 sesi1_idle_time; |
| 178 |
unsigned __LONG32 sesi1_user_flags; |
| 179 |
}; |
| 180 |
|
| 181 |
struct session_info_2 { |
| 182 |
char *sesi2_cname; |
| 183 |
char *sesi2_username; |
| 184 |
unsigned short sesi2_num_conns; |
| 185 |
unsigned short sesi2_num_opens; |
| 186 |
unsigned short sesi2_num_users; |
| 187 |
unsigned __LONG32 sesi2_time; |
| 188 |
unsigned __LONG32 sesi2_idle_time; |
| 189 |
unsigned __LONG32 sesi2_user_flags; |
| 190 |
char *sesi2_cltype_name; |
| 191 |
}; |
| 192 |
|
| 193 |
struct session_info_10 { |
| 194 |
char *sesi10_cname; |
| 195 |
char *sesi10_username; |
| 196 |
unsigned __LONG32 sesi10_time; |
| 197 |
unsigned __LONG32 sesi10_idle_time; |
| 198 |
}; |
| 199 |
|
| 200 |
struct session_info_50 { |
| 201 |
char *sesi50_cname; |
| 202 |
char *sesi50_username; |
| 203 |
unsigned __LONG32 sesi50_key; |
| 204 |
unsigned short sesi50_num_conns; |
| 205 |
unsigned short sesi50_num_opens; |
| 206 |
unsigned __LONG32 sesi50_time; |
| 207 |
unsigned __LONG32 sesi50_idle_time; |
| 208 |
unsigned char sesi50_protocol; |
| 209 |
unsigned char pad1; |
| 210 |
}; |
| 211 |
|
| 212 |
#define SESS_GUEST 1 |
| 213 |
#define SESS_NOENCRYPTION 2 |
| 214 |
|
| 215 |
#define SESI1_NUM_ELEMENTS 8 |
| 216 |
#define SESI2_NUM_ELEMENTS 9 |
| 217 |
|
| 218 |
extern API_FUNCTION NetConnectionEnum(const char *pszServer,const char *pszQualifier,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail); |
| 219 |
|
| 220 |
struct connection_info_0 { |
| 221 |
unsigned short coni0_id; |
| 222 |
}; |
| 223 |
|
| 224 |
struct connection_info_1 { |
| 225 |
unsigned short coni1_id; |
| 226 |
unsigned short coni1_type; |
| 227 |
unsigned short coni1_num_opens; |
| 228 |
unsigned short coni1_num_users; |
| 229 |
unsigned __LONG32 coni1_time; |
| 230 |
char *coni1_username; |
| 231 |
char *coni1_netname; |
| 232 |
}; |
| 233 |
|
| 234 |
struct connection_info_50 { |
| 235 |
unsigned short coni50_type; |
| 236 |
unsigned short coni50_num_opens; |
| 237 |
unsigned __LONG32 coni50_time; |
| 238 |
char *coni50_netname; |
| 239 |
char *coni50_username; |
| 240 |
}; |
| 241 |
|
| 242 |
extern API_FUNCTION NetFileClose2(const char *pszServer,unsigned __LONG32 ulFileId); |
| 243 |
extern API_FUNCTION NetFileEnum(const char *pszServer,const char *pszBasePath,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcEntriesRead,unsigned short *pcTotalAvail); |
| 244 |
|
| 245 |
struct file_info_0 { |
| 246 |
unsigned short fi0_id; |
| 247 |
}; |
| 248 |
|
| 249 |
struct file_info_1 { |
| 250 |
unsigned short fi1_id; |
| 251 |
unsigned short fi1_permissions; |
| 252 |
unsigned short fi1_num_locks; |
| 253 |
char *fi1_pathname; |
| 254 |
char *fi1_username; |
| 255 |
}; |
| 256 |
|
| 257 |
struct file_info_2 { |
| 258 |
unsigned __LONG32 fi2_id; |
| 259 |
}; |
| 260 |
|
| 261 |
struct file_info_3 { |
| 262 |
unsigned __LONG32 fi3_id; |
| 263 |
unsigned short fi3_permissions; |
| 264 |
unsigned short fi3_num_locks; |
| 265 |
char *fi3_pathname; |
| 266 |
char *fi3_username; |
| 267 |
}; |
| 268 |
|
| 269 |
struct file_info_50 { |
| 270 |
unsigned __LONG32 fi50_id; |
| 271 |
unsigned short fi50_permissions; |
| 272 |
unsigned short fi50_num_locks; |
| 273 |
char *fi50_pathname; |
| 274 |
char *fi50_username; |
| 275 |
char *fi50_sharename; |
| 276 |
}; |
| 277 |
|
| 278 |
struct res_file_enum_2 { |
| 279 |
unsigned short res_pad; |
| 280 |
unsigned short res_fs; |
| 281 |
unsigned __LONG32 res_pro; |
| 282 |
}; |
| 283 |
|
| 284 |
#define PERM_FILE_READ 0x1 |
| 285 |
#define PERM_FILE_WRITE 0x2 |
| 286 |
#define PERM_FILE_CREATE 0x4 |
| 287 |
|
| 288 |
typedef struct res_file_enum_2 FRK; |
| 289 |
|
| 290 |
#define FRK_INIT(f) { (f).res_pad = 0; (f).res_fs = 0; (f).res_pro = 0; } |
| 291 |
|
| 292 |
extern API_FUNCTION NetServerGetInfo(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail); |
| 293 |
|
| 294 |
struct server_info_0 { |
| 295 |
char sv0_name[CNLEN + 1]; |
| 296 |
}; |
| 297 |
|
| 298 |
struct server_info_1 { |
| 299 |
char sv1_name[CNLEN + 1]; |
| 300 |
unsigned char sv1_version_major; |
| 301 |
unsigned char sv1_version_minor; |
| 302 |
unsigned __LONG32 sv1_type; |
| 303 |
char *sv1_comment; |
| 304 |
}; |
| 305 |
|
| 306 |
struct server_info_50 { |
| 307 |
char sv50_name[CNLEN + 1]; |
| 308 |
unsigned char sv50_version_major; |
| 309 |
unsigned char sv50_version_minor; |
| 310 |
unsigned __LONG32 sv50_type; |
| 311 |
char *sv50_comment; |
| 312 |
unsigned short sv50_security; |
| 313 |
unsigned short sv50_auditing; |
| 314 |
char *sv50_container; |
| 315 |
char *sv50_ab_server; |
| 316 |
char *sv50_ab_dll; |
| 317 |
}; |
| 318 |
|
| 319 |
struct server_info_2 { |
| 320 |
char sv2_name[CNLEN + 1]; |
| 321 |
unsigned char sv2_version_major; |
| 322 |
unsigned char sv2_version_minor; |
| 323 |
unsigned __LONG32 sv2_type; |
| 324 |
char *sv2_comment; |
| 325 |
unsigned __LONG32 sv2_ulist_mtime; |
| 326 |
unsigned __LONG32 sv2_glist_mtime; |
| 327 |
unsigned __LONG32 sv2_alist_mtime; |
| 328 |
unsigned short sv2_users; |
| 329 |
unsigned short sv2_disc; |
| 330 |
char *sv2_alerts; |
| 331 |
unsigned short sv2_security; |
| 332 |
unsigned short sv2_auditing; |
| 333 |
unsigned short sv2_numadmin; |
| 334 |
unsigned short sv2_lanmask; |
| 335 |
unsigned short sv2_hidden; |
| 336 |
unsigned short sv2_announce; |
| 337 |
unsigned short sv2_anndelta; |
| 338 |
char sv2_guestacct[LM20_UNLEN + 1]; |
| 339 |
unsigned char sv2_pad1; |
| 340 |
char *sv2_userpath; |
| 341 |
unsigned short sv2_chdevs; |
| 342 |
unsigned short sv2_chdevq; |
| 343 |
unsigned short sv2_chdevjobs; |
| 344 |
unsigned short sv2_connections; |
| 345 |
unsigned short sv2_shares; |
| 346 |
unsigned short sv2_openfiles; |
| 347 |
unsigned short sv2_sessopens; |
| 348 |
unsigned short sv2_sessvcs; |
| 349 |
unsigned short sv2_sessreqs; |
| 350 |
unsigned short sv2_opensearch; |
| 351 |
unsigned short sv2_activelocks; |
| 352 |
unsigned short sv2_numreqbuf; |
| 353 |
unsigned short sv2_sizreqbuf; |
| 354 |
unsigned short sv2_numbigbuf; |
| 355 |
unsigned short sv2_numfiletasks; |
| 356 |
unsigned short sv2_alertsched; |
| 357 |
unsigned short sv2_erroralert; |
| 358 |
unsigned short sv2_logonalert; |
| 359 |
unsigned short sv2_accessalert; |
| 360 |
unsigned short sv2_diskalert; |
| 361 |
unsigned short sv2_netioalert; |
| 362 |
unsigned short sv2_maxauditsz; |
| 363 |
char *sv2_srvheuristics; |
| 364 |
}; |
| 365 |
|
| 366 |
struct server_info_3 { |
| 367 |
char sv3_name[CNLEN + 1]; |
| 368 |
unsigned char sv3_version_major; |
| 369 |
unsigned char sv3_version_minor; |
| 370 |
unsigned __LONG32 sv3_type; |
| 371 |
char *sv3_comment; |
| 372 |
unsigned __LONG32 sv3_ulist_mtime; |
| 373 |
unsigned __LONG32 sv3_glist_mtime; |
| 374 |
unsigned __LONG32 sv3_alist_mtime; |
| 375 |
unsigned short sv3_users; |
| 376 |
unsigned short sv3_disc; |
| 377 |
char *sv3_alerts; |
| 378 |
unsigned short sv3_security; |
| 379 |
unsigned short sv3_auditing; |
| 380 |
unsigned short sv3_numadmin; |
| 381 |
unsigned short sv3_lanmask; |
| 382 |
unsigned short sv3_hidden; |
| 383 |
unsigned short sv3_announce; |
| 384 |
unsigned short sv3_anndelta; |
| 385 |
char sv3_guestacct[LM20_UNLEN + 1]; |
| 386 |
unsigned char sv3_pad1; |
| 387 |
char *sv3_userpath; |
| 388 |
unsigned short sv3_chdevs; |
| 389 |
unsigned short sv3_chdevq; |
| 390 |
unsigned short sv3_chdevjobs; |
| 391 |
unsigned short sv3_connections; |
| 392 |
unsigned short sv3_shares; |
| 393 |
unsigned short sv3_openfiles; |
| 394 |
unsigned short sv3_sessopens; |
| 395 |
unsigned short sv3_sessvcs; |
| 396 |
unsigned short sv3_sessreqs; |
| 397 |
unsigned short sv3_opensearch; |
| 398 |
unsigned short sv3_activelocks; |
| 399 |
unsigned short sv3_numreqbuf; |
| 400 |
unsigned short sv3_sizreqbuf; |
| 401 |
unsigned short sv3_numbigbuf; |
| 402 |
unsigned short sv3_numfiletasks; |
| 403 |
unsigned short sv3_alertsched; |
| 404 |
unsigned short sv3_erroralert; |
| 405 |
unsigned short sv3_logonalert; |
| 406 |
unsigned short sv3_accessalert; |
| 407 |
unsigned short sv3_diskalert; |
| 408 |
unsigned short sv3_netioalert; |
| 409 |
unsigned short sv3_maxauditsz; |
| 410 |
char *sv3_srvheuristics; |
| 411 |
unsigned __LONG32 sv3_auditedevents; |
| 412 |
unsigned short sv3_autoprofile; |
| 413 |
char *sv3_autopath; |
| 414 |
}; |
| 415 |
|
| 416 |
#define MAJOR_VERSION_MASK 0x0F |
| 417 |
|
| 418 |
#define SV_TYPE_WORKSTATION 0x00000001 |
| 419 |
#define SV_TYPE_SERVER 0x00000002 |
| 420 |
#define SV_TYPE_SQLSERVER 0x00000004 |
| 421 |
#define SV_TYPE_DOMAIN_CTRL 0x00000008 |
| 422 |
#define SV_TYPE_DOMAIN_BAKCTRL 0x00000010 |
| 423 |
#define SV_TYPE_TIME_SOURCE 0x00000020 |
| 424 |
#define SV_TYPE_AFP 0x00000040 |
| 425 |
#define SV_TYPE_NOVELL 0x00000080 |
| 426 |
#define SV_TYPE_DOMAIN_MEMBER 0x00000100 |
| 427 |
#define SV_TYPE_PRINTQ_SERVER 0x00000200 |
| 428 |
#define SV_TYPE_DIALIN_SERVER 0x00000400 |
| 429 |
#define SV_TYPE_ALL 0xFFFFFFFF |
| 430 |
|
| 431 |
#define SV_NODISC 0xFFFF |
| 432 |
|
| 433 |
#define SV_USERSECURITY 1 |
| 434 |
#define SV_SHARESECURITY 0 |
| 435 |
|
| 436 |
#define SV_SECURITY_SHARE 0 |
| 437 |
#define SV_SECURITY_WINNT 1 |
| 438 |
#define SV_SECURITY_WINNTAS 2 |
| 439 |
#define SV_SECURITY_NETWARE 3 |
| 440 |
|
| 441 |
#define SV_HIDDEN 1 |
| 442 |
#define SV_VISIBLE 0 |
| 443 |
|
| 444 |
#define SVI1_NUM_ELEMENTS 5 |
| 445 |
#define SVI2_NUM_ELEMENTS 44 |
| 446 |
#define SVI3_NUM_ELEMENTS 45 |
| 447 |
|
| 448 |
#define SW_AUTOPROF_LOAD_MASK 0x1 |
| 449 |
#define SW_AUTOPROF_SAVE_MASK 0x2 |
| 450 |
|
| 451 |
extern API_FUNCTION NetSecurityGetInfo(const char *pszServer,short sLevel,char *pbBuffer,unsigned short cbBuffer,unsigned short *pcbTotalAvail); |
| 452 |
|
| 453 |
struct security_info_1 { |
| 454 |
unsigned __LONG32 sec1_security; |
| 455 |
char *sec1_container; |
| 456 |
char *sec1_ab_server; |
| 457 |
char *sec1_ab_dll; |
| 458 |
}; |
| 459 |
|
| 460 |
#define SEC_SECURITY_SHARE SV_SECURITY_SHARE |
| 461 |
#define SEC_SECURITY_WINNT SV_SECURITY_WINNT |
| 462 |
#define SEC_SECURITY_WINNTAS SV_SECURITY_WINNTAS |
| 463 |
#define SEC_SECURITY_NETWARE SV_SECURITY_NETWARE |
| 464 |
|
| 465 |
#ifdef __cplusplus |
| 466 |
} |
| 467 |
#endif |
| 468 |
|
| 469 |
#ifndef RC_INVOKED |
| 470 |
#pragma pack() |
| 471 |
#endif |
| 472 |
#endif |