/*++ Copyright (c) 1991 Microsoft Corporation Module Name: tdisplay.c Abstract: This file is a temporary test for the Display query apis. Author: Jim Kelly (JimK) 14-Feb-1992 Environment: User Mode - Win32 Revision History: --*/ /////////////////////////////////////////////////////////////////////////////// // // // Includes // // // /////////////////////////////////////////////////////////////////////////////// #include #include #include /////////////////////////////////////////////////////////////////////////////// // // // Global Variables // // // /////////////////////////////////////////////////////////////////////////////// SAM_HANDLE SamHandle; SAM_HANDLE DomainHandle; PSID DomainSid; /////////////////////////////////////////////////////////////////////////////// // // // Routines // // // /////////////////////////////////////////////////////////////////////////////// VOID _CRTAPI1 main( VOID ) { NTSTATUS Status; OBJECT_ATTRIBUTES ObjectAttributes; SECURITY_QUALITY_OF_SERVICE SecurityQos; UNICODE_STRING Domain; UNICODE_STRING TestString; ULONG TestIndex; ULONG TotalAvailable, TotalReturned, ReturnedEntryCount, i; PDOMAIN_DISPLAY_USER SortedUsers; PDOMAIN_DISPLAY_MACHINE SortedMachines; PDOMAIN_DISPLAY_GROUP SortedGroups; PDOMAIN_DISPLAY_OEM_USER SortedOemUsers; PDOMAIN_DISPLAY_OEM_GROUP SortedOemGroups; SamHandle = NULL; DomainHandle = NULL; DomainSid = NULL; DbgPrint("\n\n\nSAM TEST: Testing SamQueryDisplayInformation() api\n"); // // Setup ObjectAttributes for SamConnect call. // InitializeObjectAttributes(&ObjectAttributes, NULL, 0, 0, NULL); ObjectAttributes.SecurityQualityOfService = &SecurityQos; SecurityQos.Length = sizeof(SecurityQos); SecurityQos.ImpersonationLevel = SecurityIdentification; SecurityQos.ContextTrackingMode = SECURITY_STATIC_TRACKING; SecurityQos.EffectiveOnly = FALSE; Status = SamConnect( NULL, &SamHandle, GENERIC_EXECUTE, &ObjectAttributes ); if ( !NT_SUCCESS(Status) ) { DbgPrint("SamConnect failed, status %8.8x\n", Status); goto Cleanup; } RtlInitUnicodeString(&Domain, L"JIMK_DOM2"); Status = SamLookupDomainInSamServer( SamHandle, &Domain, &DomainSid ); if ( !NT_SUCCESS(Status) ) { DbgPrint("Cannot find account domain, status %8.8x\n", Status); Status = STATUS_CANT_ACCESS_DOMAIN_INFO; goto Cleanup; } Status = SamOpenDomain( SamHandle, GENERIC_EXECUTE, DomainSid, &DomainHandle ); if ( !NT_SUCCESS(Status) ) { DbgPrint("Cannot open account domain, status %8.8x\n", Status); Status = STATUS_CANT_ACCESS_DOMAIN_INFO; goto Cleanup; } // // normal users ... // DbgPrint("Query users - zero index...\n"); Status = SamQueryDisplayInformation ( DomainHandle, DomainDisplayUser, 0, //Index 10, // Entries 1000, //PreferredMaximumLength, &TotalAvailable, &TotalReturned, &ReturnedEntryCount, &((PVOID)SortedUsers) ); DbgPrint("Completion Status: 0x%lx\n", Status); if (NT_SUCCESS(Status)) { DbgPrint(" Buffer Address: 0x%lx\n", SortedUsers); DbgPrint(" TotalAvailable: 0x%lx\n", TotalAvailable); DbgPrint(" TotalReturned: 0x%lx\n", TotalReturned); DbgPrint(" Entries Returned: %d\n", ReturnedEntryCount); DbgPrint("\n\n"); for (i=0;i