CSid class

This class is a wrapper for a SID (security identifier) structure.

Important

This class and its members can't be used in applications that execute in the Windows Runtime.

Syntax

class CSid;

Members

Public typedefs

Name Description
CSid::CSidArray An array of CSid objects.

Public constructors

Name Description
CSid::CSid The constructor.
CSid::~CSid The destructor.

Public methods

Name Description
CSid::AccountName Returns the name of the account associated with the CSid object.
CSid::Domain Returns the name of the domain associated with the CSid object.
CSid::EqualPrefix Tests SID (security identifier) prefixes for equality.
CSid::GetLength Returns the length of the CSid object.
CSid::GetPSID Returns a pointer to a SID structure.
CSid::GetPSID_IDENTIFIER_AUTHORITY Returns a pointer to the SID_IDENTIFIER_AUTHORITY structure.
CSid::GetSubAuthority Returns a specified subauthority in a SID structure.
CSid::GetSubAuthorityCount Returns the subauthority count.
CSid::IsValid Tests the CSid object for validity.
CSid::LoadAccount Updates the CSid object given the account name and domain, or an existing SID structure.
CSid::Sid Returns the ID string.
CSid::SidNameUse Returns a description of the state of the CSid object.

Operators

Name Description
CSid::operator = Assignment operator.
CSid::operator const SID * Casts a CSid object to a pointer to a SID structure.

Global Operators

Name Description
operator == Tests two security descriptor objects for equality
operator != Tests two security descriptor objects for inequality
operator < Compares relative value of two security descriptor objects.
operator > Compares relative value of two security descriptor objects.
operator <= Compares relative value of two security descriptor objects.
operator >= Compares relative value of two security descriptor objects.

Remarks

The SID structure is a variable-length structure used to uniquely identify users or groups.

Applications shouldn't modify the SID structure directly, but instead use the methods provided in this wrapper class. See also AtlGetOwnerSid, AtlSetGroupSid, AtlGetGroupSid, and AtlSetOwnerSid.

For an introduction to the access control model in Windows, see Access Control in the Windows SDK.

Requirements

Header: atlsecurity.h

CSid::AccountName

Returns the name of the account associated with the CSid object.

LPCTSTR AccountName() const throw(...);

Return value

Returns the LPCTSTR pointing to the name of the account.

Remarks

This method attempts to find a name for the specified SID (security identifier). For full details, see LookupAccountSid.

If no account name for the SID can be found, AccountName returns an empty string. This result can occur if a network timeout prevents this method from finding the name. It also occurs for security identifiers with no corresponding account name, such as an SID that identifies a sign-in session.

CSid::CSid

The constructor.

CSid() throw();
CSid(const SID& rhs) throw(...);
CSid(const CSid& rhs) throw(...);

CSid(
    const SID_IDENTIFIER_AUTHORITY& IdentifierAuthority,
    BYTE nSubAuthorityCount,
    ...) throw(...);

explicit CSid(
    LPCTSTR pszAccountName,
    LPCTSTR pszSystem = NULL) throw(...);

explicit CSid(
    const SID* pSid,
    LPCTSTR pszSystem = NULL) throw(...);

Parameters

rhs
An existing CSid object or SID (security identifier) structure.

IdentifierAuthority
The authority.

nSubAuthorityCount
The subauthority count.

pszAccountName
The account name.

pszSystem
The system name. This string can be the name of a remote computer. If this string is NULL, the local system is used instead.

pSid
A pointer to a SID structure.

Remarks

The constructor initializes the CSid object, setting an internal data member to SidTypeInvalid, or by copying the settings from an existing CSid, SID, or existing account.

If initialization fails, the constructor will throw a CAtlException Class.

CSid::~CSid

The destructor.

virtual ~CSid() throw();

Remarks

The destructor frees any resources acquired by the object.

CSid::CSidArray

An array of CSid objects.

typedef CAtlArray<CSid> CSidArray;

Remarks

This typedef specifies the array type that can be used to retrieve security identifiers from an ACL (access-control list). See CAcl::GetAclEntries.

