mirror of https://github.com/tongzx/nt5src
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.
131 lines
2.7 KiB
131 lines
2.7 KiB
/*++
|
|
|
|
Copyright (c) 1999 Microsoft Corporation
|
|
|
|
Module Name :
|
|
ooptoken.h
|
|
|
|
Abstract:
|
|
Header file for the CWamOopTokenInfo object
|
|
|
|
Author:
|
|
Taylor Weiss ( TaylorW ) 15-Feb-1999
|
|
|
|
Environment:
|
|
User Mode - Win32
|
|
|
|
Project:
|
|
iis\svcs\wam\object
|
|
|
|
--*/
|
|
|
|
# ifndef _OOP_TOKEN_H_
|
|
# define _OOP_TOKEN_H_
|
|
|
|
class CWamOopTokenInfo
|
|
/*++
|
|
|
|
Class description:
|
|
|
|
Class enables modifcation of the impersonation token used for
|
|
OOP applications. Holds SIDs for the WAM_* user account and the
|
|
system account. And provides ModifyTokenForOop() to add access
|
|
allowed aces to the token's default dacl. See NT Bug 259045 for
|
|
details on why this is necessary.
|
|
|
|
Singleton object. The Create/Destroy methods initilize a static
|
|
instance.
|
|
|
|
Public Interface:
|
|
|
|
static Create : Create the instance. Should be called once
|
|
from global initialization code.
|
|
static Destroy : Clean up the instance. Should be called once
|
|
from global cleanup code.
|
|
|
|
static QueryInstance/HasInstance : intance accessors
|
|
|
|
ModifyTokenForOop : Do the work of modifying the tokens default
|
|
DACL.
|
|
|
|
--*/
|
|
{
|
|
public:
|
|
|
|
static
|
|
HRESULT Create( VOID );
|
|
|
|
static
|
|
VOID Destroy( VOID )
|
|
{
|
|
DBG_ASSERT( ms_pInstance != NULL );
|
|
|
|
delete ms_pInstance;
|
|
ms_pInstance = NULL;
|
|
}
|
|
|
|
static
|
|
CWamOopTokenInfo * QueryInstance( VOID )
|
|
{
|
|
DBG_ASSERT( ms_pInstance != NULL );
|
|
return ms_pInstance;
|
|
}
|
|
|
|
static
|
|
BOOL HasInstance( VOID )
|
|
{
|
|
return ( ms_pInstance != NULL );
|
|
}
|
|
|
|
HRESULT ModifyTokenForOop
|
|
(
|
|
HANDLE hThreadToken
|
|
);
|
|
|
|
private:
|
|
|
|
CWamOopTokenInfo()
|
|
: m_pIWAMUserSid( NULL ),
|
|
m_cbIWAMUserSid( 0 ),
|
|
m_pSystemSid( NULL ),
|
|
m_cbSystemSid( 0 )
|
|
{
|
|
}
|
|
|
|
~CWamOopTokenInfo()
|
|
{
|
|
DBG_ASSERT( m_pIWAMUserSid );
|
|
if( m_pIWAMUserSid )
|
|
{
|
|
LocalFree( m_pIWAMUserSid );
|
|
}
|
|
|
|
DBG_ASSERT( m_pSystemSid );
|
|
if( m_pSystemSid )
|
|
{
|
|
LocalFree( m_pSystemSid );
|
|
}
|
|
}
|
|
|
|
HRESULT SetIWAMUserSid
|
|
(
|
|
PSID pSid
|
|
);
|
|
|
|
HRESULT SetSystemSid
|
|
(
|
|
PSID pSid
|
|
);
|
|
|
|
private:
|
|
|
|
PSID m_pIWAMUserSid;
|
|
DWORD m_cbIWAMUserSid;
|
|
|
|
PSID m_pSystemSid;
|
|
DWORD m_cbSystemSid;
|
|
|
|
static CWamOopTokenInfo * ms_pInstance;
|
|
};
|
|
|
|
#endif _OOP_TOKEN_H_
|