mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
124 lines
4.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|