CSid::Domain

Returns the name of the domain associated with the CSid object.

LPCTSTR Domain() const throw(...);

Return value

Returns the LPCTSTR pointing to the domain.

Remarks

This method attempts to find a name for the specified SID (security identifier). For full details, see LookupAccountSid.

If no account name for the SID can be found, Domain returns the domain as an empty string. This result can occur if a network timeout prevents this method from finding the name. It also occurs for security identifiers with no corresponding account name, such as an SID that identifies a sign-in session.

CSid::EqualPrefix

Tests SID (security identifier) prefixes for equality.

bool EqualPrefix(const SID& rhs) const throw();
bool EqualPrefix(const CSid& rhs) const throw();

Parameters

rhs
The SID (security identifier) structure or CSid object to compare.

Return value

Returns TRUE on success, FALSE on failure.

Remarks

For more information, see EqualPrefixSid.

CSid::GetLength

Returns the length of the CSid object.

UINT GetLength() const throw();

Return value

Returns the length in bytes of the CSid object.

Remarks

If the CSid structure isn't valid, the return value is undefined. Before calling GetLength, use the CSid::IsValid member function to verify that CSid is valid.

Note

Under debug builds the function will cause an ASSERT if the CSid object isn't valid.

CSid::GetPSID

Returns a pointer to a SID (security identifier) structure.

const SID* GetPSID() const throw(...);

Return value

Returns the address of the CSid object's underlying SID structure.

CSid::GetPSID_IDENTIFIER_AUTHORITY

Returns a pointer to the SID_IDENTIFIER_AUTHORITY structure.

const SID_IDENTIFIER_AUTHORITY* GetPSID_IDENTIFIER_AUTHORITY() const throw();

Return value

If the method succeeds, it returns the address of the SID_IDENTIFIER_AUTHORITY structure. If it fails, the return value is undefined. Failure may occur if the CSid object isn't valid, in which case the CSid::IsValid method returns FALSE. The function GetLastError can be called for extended error information.

Note

Under debug builds the function will cause an ASSERT if the CSid object isn't valid.

CSid::GetSubAuthority

Returns a specified subauthority in a SID (security identifier) structure.

DWORD GetSubAuthority(DWORD nSubAuthority) const throw();

Parameters

nSubAuthority
The subauthority.

Return value

Returns the subauthority referenced by nSubAuthority. The subauthority value is a relative identifier (RID).

Remarks

The nSubAuthority parameter specifies an index value identifying the subauthority array element the method will return. The method performs no validation tests on this value. An application can call CSid::GetSubAuthorityCount to discover the range of acceptable values.

Note

Under debug builds the function will cause an ASSERT if the CSid object isn't valid.

CSid::GetSubAuthorityCount

Returns the subauthority count.

UCHAR GetSubAuthorityCount() const throw();

Return value

If the method succeeds, the return value is the subauthority count.

If the method fails, the return value is undefined. The method fails if the CSid object is invalid. To get extended error information, call GetLastError.

Note

Under debug builds the function will cause an ASSERT if the CSid object isn't valid.

CSid::IsValid

Tests the CSid object for validity.

bool IsValid() const throw();

Return value

Returns TRUE if the CSid object is valid, FALSE if not. There's no extended error information for this method; don't call GetLastError.

Remarks

The IsValid method validates the CSid object by verifying that the revision number is within a known range and that the number of subauthorities is less than the maximum.

CSid::LoadAccount

Updates the CSid object given the account name and domain, or an existing SID (security identifier) structure.

bool LoadAccount(
    LPCTSTR pszAccountName,
    LPCTSTR pszSystem = NULL) throw(...);

bool LoadAccount(
    const SID* pSid,
    LPCTSTR pszSystem = NULL) throw(...);

Parameters

pszAccountName
The account name.

pszSystem
The system name. This string can be the name of a remote computer. If this string is NULL, the local system is used instead.

pSid
A pointer to a SID structure.

Return value

Returns TRUE on success, FALSE on failure. To get extended error information, call GetLastError.

Remarks

