feat: working on windows.xbox.system.idl and added logging

This commit is contained in:
CT5
2026-01-29 22:21:17 +11:00
parent 6b3e4997d5
commit 14fe6853c7
5 changed files with 185 additions and 6 deletions

171
idl/Windows.Xbox.System.idl Normal file
View File

@@ -0,0 +1,171 @@
namespace Window.Xbox.System
{
runtimeclass User;
runtimeclass UserDisplayInfo;
runtimeclass UserDisplayInfoChangedEventArgs;
runtimeclass UserAddedEventArgs;
runtimeclass UserRemovedEventArgs;
runtimeclass OnlineStateChangedEventArgs;
runtimeclass GetTokenAndSignatureResult;
runtimeclass AudioDeviceAddedEventArgs;
runtimeclass AudioDeviceRemovedEventArgs;
runtimeclass AudioDeviceChangedEventArgs;
runtimeclass SignInCompletedEventArgs;
runtimeclass SignOutStartedEventArgs;
runtimeclass SignOutCompletedEventArgs;
enum UserPictureSize
{
Small = 0x0001,
Medium = 0x0002,
Large = 0x0003,
ExtraLarge = 0x0004,
};
enum UserOnlineState
{
Unknown = 0x0000,
Offline = 0x0001,
Online = 0x0002,
};
// Placeholder GUID
[uuid(AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
interface IUserStatics : IInspectable
{
Guid GetNetworkCacheIdForUsers(Windows.Foundation.Collections.IVectorView<UINT32> unk);
UserOnlineState OnlineState { get; };
event Windows.Foundation.EventHandler<OnlineStateChangedEventArgs> OnlineStateChanged(Windows.Foundation.EventRegistrationToken unk);
Windows.Foundation.Collections.IVectorView<User> Users { get; };
event Windows.Foundation.EventHandler<UserAddedEventArgs> UserAdded;
event Windows.Foundation.EventHandler<UserRemovedEventArgs> UserRemoved;
User GetUserById(UINT32 Id);
[default_overload, overload("GetTokenAndSignatureAsync")] Windows.Foundation.IAsyncOperation<GetTokenAndSignatureResult> GetTokenAndSignatureAsync(HSTRING url, HSTRING method, HSTRING headers, HSTRING body);
[overload("GetTokenAndSignatureAsync")] Windows.Foundation.IAsyncOperation<GetTokenAndSignatureResult> GetTokenAndSignatureAsync(HSTRING url, HSTRING method, HSTRING headers, Windows.Foundation.Collections.IVector<Byte> body);
[overload("GetTokenAndSignatureAsync")] Windows.Foundation.IAsyncOperation<GetTokenAndSignatureResult> GetTokenAndSignatureAsync(HSTRING url, HSTRING method, HSTRING headers);
event Windows.Foundation.EventHandler<AudioDeviceAddedEventArgs> AudioDeviceAdded;
event Windows.Foundation.EventHandler<AudioDeviceRemovedEventArgs> AudioDeviceRemoved;
event Windows.Foundation.EventHandler<AudioDeviceChangedEventArgs> AudioDeviceChanged;
event Windows.Foundation.EventHandler<SignInCompletedEventArgs> SignInCompleted;
event Windows.Foundation.EventHandler<SignOutStartedEventArgs> SignOutStarted;
event Windows.Foundation.EventHandler<SignOutCompletedEventArgs> SignOutCompleted;
event Windows.Foundation.EventHandler<UserDisplayInfoChangedEventArgs> UserDisplayInfoChanged;
Guid GetNetworkCacheIdForUsers(Windows.Foundation.Collections.IVectorView<unsigned int> unk);
}
// Placeholder GUID
[interface_name("IUser", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
[static(IUserStatics, 1.0)]
runtimeclass User
{
UINT32 Id { get; };
//Windows.Foundation.Collections.IVectorView<IAudioDeviceInfo> AudioDevices { get; };
//Windows.Foundation.Collections.IVectorView<Windows.Xbox.Input.IController> Controllers { get; };
UserDisplayInfo DisplayInfo { get; };
Boolean IsGuest { get; };
Boolean IsSignedIn { get; };
//UserLocation Location { get; };
User Sponsor { get; };
HSTRING XboxUserHash { get; };
HSTRING XboxUserId { get; };
[default_overload, overload("GetTokenAndSignatureAsync")] Windows.Foundation.IAsyncOperation<GetTokenAndSignatureResult> GetTokenAndSignatureAsync(HSTRING url, HSTRING method, HSTRING headers, HSTRING body);
[overload("GetTokenAndSignatureAsync")] Windows.Foundation.IAsyncOperation<GetTokenAndSignatureResult> GetTokenAndSignatureAsync(HSTRING url, HSTRING method, HSTRING headers, Windows.Foundation.Collections.IVector<Byte> body);
[overload("GetTokenAndSignatureAsync")] Windows.Foundation.IAsyncOperation<GetTokenAndSignatureResult> GetTokenAndSignatureAsync(HSTRING url, HSTRING method, HSTRING headers);
}
// Placeholder GUID
[interface_name("IUserDisplayInfo", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass UserDisplayInfo
{
HSTRING Gamertag();
UINT32 GamerScore();
HSTRING ApplicationDisplayName();
HSTRING GameDisplayName();
UINT32 Reputation();
//UserAgeGroup AgeGroup();
Windows.Foundation.Collections.IVectorView<unsigned int> Privileges();
Windows.Foundation.IAsyncOperation<GetPictureResult> GetApplicationPictureAsync(UserPictureSize unk, Windows.Storage.Streams.IBuffer unka);
Windows.Foundation.IAsyncOperation<GetPictureResult> GetGamerPictureAsync(UserPictureSize unk, Windows.Storage.Streams.IBuffer unka);
}
// Placeholder GUID
[interface_name("IUserDisplayInfoChangedEventArgs", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass UserDisplayInfoChangedEventArgs
{
User User { get; };
}
// Placeholder GUID
[interface_name("IUserAddedEventArgs", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass UserAddedEventArgs
{
User User { get; };
}
// Placeholder GUID
[interface_name("IUserRemovedEventArgs", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass UserRemovedEventArgs
{
User User { get; };
}
// Placeholder GUID
[interface_name("IOnlineStateChangedEventArgs", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass OnlineStateChangedEventArgs
{
UserOnlineState State { get; };
}
// Placeholder GUID
[interface_name("IGetTokenAndSignatureResult", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass GetTokenAndSignatureResult
{
HSTRING Signature { get; };
HSTRING Token { get; };
}
// Placeholder GUID
[interface_name("IAudioDeviceAddedEventArgs", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass AudioDeviceAddedEventArgs
{
User User { get; };
//IAudioDeviceInfo AudioDevice { get; };
}
// Placeholder GUID
[interface_name("IAudioDeviceRemovedEventArgs", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass AudioDeviceRemovedEventArgs
{
User User { get; };
//IAudioDeviceInfo AudioDevice { get; };
}
// Placeholder GUID
[interface_name("IAudioDeviceChangedEventArgs", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass AudioDeviceChangedEventArgs
{
User User { get; };
//IAudioDeviceInfo AudioDevice { get; };
}
// Placeholder GUID
[interface_name("ISignInCompletedEventArgs", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass SignInCompletedEventArgs
{
User User { get; };
}
// Placeholder GUID TODO: PLACEHOLDER
[interface_name("ISignOutStartedEventArgs", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass SignOutStartedEventArgs
{
UserOnlineState State { get; };
}
// Placeholder GUID TODO: PLACEHOLDER
[interface_name("ISignOutCompletedEventArgs", AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA)]
runtimeclass SignOutCompletedEventArgs
{
UserOnlineState State { get; };
}
}

View File

@@ -4,6 +4,7 @@
#include <windows.foundation.h>
#include <windows.system.h>
#include <winrt/base.h>
#include "kernelx.h"
using namespace ABI::Windows::System;
using namespace ABI::Windows::Foundation;

View File

@@ -1,12 +1,14 @@
//
// Created by DexrnZacAttack on 1/23/26 using zPc-i2.
//
#ifndef WINDURANGO_KERNEL_H
#define WINDURANGO_KERNEL_H
#pragma once
#include <Windows.h>
#include <bitset>
#include <map>
#include "WinDurango.Common/Interfaces/Storage/Directory.h"
#include "WinDurango.Common/WinDurango.h"
#include "WinDurango.Implementation.WinRT/Interfaces/Storage/Directory.h"
// Most of those came from XWine1
//(More specifically, SlimEra).
@@ -214,4 +216,4 @@ CRITICAL_SECTION XmpAllocationHookLock;
static PXMEMALLOC_ROUTINE XmpAllocRoutine = XMemAllocDefault;
static PXMEMFREE_ROUTINE XmpFreeRoutine = XMemFreeDefault;
#endif // WINDURANGO_KERNEL_H
extern std::shared_ptr<wd::common::WinDurango> winDurango;

View File

@@ -10,6 +10,7 @@ HRESULT EraXboxUserLicenseInformationWrapper::QueryInterface(const IID &riid, vo
}
*ppvObject = nullptr;
winDurango->log.Warn("WinDurango::KernelX::CurrentApp", "No Interface Found: EraXboxUserLicenseInformationWrapper - {}-{}-{}-{}", riid.Data1, riid.Data2, riid.Data3, riid.Data4);
return E_NOINTERFACE;
}
@@ -27,16 +28,19 @@ ULONG EraXboxUserLicenseInformationWrapper::Release()
HRESULT EraXboxUserLicenseInformationWrapper::GetIids(ULONG *iidCount, IID **iids)
{
winDurango->log.Log("WinDurango::KernelX::CurrentApp", "Unimplemented - EraXboxUserLicenseInformationWrapper::GetIids");
return E_NOTIMPL;
}
HRESULT EraXboxUserLicenseInformationWrapper::GetRuntimeClassName(HSTRING *className)
{
winDurango->log.Log("WinDurango::KernelX::CurrentApp", "Unimplemented - EraXboxUserLicenseInformationWrapper::GetRuntimeClassName");
return E_NOTIMPL;
}
HRESULT EraXboxUserLicenseInformationWrapper::GetTrustLevel(TrustLevel *trustLevel)
{
winDurango->log.Log("WinDurango::KernelX::CurrentApp", "Unimplemented - EraXboxUserLicenseInformationWrapper::GetTrustLevel");
return E_NOTIMPL;
}
@@ -73,6 +77,7 @@ HRESULT EraLicenseInformationWrapper::QueryInterface(const IID &riid, void **ppv
}
*ppvObject = nullptr;
winDurango->log.Warn("WinDurango::KernelX::CurrentApp", "No Interface Found: EraLicenseInformationWrapper - {}-{}-{}-{}", riid.Data1, riid.Data2, riid.Data3, riid.Data4);
return E_NOINTERFACE;
}
@@ -105,6 +110,7 @@ HRESULT EraLicenseInformationWrapper::GetTrustLevel(TrustLevel *trustLevel)
HRESULT EraLicenseInformationWrapper::get_ProductLicenses(ABI::Windows::Foundation::Collections::__FIMapView_2_HSTRING_Windows__CApplicationModel__CStore__CProductLicense_t **value)
{
winDurango->log.Log("WinDurango::KernelX::CurrentApp", "Unimplemented - EraLicenseInformationWrapper::get_ProductLicenses");
return E_NOTIMPL;
}
@@ -159,6 +165,7 @@ HRESULT __stdcall EraCurrentAppWrapper::QueryInterface(REFIID riid, void **ppvOb
}
*ppvObject = nullptr;
winDurango->log.Warn("WinDurango::KernelX::CurrentApp", "No Interface Found: EraCurrentAppWrapper - {}-{}-{}-{}", riid.Data1, riid.Data2, riid.Data3, riid.Data4);
return E_NOINTERFACE;
}

View File

@@ -1,7 +1,5 @@
#include "Hooks.h"
#include "WinDurango.Common/Interfaces/Storage/Directory.h"
#include "WinDurango.Common/WinDurango.h"
#include "WinDurango.Implementation.WinRT/Interfaces/Storage/Directory.h"
#include "kernelx.h"
#include "CurrentApp.h"
using namespace ABI::Windows::ApplicationModel::Store;