/*++ Copyright (c) 1991 Microsoft Corporation Module Name: FileInfo.c Abstract: This file contains NetpFileStructureInfo(). Author: John Rogers (JohnRo) 15-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: 15-Aug-1991 JohnRo Implement downlevel NetFile APIs. 20-Nov-1991 JohnRo Removed NT dependencies to reduce recompiles. 13-Dec-1991 JohnRo Quiet debug output by default. --*/ // These must be included first: #include // IN, DWORD, etc. #include // LM20_ equates, NET_API_STATUS, etc. #include // LPDESC, needed by . // These may be included in any order: #include // ERROR_ and NERR_ equates. #include // FILE_INFO_2, etc. #include // NetpSetOptionalArg(). #include // NetpAssert(). #include // REM16_, REM32_, REMSmb_ equates. #include // My prototype. #define MAX_FILE_2_STRING_LENGTH \ (0) #define MAX_FILE_2_STRING_SIZE \ (MAX_FILE_2_STRING_LENGTH * sizeof(TCHAR)) #define MAX_FILE_2_TOTAL_SIZE \ (MAX_FILE_2_STRING_SIZE + sizeof(FILE_INFO_2)) #define MAX_FILE_3_STRING_LENGTH \ (LM20_PATHLEN+1 + LM20_UNLEN+1) #define MAX_FILE_3_STRING_SIZE \ (MAX_FILE_3_STRING_LENGTH * sizeof(TCHAR)) #define MAX_FILE_3_TOTAL_SIZE \ (MAX_FILE_3_STRING_SIZE + sizeof(FILE_INFO_3)) NET_API_STATUS NetpFileStructureInfo ( IN DWORD Level, IN DWORD ParmNum, // Use PARMNUM_ALL if not applicable. IN BOOL Native, // Should sizes be native or RAP? OUT LPDESC * DataDesc16 OPTIONAL, OUT LPDESC * DataDesc32 OPTIONAL, OUT LPDESC * DataDescSmb OPTIONAL, OUT LPDWORD MaxSize OPTIONAL, OUT LPDWORD FixedSize OPTIONAL, OUT LPDWORD StringSize OPTIONAL ) { DBG_UNREFERENCED_PARAMETER(ParmNum); NetpAssert( Native ); // // Decide what to do based on the info level. // switch (Level) { #define SetSizes(fixed,variable) \ { \ NetpSetOptionalArg( MaxSize, (fixed) + (variable) ); \ NetpSetOptionalArg( FixedSize, (fixed) ); \ NetpSetOptionalArg( StringSize, (variable) ); \ } case 2 : NetpSetOptionalArg( DataDesc16, REM16_file_info_2 ); NetpSetOptionalArg( DataDesc32, REM32_file_info_2 ); NetpSetOptionalArg( DataDescSmb, REMSmb_file_info_2 ); SetSizes( sizeof(FILE_INFO_2), MAX_FILE_2_STRING_SIZE ); break; case 3 : NetpSetOptionalArg( DataDesc16, REM16_file_info_3 ); NetpSetOptionalArg( DataDesc32, REM32_file_info_3 ); NetpSetOptionalArg( DataDescSmb, REMSmb_file_info_3 ); SetSizes( sizeof(FILE_INFO_3), MAX_FILE_3_STRING_SIZE ); break; default : return (ERROR_INVALID_LEVEL); } return (NERR_Success); } // NetpFileStructureInfo