LoadAccount attempts to find a security identifier for the specified name. For more information, see LookupAccountSid.

CSid::operator =

Assignment operator.

CSid& operator= (const CSid& rhs) throw(...);
CSid& operator= (const SID& rhs) throw(...);

Parameters

rhs
The SID (security identifier) or CSid to assign to the CSid object.

Return value

Returns a reference to the updated CSid object.

operator ==

Tests two security descriptor objects for equality.

bool operator==(
    const CSid& lhs,
    const CSid& rhs) throw();

Parameters

lhs
The SID (security identifier) or CSid that appears on the left side of the == operator.

rhs
The SID (security identifier) or CSid that appears on the right side of the == operator.

Return value

TRUE if the security descriptors are equal, otherwise FALSE.

operator !=

Tests two security descriptor objects for inequality.

bool operator!=(
    const CSid& lhs,
    const CSid& rhs) throw();

Parameters

lhs
The SID (security identifier) or CSid that appears on the left side of the != operator.

rhs
The SID (security identifier) or CSid that appears on the right side of the != operator.

Return value

TRUE if the security descriptors aren't equal, otherwise FALSE.

operator <

Compares relative value of two security descriptor objects.

bool operator<(
    const CSid& lhs,
    const CSid& rhs) throw();

Parameters

lhs
The SID (security identifier) or CSid that appears on the left side of the < operator.

rhs
The SID (security identifier) or CSid that appears on the right side of the < operator.

Return value

TRUE if lhs is less than rhs, otherwise FALSE.

operator <=

Compares relative value of two security descriptor objects.

bool operator<=(
    const CSid& lhs,
    const CSid& rhs) throw();

Parameters

lhs
The SID (security identifier) or CSid that appears on the left side of the <= operator.

rhs
The SID (security identifier) or CSid that appears on the right side of the <= operator.

Return value

TRUE if lhs is less than or equal to rhs, otherwise FALSE.

operator >

Compares relative value of two security descriptor objects.

bool operator>(
    const CSid& lhs,
    const CSid& rhs) throw();

Parameters

lhs
The SID (security identifier) or CSid that appears on the left side of the > operator.

rhs
The SID (security identifier) or CSid that appears on the right side of the > operator.

Return value

TRUE if lhs is greater than rhs, otherwise FALSE.

operator >=

Compares relative value of two security descriptor objects.

bool operator>=(
    const CSid& lhs,
    const CSid& rhs) throw());

Parameters

lhs
The SID (security identifier) or CSid that appears on the left side of the >= operator.

rhs
The SID (security identifier) or CSid that appears on the right side of the >= operator.

Return value

TRUE if lhs is greater than or equal to rhs, otherwise FALSE.

CSid::operator const SID *

Casts a CSid object to a pointer to a SID (security identifier) structure.

operator const SID *() const;

Remarks

Returns the address of the SID structure.

CSid::Sid

Returns the SID (security identifier) structure as a string.

LPCTSTR Sid() const throw(...);

Return value

Returns the SID structure as a string in a format suitable for display, storage, or transmission. Equivalent to ConvertSidToStringSid.

CSid::SidNameUse

Returns a description of the state of the CSid object.

SID_NAME_USE SidNameUse() const throw();

Return value

Returns the value of the data member that stores a value describing the state of the CSid object.

Value Description
SidTypeUser Indicates a user SID (security identifier).
SidTypeGroup Indicates a group SID.
SidTypeDomain Indicates a domain SID.
SidTypeAlias Indicates an alias SID.
SidTypeWellKnownGroup Indicates a SID for a well-known group.
SidTypeDeletedAccount Indicates a SID for a deleted account.
SidTypeInvalid Indicates an invalid SID.
SidTypeUnknown Indicates an unknown SID type.
SidTypeComputer Indicates a SID for a computer.

Remarks

Call CSid::LoadAccount to update the CSid object before calling SidNameUse to return its state. SidNameUse doesn't change the state of the object (by calling to LookupAccountName or LookupAccountSid), but only returns the current state.

See also

Security sample
Class overview
Security global functions
Operators