Files
ZuneShell.dll/UIX/Microsoft/Iris/Markup/NativeMarkupDataQuery.cs
T

124 lines
4.5 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.Markup.NativeMarkupDataQuery
// Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11
// Assembly location: C:\Program Files\Zune\UIX.dll
using Microsoft.Iris.CodeModel.Cpp;
using Microsoft.Iris.OS;
using System;
namespace Microsoft.Iris.Markup
{
internal class NativeMarkupDataQuery : MarkupDataQuery
{
private IntPtr _externalQuery;
private ulong _handleToMe;
private ulong _typeHandle;
private ulong _resultTypeHandle;
private static MarkupDataQueryHandleTable s_handleTable;
public static void InitializeStatics() => s_handleTable = new MarkupDataQueryHandleTable();
public NativeMarkupDataQuery(MarkupDataQuerySchema type, NativeDataProviderWrapper provider)
: base(type)
{
_handleToMe = s_handleTable.RegisterProxy(this);
_typeHandle = type.UniqueId;
_resultTypeHandle = type.ResultType.UniqueId;
_externalQuery = provider.ConstructQuery(type.ProviderName, _typeHandle, _resultTypeHandle, _handleToMe);
ApplyDefaultValues();
}
public override void NotifyInitialized()
{
base.NotifyInitialized();
int num = (int)NativeApi.SpDataQueryNotifyInitialized(_externalQuery);
}
protected override void OnDispose()
{
base.OnDispose();
s_handleTable.ReleaseProxy(_handleToMe);
int num = (int)NativeApi.SpDataBaseObjectSetInternalHandle(_externalQuery, 0UL);
NativeApi.SpReleaseExternalObject(_externalQuery);
}
public override void Refresh()
{
int num = (int)NativeApi.SpDataQueryRefresh(_externalQuery);
}
public override unsafe object Result
{
get
{
UIXVariant propertyValue;
int resultProperty = (int)NativeApi.SpDataQueryGetResultProperty(_externalQuery, out propertyValue);
return UIXVariant.GetValue(propertyValue, TypeSchema.Owner);
}
set
{
UIXVariant* uixVariantPtr = stackalloc UIXVariant[sizeof(UIXVariant)];
UIXVariant.MarshalObject(value, uixVariantPtr);
int num = (int)NativeApi.SpDataQuerySetResultProperty(_externalQuery, uixVariantPtr);
}
}
public override DataProviderQueryStatus Status
{
get
{
DataProviderQueryStatus propertyValue;
int statusProperty = (int)NativeApi.SpDataQueryGetStatusProperty(_externalQuery, out propertyValue);
return propertyValue;
}
}
public override bool Enabled
{
get
{
bool propertyValue;
int enabledProperty = (int)NativeApi.SpDataQueryGetEnabledProperty(_externalQuery, out propertyValue);
return propertyValue;
}
set
{
int num = (int)NativeApi.SpDataQuerySetEnabledProperty(_externalQuery, value);
}
}
protected override bool ExternalObjectGetProperty(string propertyName, out object value)
{
UIXVariant propertyValue;
int property = (int)NativeApi.SpDataBaseObjectGetProperty(_externalQuery, propertyName, out propertyValue);
TypeSchema.FindPropertyDeep(propertyName);
value = UIXVariant.GetValue(propertyValue, TypeSchema.Owner);
return true;
}
protected override unsafe bool ExternalObjectSetProperty(string propertyName, object value)
{
// ISSUE: untyped stack allocation
UIXVariant* uixVariantPtr = stackalloc UIXVariant[sizeof(UIXVariant)];
UIXVariant.MarshalObject(value, uixVariantPtr);
int num = (int)NativeApi.SpDataBaseObjectSetProperty(_externalQuery, propertyName, uixVariantPtr);
return true;
}
protected override IDataProviderBaseObject ExternalAssemblyObject => (IDataProviderBaseObject)null;
public override IntPtr ExternalNativeObject => _externalQuery;
public ulong Handle => _handleToMe;
public static MarkupDataQuery LookupByHandle(ulong handle)
{
MarkupDataQuery markupDataQuery;
s_handleTable.LookupByHandle(handle, out markupDataQuery);
return markupDataQuery;
}
}
}