mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
137 lines
3.3 KiB
C#
137 lines
3.3 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace Microsoft.Zune.Service
|
|
{
|
|
public class WinLiveAvailableInformation : IDisposable
|
|
{
|
|
private readonly CComPtrMgd_003CIWinLiveAvailableInformation_003E m_spWinLiveAvailableInformation;
|
|
|
|
private string m_signinName;
|
|
|
|
private IList m_suggestedNames;
|
|
|
|
public unsafe IList SuggestedNames
|
|
{
|
|
get
|
|
{
|
|
//IL_002a: Expected I, but got I8
|
|
//IL_0040: Expected I, but got I8
|
|
//IL_005c: Expected I, but got I8
|
|
if (m_suggestedNames == null)
|
|
{
|
|
IWinLiveAvailableInformation* p = m_spWinLiveAvailableInformation.p;
|
|
if (p != null)
|
|
{
|
|
int num = ((delegate* unmanaged[Cdecl, Cdecl]<IntPtr, int>)(*(ulong*)(*(long*)p + 48)))((nint)p);
|
|
m_suggestedNames = new ArrayList(num);
|
|
int num2 = 0;
|
|
if (0 < num)
|
|
{
|
|
do
|
|
{
|
|
ushort* ptr = null;
|
|
IWinLiveAvailableInformation* p2 = m_spWinLiveAvailableInformation.p;
|
|
if (((delegate* unmanaged[Cdecl, Cdecl]<IntPtr, int, ushort**, int>)(*(ulong*)(*(long*)p2 + 56)))((nint)p2, num2, &ptr) >= 0)
|
|
{
|
|
m_suggestedNames.Add(new string((char*)ptr));
|
|
}
|
|
_003CModule_003E.SysFreeString(ptr);
|
|
num2++;
|
|
}
|
|
while (num2 < num);
|
|
}
|
|
}
|
|
}
|
|
return m_suggestedNames;
|
|
}
|
|
}
|
|
|
|
public unsafe bool Available
|
|
{
|
|
[return: MarshalAs(UnmanagedType.U1)]
|
|
get
|
|
{
|
|
//IL_001e: Expected I, but got I8
|
|
bool result = false;
|
|
IWinLiveAvailableInformation* p = m_spWinLiveAvailableInformation.p;
|
|
if (p != null)
|
|
{
|
|
result = ((delegate* unmanaged[Cdecl, Cdecl]<IntPtr, byte>)(*(ulong*)(*(long*)p + 40)))((nint)p) != 0;
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public unsafe string SigninName
|
|
{
|
|
get
|
|
{
|
|
//IL_0020: Expected I, but got I8
|
|
//IL_0036: Expected I, but got I8
|
|
if (m_signinName == (string)null)
|
|
{
|
|
CComPtrMgd_003CIWinLiveAvailableInformation_003E spWinLiveAvailableInformation = m_spWinLiveAvailableInformation;
|
|
if (spWinLiveAvailableInformation.p != null)
|
|
{
|
|
ushort* ptr = null;
|
|
IWinLiveAvailableInformation* p = spWinLiveAvailableInformation.p;
|
|
if (((delegate* unmanaged[Cdecl, Cdecl]<IntPtr, ushort**, int>)(*(ulong*)(*(long*)p + 32)))((nint)p, &ptr) >= 0)
|
|
{
|
|
m_signinName = new string((char*)ptr);
|
|
}
|
|
_003CModule_003E.SysFreeString(ptr);
|
|
}
|
|
}
|
|
return m_signinName;
|
|
}
|
|
}
|
|
|
|
internal unsafe WinLiveAvailableInformation(IWinLiveAvailableInformation* pWinLiveAvailableInformation)
|
|
{
|
|
CComPtrMgd_003CIWinLiveAvailableInformation_003E spWinLiveAvailableInformation = new CComPtrMgd_003CIWinLiveAvailableInformation_003E();
|
|
try
|
|
{
|
|
m_spWinLiveAvailableInformation = spWinLiveAvailableInformation;
|
|
base._002Ector();
|
|
m_spWinLiveAvailableInformation.op_Assign(pWinLiveAvailableInformation);
|
|
}
|
|
catch
|
|
{
|
|
//try-fault
|
|
((IDisposable)m_spWinLiveAvailableInformation).Dispose();
|
|
throw;
|
|
}
|
|
}
|
|
|
|
public void _007EWinLiveAvailableInformation()
|
|
{
|
|
}
|
|
|
|
protected virtual void Dispose([MarshalAs(UnmanagedType.U1)] bool P_0)
|
|
{
|
|
if (P_0)
|
|
{
|
|
try
|
|
{
|
|
}
|
|
finally
|
|
{
|
|
((IDisposable)m_spWinLiveAvailableInformation).Dispose();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Finalize();
|
|
}
|
|
}
|
|
|
|
public sealed override void Dispose()
|
|
{
|
|
Dispose(true);
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
}
|
|
}
|