class LiveIdentity::Identities

Attributes

peihEnumHandle[R]

Public Class Methods

finalize(peihEnumHandle) click to toggle source
# File lib/live_identity.rb, line 183
def self.finalize(peihEnumHandle)
    Proc.new do
        hr = IDCRL.CloseEnumIdentitiesHandle(peihEnumHandle)
        raise LiveIdentityError.new(hr) if LiveIdentity::IsError?(hr)
    end
end
new(cachedCredType) click to toggle source
# File lib/live_identity.rb, line 172
def initialize(cachedCredType)
    @peihEnumHandle = nil
    szCachedCredType = nil
    szCachedCredType = StringToWSTR(cachedCredType) if cachedCredType
    peihEnumHandle = FFI::MemoryPointer.new(:PassportEnumIdentitiesHandlePointer)
    hr = IDCRL.EnumIdentitiesWithCachedCredentials(szCachedCredType, peihEnumHandle)
    raise LiveIdentityError.new(hr) if LiveIdentity::IsError?(hr)
    @peihEnumHandle = peihEnumHandle.read_ulong
    ObjectSpace.define_finalizer(self, self.class.finalize(@peihEnumHandle))
end

Public Instance Methods

GetAllIdentityNames() click to toggle source
# File lib/live_identity.rb, line 200
def GetAllIdentityNames
    identityNames = []
    loop do
        identityName = GetNextIdentityName()
        break unless identityName
        identityNames << identityName
    end
    identityNames
end
GetNextIdentityName() click to toggle source
# File lib/live_identity.rb, line 190
def GetNextIdentityName
    wszMemberName = FFI::MemoryPointer.new(:PLPWSTR)
    hr = IDCRL.NextIdentity(@peihEnumHandle, wszMemberName)
    raise LiveIdentityError.new(hr) if LiveIdentity::IsError?(hr)
    return nil if hr == IDCRL::HRESULT::PPCRL_S_NO_MORE_IDENTITIES
    memberName = read_wide_string(wszMemberName.read_pointer)
    LiveIdentity::FreeMemory(wszMemberName.read_pointer)
    memberName
end