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.
 
 
 
 
 
 

179 lines
5.0 KiB

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: misc.h
//
// Definitions and prototypes for miscellaneous stuff
//
//--------------------------------------------------------------------------
#ifndef _MISC_H_
#define _MISC_H_
typedef struct _USER_INFO
{
PSID pSid;
LPCTSTR pszName;
LPCTSTR pszLogonName;
SID_NAME_USE SidType;
} USER_INFO, *PUSER_INFO;
typedef struct _USER_LIST
{
ULONG cUsers;
USER_INFO rgUsers[ANYSIZE_ARRAY];
} USER_LIST, *PUSER_LIST;
PSID GetAceSid(PACE_HEADER pAce);
PSID LocalAllocSid(PSID pOriginal);
void DestroyDPA(HDPA hList);
extern "C" {
#include <ntlsa.h>
}
LSA_HANDLE GetLSAConnection(LPCTSTR pszServer, DWORD dwAccessDesired);
BOOL LookupSid(PSID pSid,
LPCTSTR pszServer,
LPSECURITYINFO2 psi2,
PUSER_LIST *ppUserList);
BOOL LookupSids(HDPA hSids,
LPCTSTR pszServer,
LPSECURITYINFO2 psi2,
PUSER_LIST *ppUserList);
BOOL LookupSidsAsync(HDPA hSids,
LPCTSTR pszServer,
LPSECURITYINFO2 psi2,
HWND hWndNotify,
UINT uMsgNotify,
PHANDLE phThread = NULL);
BOOL BuildUserDisplayName(LPTSTR *ppszDisplayName,
LPCTSTR pszName,
LPCTSTR pszLogonName = NULL);
// Indexes into the SID image list
typedef enum
{
SID_IMAGE_UNKNOWN = 0,
SID_IMAGE_COMPUTER,
SID_IMAGE_GROUP,
SID_IMAGE_LOCALGROUP,
SID_IMAGE_USER
} SID_IMAGE_INDEX;
HIMAGELIST LoadImageList(HINSTANCE hInstance, LPCTSTR pszBitmapID);
SID_IMAGE_INDEX GetSidImageIndex(PSID psid, SID_NAME_USE sidType);
BOOL IsStandalone(LPCTSTR pszMachine, PBOOL pbIsDC = NULL);
BOOL IsDACLCanonical(PACL pDacl);
BOOL IsDenyACL(PACL pDacl,
BOOL fProtected,
DWORD dwFullControlMask,
LPDWORD pdwWarning);
//
// Possible SIDs that can be retrieved using QuerySystemSid.
//
enum UI_SystemSid
{
// Well-known / universal
UI_SID_World = 0,
UI_SID_CreatorOwner,
UI_SID_CreatorGroup,
UI_SID_Dialup,
UI_SID_Network,
UI_SID_Batch,
UI_SID_Interactive,
UI_SID_Service,
UI_SID_AnonymousLogon,
UI_SID_Proxy,
UI_SID_EnterpriseDC,
UI_SID_Self,
UI_SID_AuthenticatedUser,
UI_SID_RestrictedCode,
UI_SID_TerminalServer,
UI_SID_LocalSystem,
// Aliases ("BUILTIN")
UI_SID_Admins,
// UI_SID_Users,
// UI_SID_Guests,
// UI_SID_PowerUsers,
// UI_SID_AccountOps,
// UI_SID_SystemOps,
// UI_SID_PrintOps,
// UI_SID_BackupOps,
// UI_SID_Replicator,
// UI_SID_RasServers,
// Special value that gives the number of valid UI_SID_* types.
// Don't add any new types after this value (add them before).
UI_SID_Count,
// This special value can be used for initializing enum UI_SystemSid
// variables with a known unused quantity. This value should never
// be passed to QuerySystemSid.
UI_SID_Invalid = -1
};
#define COUNT_SYSTEM_SID_TYPES ((int)UI_SID_Count)
#define COUNT_WELL_KNOWN_SYSTEM_SIDS ((int)UI_SID_Admins)
PSID QuerySystemSid(UI_SystemSid SystemSidType);
#define IsNTAuthority(pSid) EqualPrefixSid(pSid, QuerySystemSid(UI_SID_LocalSystem))
#define IsAliasSid(pSid) EqualPrefixSid(pSid, QuerySystemSid(UI_SID_Admins))
#define IsCreatorSid(pSid) EqualPrefixSid(pSid, QuerySystemSid(UI_SID_CreatorOwner))
#define EqualSystemSid(pSid, uiSid) EqualSid(pSid, QuerySystemSid(uiSid))
//
// Possible SIDs that can be retrieved using QueryTokenSid.
//
enum UI_TokenSid
{
UI_TSID_CurrentProcessUser = 0, // Always the logged on user SID
UI_TSID_CurrentProcessOwner, // Generally logged on user SID, but sometimes not (e.g. Administrators)
UI_TSID_CurrentProcessPrimaryGroup,
UI_TSID_Count,
UI_TSID_Invalid = -1
};
#define COUNT_TOKEN_SID_TYPES ((int)UI_TSID_Count)
PSID QueryTokenSid(UI_TokenSid TokenSidType);
PSID GetAuthenticationID(LPCWSTR pszServer);
int CopyUnicodeString(LPTSTR pszDest, ULONG cchDest, PLSA_UNICODE_STRING pSrc);
int CopyUnicodeString(LPTSTR *ppszResult, PLSA_UNICODE_STRING pSrc);
BOOL IsSameGUID(const GUID *p1, const GUID *p2);
#define IsNullGUID(p) (!(p) || IsSameGUID((p), &GUID_NULL))
//
//Get the count of inheritable aces in the acl
//
DWORD GetCountOfInheritableAces(PACL pAcl);
DWORD GetCountOfInheritableAces(PSECURITY_DESCRIPTOR pSD);
BOOL IsAclBloated(HWND hDlg, SECURITY_INFORMATION si, PSECURITY_DESCRIPTOR pSD, DWORD dwOrgInheritAceCount, BOOL bShowHelp);
HRESULT MakeBold (HWND hwnd, HFONT * phNewFont);
BOOL
DoDisabledCheck(IN HWND hWnd,
IN PDS_SELECTION_LIST pDsSelList);
BOOL
IsCallBackAcePresentInSD(PSECURITY_DESCRIPTOR pSD);
BOOL
IsCallBackAcePresentInAcl(PACL pAcl);
#endif // _MISC_H_