/*++ Copyright (c) 1994 Microsoft Corporation Module Name: disptest.c Abstract: Test program for NetQueryDisplayInformation and NetGetDisplayInformationIndex API functions Author: Cliff Van Dyke (cliffv) 15-Dec-1994 Environment: User mode only. Contains NT-specific code. Requires ANSI C extensions: slash-slash comments, long external names. Revision History: --*/ #include #include #include #undef DOMAIN_ALL_ACCESS // defined in both ntsam.h and ntwinapi.h // #include // #include #include #include #include // #include // #include #include #include #include // #include #include #include #include #include #include #include #include // #include // #include ///#include DWORD DisplayStruct( IN DWORD Level, IN PVOID Buffer ) /*++ Routine Description: Display the appropriate structure. Arguments: Level - Info level of structure Buffer - structure to display Return Value: Index of next entry --*/ { DWORD Index; switch (Level) { case 1: { PNET_DISPLAY_USER NetDisplayUser = (PNET_DISPLAY_USER) Buffer; printf("%4.4ld %-20.20ws comm:%ws flg:%lx full:%ws rid:%lx\n", NetDisplayUser->usri1_next_index, NetDisplayUser->usri1_name, NetDisplayUser->usri1_comment, NetDisplayUser->usri1_flags, NetDisplayUser->usri1_full_name, NetDisplayUser->usri1_user_id ); Index = NetDisplayUser->usri1_next_index; break; } case 2: { PNET_DISPLAY_MACHINE NetDisplayMachine = (PNET_DISPLAY_MACHINE) Buffer; printf("%4.4ld %-20.20ws comm:%ws flg:%lx rid:%lx\n", NetDisplayMachine->usri2_next_index, NetDisplayMachine->usri2_name, NetDisplayMachine->usri2_comment, NetDisplayMachine->usri2_flags, NetDisplayMachine->usri2_user_id ); Index = NetDisplayMachine->usri2_next_index; break; } case 3: { PNET_DISPLAY_GROUP NetDisplayGroup = (PNET_DISPLAY_GROUP) Buffer; printf("%4.4ld %-20.20ws comm:%ws attr:%lx rid:%lx\n", NetDisplayGroup->grpi3_next_index, NetDisplayGroup->grpi3_name, NetDisplayGroup->grpi3_comment, NetDisplayGroup->grpi3_attributes, NetDisplayGroup->grpi3_group_id ); Index = NetDisplayGroup->grpi3_next_index; break; } } return Index; } int __cdecl main( IN int argc, IN char ** argv ) /*++ Routine Description: Test program for NetQueryDisplayInformation and NetGetDisplayInformationIndex API functions Arguments: argc - the number of command-line arguments. argv - an array of pointers to the arguments. Return Value: Exit status --*/ { NET_API_STATUS NetStatus; char *end; DWORD i; DWORD FixedSize; LPWSTR ServerName = NULL; DWORD Level = 1; DWORD Index = 0; DWORD EntriesRequested = 0xFFFFFFFF; DWORD PreferredMaximumLength = 0xFFFFFFFF; LPWSTR Prefix = NULL; DWORD ReturnedEntryCount; PVOID SortedBuffer; if ( argc > 1 ) { ServerName = NetpAllocWStrFromStr( argv[1] ); } if ( argc > 2 ) { Level = strtoul( argv[2], &end, 10 ); } if ( argc > 3 ) { Index = strtoul( argv[3], &end, 10 ); } if ( argc > 4 ) { EntriesRequested = strtoul( argv[4], &end, 10 ); } if ( argc > 5 ) { PreferredMaximumLength = strtoul( argv[5], &end, 10 ); } if ( argc > 6 ) { Prefix = NetpAllocWStrFromStr( argv[6] ); } // // Size of each entry. // switch (Level) { case 1: FixedSize = sizeof(NET_DISPLAY_USER); break; case 2: FixedSize = sizeof(NET_DISPLAY_MACHINE); break; case 3: FixedSize = sizeof(NET_DISPLAY_GROUP); break; default: FixedSize = 0; break; } printf( "Server: %ws Level: %ld Index: %ld EntriesRequested: %ld PrefMax: %ld\n", ServerName, Level, Index, EntriesRequested, PreferredMaximumLength ); if ( Prefix != NULL) { printf( "Prefix: %ws\n", Prefix ); NetStatus = NetGetDisplayInformationIndex( ServerName, Level, Prefix, &Index ); printf( "Status from NetGetDisplayInformationIndex: %ld\n", NetStatus ); if ( NetStatus != NERR_Success ) { return 0; } printf( "NewIndex: %ld\n", Index ); } do { NetStatus = NetQueryDisplayInformation( ServerName, Level, Index, EntriesRequested, PreferredMaximumLength, &ReturnedEntryCount, &SortedBuffer ); printf( "Count: %ld Status: %ld\n", ReturnedEntryCount, NetStatus ); if ( NetStatus != NERR_Success && NetStatus != ERROR_MORE_DATA ) { break; } for ( i=0; i