Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

111 lines
3.0 KiB

/**************************** Module Header ********************************\
* Module Name: exports.c
*
* Copyright (c) 1985 - 1999, Microsoft Corporation
*
* Routines exported from winsrv.dll
*
* History:
* 03-04-95 JimA Created.
\***************************************************************************/
#include "precomp.h"
#pragma hdrstop
/***************************************************************************\
* _UserSoundSentry
*
* Private API for BASE to use for SoundSentry support.
*
* History:
* 08-02-93 GregoryW Created.
\***************************************************************************/
BOOL
_UserSoundSentry(
UINT uVideoMode)
{
UNREFERENCED_PARAMETER(uVideoMode);
return NT_SUCCESS(NtUserSoundSentry());
}
/***************************************************************************\
* _UserTestTokenForInteractive
*
* Returns TRUE if the token passed represents an interactive user logged
* on by winlogon, otherwise FALSE
*
* The token handle passed must have TOKEN_QUERY access.
*
* History:
* 05-06-92 Davidc Created
\***************************************************************************/
NTSTATUS
_UserTestTokenForInteractive(
HANDLE Token,
PLUID pluidCaller
)
{
PTOKEN_STATISTICS pStats;
ULONG BytesRequired;
NTSTATUS Status;
/*
* Get the session id of the caller.
*/
Status = NtQueryInformationToken(
Token, // Handle
TokenStatistics, // TokenInformationClass
NULL, // TokenInformation
0, // TokenInformationLength
&BytesRequired // ReturnLength
);
if (Status != STATUS_BUFFER_TOO_SMALL) {
return Status;
}
//
// Allocate space for the user info
//
pStats = (PTOKEN_STATISTICS)LocalAlloc(LPTR, BytesRequired);
if (pStats == NULL) {
return Status;
}
//
// Read in the user info
//
Status = NtQueryInformationToken(
Token, // Handle
TokenStatistics, // TokenInformationClass
pStats, // TokenInformation
BytesRequired, // TokenInformationLength
&BytesRequired // ReturnLength
);
if (NT_SUCCESS(Status)) {
if (pluidCaller != NULL)
*pluidCaller = pStats->AuthenticationId;
/*
* A valid session id has been returned. Compare it
* with the id of the logged on user.
*/
Status = NtUserTestForInteractiveUser(&pStats->AuthenticationId);
#ifdef LATER
if (pStats->AuthenticationId.QuadPart == pwinsta->luidUser.QuadPart)
Status = STATUS_SUCCESS;
else
Status = STATUS_ACCESS_DENIED;
#endif
}
LocalFree(pStats);
return Status;
}