/*++ Copyright (c) 1991-92 Microsoft Corporation Module Name: DlWksta.h Abstract: This is a private header file for the NT/LAN handling of old wksta info levels. This contains prototypes for the NetpConvertWkstaInfo etc APIs and old info level structures (in 32-bit format). Author: John Rogers (JohnRo) 08-Aug-1991 Environment: Portable to any flat, 32-bit environment. (Uses Win32 typedefs.) Requires ANSI C extensions: slash-slash comments, long external names. Revision History: 08-Aug-1991 JohnRo Created, building from DanHi's port1632.h & mapsupp.h and my DlServer.h. 13-Sep-1991 JohnRo Correct UNICODE use. 01-Apr-1992 JohnRo Level 402 does not have other domains any more. --*/ #ifndef _DLWKSTA_ #define _DLWKSTA_ // These must be included first: #include // IN, LPTSTR, LPVOID, TCHAR, etc. #include // NET_API_STATUS, various LEN equates. // These may be included in any order: #include // PWKSTA_INFO_101. #include // NetpAssert(). #include // offsetof(). #define MAX_OTH_DOMAINS 4 ///////////////////////////////////// // Structures for old info levels: // ///////////////////////////////////// typedef struct _WKSTA_INFO_0 { DWORD wki0_reserved_1; DWORD wki0_reserved_2; LPTSTR wki0_root; LPTSTR wki0_computername; LPTSTR wki0_username; LPTSTR wki0_langroup; DWORD wki0_ver_major; DWORD wki0_ver_minor; DWORD wki0_reserved_3; DWORD wki0_charwait; DWORD wki0_chartime; DWORD wki0_charcount; DWORD wki0_reserved_4; DWORD wki0_reserved_5; DWORD wki0_keepconn; DWORD wki0_keepsearch; DWORD wki0_maxthreads; DWORD wki0_maxcmds; DWORD wki0_reserved_6; DWORD wki0_numworkbuf; DWORD wki0_sizworkbuf; DWORD wki0_maxwrkcache; DWORD wki0_sesstimeout; DWORD wki0_sizerror; DWORD wki0_numalerts; DWORD wki0_numservices; DWORD wki0_errlogsz; DWORD wki0_printbuftime; DWORD wki0_numcharbuf; DWORD wki0_sizcharbuf; LPTSTR wki0_logon_server; LPTSTR wki0_wrkheuristics; DWORD wki0_mailslots; } WKSTA_INFO_0, *PWKSTA_INFO_0, *LPWKSTA_INFO_0; /* wksta_info_0 */ #define DL_REM_wksta_info_0 "DDzzzzDDDDDDDDDDDDDDDDDDDDDDDDzzD" typedef struct _WKSTA_INFO_1 { DWORD wki1_reserved_1; DWORD wki1_reserved_2; LPTSTR wki1_root; LPTSTR wki1_computername; LPTSTR wki1_username; LPTSTR wki1_langroup; DWORD wki1_ver_major; DWORD wki1_ver_minor; DWORD wki1_reserved_3; DWORD wki1_charwait; DWORD wki1_chartime; DWORD wki1_charcount; DWORD wki1_reserved_4; DWORD wki1_reserved_5; DWORD wki1_keepconn; DWORD wki1_keepsearch; DWORD wki1_maxthreads; DWORD wki1_maxcmds; DWORD wki1_reserved_6; DWORD wki1_numworkbuf; DWORD wki1_sizworkbuf; DWORD wki1_maxwrkcache; DWORD wki1_sesstimeout; DWORD wki1_sizerror; DWORD wki1_numalerts; DWORD wki1_numservices; DWORD wki1_errlogsz; DWORD wki1_printbuftime; DWORD wki1_numcharbuf; DWORD wki1_sizcharbuf; LPTSTR wki1_logon_server; LPTSTR wki1_wrkheuristics; DWORD wki1_mailslots; LPTSTR wki1_logon_domain; LPTSTR wki1_oth_domains; DWORD wki1_numdgrambuf; } WKSTA_INFO_1, *PWKSTA_INFO_1, *LPWKSTA_INFO_1; /* wksta_info_1 */ // Take advantage of the fact that level 0 is subset of level 1. #define DL_REM_wksta_info_1 DL_REM_wksta_info_0 "zzD" typedef struct _WKSTA_INFO_10 { LPTSTR wki10_computername; LPTSTR wki10_username; LPTSTR wki10_langroup; DWORD wki10_ver_major; DWORD wki10_ver_minor; LPTSTR wki10_logon_domain; LPTSTR wki10_oth_domains; } WKSTA_INFO_10, *PWKSTA_INFO_10, *LPWKSTA_INFO_10; /* wksta_info_10 */ #define DL_REM_wksta_info_10 "zzzDDzz" //////////////////////////////////// // Equates for various maximums: // // _LENGTH for character counts // // _SIZE for byte counts // //////////////////////////////////// // This number is from the LM 2.0 NetCons.h file, where it is called // WRKHEUR_COUNT: #define LM20_WRKHEUR_COUNT 54 #define MAX_WKSTA_0_STRING_LENGTH \ (LM20_PATHLEN+1 + MAX_PATH+1 + LM20_UNLEN+1 + LM20_DNLEN+1 \ + MAX_PATH+1 + LM20_WRKHEUR_COUNT+1) #define MAX_WKSTA_0_STRING_SIZE \ (MAX_WKSTA_0_STRING_LENGTH * sizeof(TCHAR)) #define MAX_WKSTA_0_TOTAL_SIZE \ (MAX_WKSTA_0_STRING_SIZE + sizeof(WKSTA_INFO_0)) #define MAX_WKSTA_1_STRING_LENGTH \ ( MAX_WKSTA_0_STRING_LENGTH + LM20_DNLEN+1 + LM20_DNLEN+1 ) #define MAX_WKSTA_1_STRING_SIZE \ (MAX_WKSTA_1_STRING_LENGTH * sizeof(TCHAR)) #define MAX_WKSTA_1_TOTAL_SIZE \ (MAX_WKSTA_1_STRING_SIZE + sizeof(WKSTA_INFO_1)) #define MAX_WKSTA_10_STRING_LENGTH \ (MAX_PATH+1 + LM20_UNLEN+1 + LM20_DNLEN+1 \ + LM20_DNLEN+1 + LM20_DNLEN+1 ) #define MAX_WKSTA_10_STRING_SIZE \ (MAX_WKSTA_10_STRING_LENGTH * sizeof(TCHAR)) #define MAX_WKSTA_10_TOTAL_SIZE \ (MAX_WKSTA_10_STRING_SIZE + sizeof(WKSTA_INFO_10)) #define MAX_WKSTA_100_STRING_LENGTH \ (MAX_PATH+1 + LM20_DNLEN+1) #define MAX_WKSTA_100_STRING_SIZE \ (MAX_WKSTA_100_STRING_LENGTH * sizeof(TCHAR)) #define MAX_WKSTA_100_TOTAL_SIZE \ (MAX_WKSTA_100_STRING_SIZE + sizeof(WKSTA_INFO_100)) #define MAX_WKSTA_101_STRING_LENGTH \ (MAX_WKSTA_100_STRING_LENGTH + LM20_PATHLEN+1) #define MAX_WKSTA_101_STRING_SIZE \ (MAX_WKSTA_101_STRING_LENGTH * sizeof(TCHAR)) #define MAX_WKSTA_101_TOTAL_SIZE \ (MAX_WKSTA_101_STRING_SIZE + sizeof(WKSTA_INFO_101)) #define MAX_WKSTA_102_STRING_LENGTH \ (MAX_WKSTA_101_STRING_LENGTH) #define MAX_WKSTA_102_STRING_SIZE \ (MAX_WKSTA_102_STRING_LENGTH * sizeof(TCHAR)) #define MAX_WKSTA_102_TOTAL_SIZE \ (MAX_WKSTA_102_STRING_SIZE + sizeof(WKSTA_INFO_102)) #define MAX_WKSTA_302_STRING_LENGTH \ (LM20_WRKHEUR_COUNT+1 + (MAX_OTH_DOMAINS * (LM20_DNLEN+1))) #define MAX_WKSTA_302_STRING_SIZE \ (MAX_WKSTA_302_STRING_LENGTH * sizeof(TCHAR)) #define MAX_WKSTA_302_TOTAL_SIZE \ (MAX_WKSTA_302_STRING_SIZE + sizeof(WKSTA_INFO_302)) #define MAX_WKSTA_402_STRING_LENGTH \ (LM20_WRKHEUR_COUNT+1) #define MAX_WKSTA_402_STRING_SIZE \ (MAX_WKSTA_402_STRING_LENGTH * sizeof(TCHAR)) #define MAX_WKSTA_402_TOTAL_SIZE \ (MAX_WKSTA_402_STRING_SIZE + sizeof(WKSTA_INFO_402)) #define MAX_WKSTA_502_STRING_LENGTH 0 #define MAX_WKSTA_502_STRING_SIZE 0 #define MAX_WKSTA_502_TOTAL_SIZE (sizeof(WKSTA_INFO_502)) ///////////////////////////////////// // Info level conversion routines: // ///////////////////////////////////// // Add prototypes for other routines here, in alphabetical order. NET_API_STATUS NetpConvertWkstaInfo ( IN DWORD FromLevel, IN LPVOID FromInfo, IN BOOL FromNative, IN DWORD ToLevel, OUT LPVOID ToInfo, IN DWORD ToFixedLength, IN DWORD ToStringLength, IN BOOL ToNative, IN OUT LPTSTR * ToStringAreaPtr OPTIONAL ); ///////////////////////////////////////////////////////////////////// // Macro to make sure offsets of field in two structures are same: // ///////////////////////////////////////////////////////////////////// #define CHECK_WKSTA_OFFSETS(one_level, other_level, fieldname) \ NetpAssert( offsetof(WKSTA_INFO_ ## one_level, \ sv## one_level ## _ ## fieldname) \ == offsetof(WKSTA_INFO_ ## other_level, \ sv## other_level ## _ ## fieldname) ) ///////////////////////////////////////////////////////////////// // Macros to check if an info level is "old" (LM 2.x) or "new" // // (32-bit, NT, and/or portable LanMan). // ///////////////////////////////////////////////////////////////// #define NetpIsOldWkstaInfoLevel(L) \ ( ((L)==0) || ((L)==1) || ((L)==10) ) // Note that the new "setinfo levels" aren't included in this list. #define NetpIsNewWkstaInfoLevel(L) \ ( ((L)==100) || ((L)==101) || ((L)==102) \ || ((L)==302) || ((L)==402) || ((L)==502) ) #endif // ndef _DLWKSTA_