mirror of
https://github.com/WinDurango/WinDurango.git
synced 2026-05-01 23:09:09 -05:00
Enhance WASAPI thread affinity and logging functionality
- Implemented validation in `SetWasapiThreadAffinityMask_X` to manage thread affinity masks. - Added `FormatString` method in `Logger.h` for printf-style logging. - Refactored `SetWindow` in `FrameworkViewWrapper.cpp` to use `ComPtr` and improved exception handling in `Run`. - Included logging in `NetworkInformationWrapperX` for `QueryInterface`. - Updated `mfplat.def` for clearer export definitions. - Enhanced event handling in `Windows.Xbox.System.User` for sign-in and sign-out events.
This commit is contained in:
@@ -65,6 +65,19 @@ MMDEVAPI_EXPORT_ORDINAL(DllUnregisterServer, 38)
|
||||
void DisableBitstreamOut_X( ) {}
|
||||
HRESULT EnableSpatialAudio_X( ) { return S_OK; }
|
||||
void RestoreBitstreamOut_X( ) {}
|
||||
DWORD_PTR SetWasapiThreadAffinityMask_X(DWORD_PTR dwThreadAffinityMask) { return 0; }
|
||||
|
||||
DWORD_PTR __stdcall SetWasapiThreadAffinityMask_X(DWORD_PTR dwThreadAffinityMask)
|
||||
{
|
||||
// Make sure the requested mask is valid for this process.
|
||||
DWORD_PTR processMask = 0, systemMask = 0;
|
||||
if (!GetProcessAffinityMask(GetCurrentProcess( ), &processMask, &systemMask))
|
||||
return 0; // unexpected failure
|
||||
|
||||
if ((dwThreadAffinityMask & processMask) == 0)
|
||||
dwThreadAffinityMask &= processMask;
|
||||
|
||||
// Apply and return the previous affinity mask (0 on failure).
|
||||
return SetThreadAffinityMask(GetCurrentThread( ), dwThreadAffinityMask);
|
||||
}
|
||||
void RefreshWasapiDeviceList_X() {}
|
||||
|
||||
|
||||
@@ -424,7 +424,6 @@ LSTATUS __fastcall XblRegReadValue_X(HKEY hKey, LPCWSTR valueName, int expectedT
|
||||
}
|
||||
__int64 __fastcall XblRegReadModuleTitleInfo_X(HINSTANCE a1, const unsigned __int16* a2, void* a3, unsigned int a4)
|
||||
{
|
||||
LOG_DEBUG("XblRegReadModuleTitleInfo_X called with a1: %p, a2: %s, a3: %p, a4: %u", a1, a2 ? a2 : L"nullptr", a3, a4);
|
||||
unsigned int result;
|
||||
HKEY hKey = nullptr;
|
||||
int useSystemTitleId = 0;
|
||||
|
||||
+31
-10
@@ -70,6 +70,12 @@ private:
|
||||
}
|
||||
static inline std::ofstream logFile{ GenerateLogFileName( ), std::ios::app };
|
||||
|
||||
static inline std::string FormatString(const char* fmt, va_list args) {
|
||||
char buffer[ 1024 ];
|
||||
vsnprintf(buffer, sizeof(buffer), fmt, args);
|
||||
return std::string(buffer);
|
||||
}
|
||||
|
||||
static const char* ToString(LogLevel level) {
|
||||
switch (level) {
|
||||
case LogLevel::Debug: return "DEBUG";
|
||||
@@ -110,7 +116,7 @@ private:
|
||||
static void PrintWithContext(int line, const char* file, const char* function, const char* fmt, va_list args) {
|
||||
char formatted[ 1024 ];
|
||||
vsnprintf(formatted, sizeof(formatted), fmt, args);
|
||||
Log(LogLevel::NotImplemented, formatted, file, line, function);
|
||||
Logf(LogLevel::NotImplemented, formatted, file, line, function);
|
||||
}
|
||||
public:
|
||||
static void NotImplemented(const char* file, int line, const char* function, const char* fmt = "", ...) {
|
||||
@@ -119,11 +125,17 @@ public:
|
||||
PrintWithContext(line, file, function, fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
static void Log(LogLevel level, const char* file, int line, const char* function, const char* fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
std::string message = FormatString(fmt, args);
|
||||
va_end(args);
|
||||
Logf(level, message, file, line, function);
|
||||
}
|
||||
// -------------------------------
|
||||
// Narrow logging (std::string)
|
||||
// -------------------------------
|
||||
static void Log(LogLevel level, const std::string& message, const char* file, int line, const char* function) {
|
||||
static void Logf(LogLevel level, const std::string& message, const char* file, int line, const char* function) {
|
||||
std::lock_guard<std::mutex> lock(logMutex);
|
||||
std::string timeStr = CurrentTime( );
|
||||
std::string func = ExtractFunctionName(function);
|
||||
@@ -303,11 +315,11 @@ public:
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// Macro-based log wrappers (captures callsite info)
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
#define LOG_DEBUG(msg) Logger::Log(LogLevel::Debug, msg, __FILE__, __LINE__, FUNCTION_NAME)
|
||||
#define LOG_INFO(msg) Logger::Log(LogLevel::Info, msg, __FILE__, __LINE__, FUNCTION_NAME)
|
||||
#define LOG_WARNING(msg) Logger::Log(LogLevel::Warning, msg, __FILE__, __LINE__, FUNCTION_NAME)
|
||||
#define LOG_ERROR(msg) Logger::Log(LogLevel::Error, msg, __FILE__, __LINE__, FUNCTION_NAME)
|
||||
#define LOG_FATAL(msg) Logger::Log(LogLevel::Fatal, msg, __FILE__, __LINE__, FUNCTION_NAME)
|
||||
#define LOG_DEBUG(fmt, ...) Logger::Log(LogLevel::Debug, __FILE__, __LINE__, FUNCTION_NAME, fmt, ##__VA_ARGS__)
|
||||
#define LOG_INFO(fmt, ...) Logger::Log(LogLevel::Info, __FILE__, __LINE__, FUNCTION_NAME, fmt, ##__VA_ARGS__)
|
||||
#define LOG_WARNING(fmt, ...) Logger::Log(LogLevel::Warning, __FILE__, __LINE__, FUNCTION_NAME, fmt, ##__VA_ARGS__)
|
||||
#define LOG_ERROR(fmt, ...) Logger::Log(LogLevel::Error, __FILE__, __LINE__, FUNCTION_NAME, fmt, ##__VA_ARGS__)
|
||||
#define LOG_FATAL(fmt, ...) Logger::Log(LogLevel::Fatal, __FILE__, __LINE__, FUNCTION_NAME, fmt, ##__VA_ARGS__)
|
||||
#define LOG_NOT_IMPLEMENTED(...) Logger::NotImplemented(__FILE__, __LINE__, FUNCTION_NAME, ##__VA_ARGS__)
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
@@ -319,12 +331,21 @@ public:
|
||||
#define LOG_ERROR_W(msg) Logger::Log(LogLevel::Error, msg, _CRT_WIDE(__FILE__), __LINE__, _CRT_WIDE(FUNCTION_NAME))
|
||||
#define LOG_FATAL_W(msg) Logger::Log(LogLevel::Fatal, msg, _CRT_WIDE(__FILE__), __LINE__, _CRT_WIDE(FUNCTION_NAME))
|
||||
#define LOG_NOT_IMPLEMENTED_W(...) Logger::NotImplementedW(_CRT_WIDE(__FILE__), __LINE__, _CRT_WIDE(FUNCTION_NAME), ##__VA_ARGS__)
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// printf-style logging macros (captures callsite info)
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
#define LOGF_DEBUG(fmt, ...) Logger::Log(LogLevel::Debug, __FILE__, __LINE__, FUNCTION_NAME, fmt, ##__VA_ARGS__)
|
||||
#define LOGF_INFO(fmt, ...) Logger::Log(LogLevel::Info, __FILE__, __LINE__, FUNCTION_NAME, fmt, ##__VA_ARGS__)
|
||||
#define LOGF_WARNING(fmt, ...) Logger::Log(LogLevel::Warning, __FILE__, __LINE__, FUNCTION_NAME, fmt, ##__VA_ARGS__)
|
||||
#define LOGF_ERROR(fmt, ...) Logger::Log(LogLevel::Error, __FILE__, __LINE__, FUNCTION_NAME, fmt, ##__VA_ARGS__)
|
||||
#define LOGF_FATAL(fmt, ...) Logger::Log(LogLevel::Fatal, __FILE__, __LINE__, FUNCTION_NAME, fmt, ##__VA_ARGS__)
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// Debug-only short macros (auto-disables in Release)
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
#ifdef _DEBUG
|
||||
#define DEBUG_PRINT() Logger::Debug()
|
||||
#define DEBUGPRINT(fmt, ...) Logger::Debug(fmt, ##__VA_ARGS__)
|
||||
#define DEBUG_PRINT() printf("Line: %d --> %s --> %s \r\n", __LINE__,ExtractProjectName(__FILE__) ,ExtractFunctionName(FUNCTION_NAME) )
|
||||
#define DEBUGPRINT(fmt, ...) printf("Line: %d --> %s --> %s " fmt "\r\n", __LINE__ , ExtractProjectName(__FILE__), __FUNCTION__ , ##__VA_ARGS__)
|
||||
#else
|
||||
#define DEBUG_PRINT()
|
||||
#define DEBUGPRINT(fmt, ...)
|
||||
|
||||
@@ -9,23 +9,45 @@ HRESULT __stdcall FrameworkViewWrapper::Initialize(ABI::Windows::ApplicationMode
|
||||
return m_realView->Initialize(applicationView);
|
||||
}
|
||||
|
||||
HRESULT __stdcall FrameworkViewWrapper::SetWindow(ABI::Windows::UI::Core::ICoreWindow* window)
|
||||
HRESULT STDMETHODCALLTYPE FrameworkViewWrapper::SetWindow(ABI::Windows::UI::Core::ICoreWindow* window)
|
||||
{
|
||||
// Finally Wraps the coreWindow with xbox CoreWindow
|
||||
window = reinterpret_cast<ICoreWindow*>(new CoreWindowWrapperX((CoreWindow*)window));
|
||||
return m_realView->SetWindow(window);
|
||||
Microsoft::WRL::ComPtr<ABI::Windows::UI::Core::ICoreWindow> original(window);
|
||||
Microsoft::WRL::ComPtr<ABI::Windows::UI::Core::ICoreWindow> wrapped;
|
||||
|
||||
// Create the wrapper using MakeAndInitialize
|
||||
HRESULT hr = Microsoft::WRL::MakeAndInitialize<CoreWindowWrapperX>(&wrapped, original);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
return hr;
|
||||
}
|
||||
|
||||
// Forward to the real view with the wrapped ICoreWindow
|
||||
return m_realView->SetWindow(wrapped.Get());
|
||||
}
|
||||
|
||||
|
||||
HRESULT __stdcall FrameworkViewWrapper::Load(HSTRING entryPoint)
|
||||
{
|
||||
return m_realView->Load(entryPoint);
|
||||
}
|
||||
|
||||
HRESULT __stdcall FrameworkViewWrapper::Run(void)
|
||||
{
|
||||
return m_realView->Run();
|
||||
#include <winrt/Windows.Foundation.h> // Include necessary namespace for Platform::COMException
|
||||
|
||||
HRESULT __stdcall FrameworkViewWrapper::Run()
|
||||
{
|
||||
try
|
||||
{
|
||||
wprintf(L"Entering Run()\n");
|
||||
return m_realView->Run();
|
||||
}
|
||||
catch (winrt::hresult_error const& ex) // Replace Platform::COMException with winrt::hresult_error
|
||||
{
|
||||
wprintf(L"COMException caught in Run: HRESULT=0x%08X\n", ex.code());
|
||||
throw; // Re-throw for debugger, or return E_FAIL
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
HRESULT __stdcall FrameworkViewWrapper::Uninitialize(void)
|
||||
{
|
||||
return m_realView->Uninitialize();
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "pch.h"
|
||||
#include "NetworkInformationWrapperX.h"
|
||||
#include "../common/Logger.h"
|
||||
|
||||
NetworkInformationWrapperX::NetworkInformationWrapperX(INetworkInformationStatics* realNetworkInfo)
|
||||
: m_realNetworkInfo(realNetworkInfo)
|
||||
@@ -11,6 +12,7 @@ NetworkInformationWrapperX::NetworkInformationWrapperX(INetworkInformationStatic
|
||||
|
||||
HRESULT __stdcall NetworkInformationWrapperX::QueryInterface(REFIID riid, void** ppvObject)
|
||||
{
|
||||
LOG_DEBUG("[NetworkInformationWrapperX] QueryInterface called");
|
||||
LPOLESTR str = nullptr;
|
||||
StringFromIID(riid, &str);
|
||||
//wprintf(L"[NetworkInformationWrapperX] QueryInterface called for IID: %ls\n", str);
|
||||
|
||||
+140
-140
@@ -1,142 +1,142 @@
|
||||
LIBRARY mfplat
|
||||
EXPORTS
|
||||
CopyPropVariant=fCopyPropVariant @1
|
||||
CreatePropVariant=fCreatePropVariant @2
|
||||
CreatePropertyStore=fCreatePropertyStore @3
|
||||
DestroyPropVariant=fDestroyPropVariant @4
|
||||
GetAMSubtypeFromD3DFormat=fGetAMSubtypeFromD3DFormat @5
|
||||
GetD3DFormatFromMFSubtype=fGetD3DFormatFromMFSubtype @6
|
||||
LFGetGlobalPool=fLFGetGlobalPool @7
|
||||
MFAddPeriodicCallback=fMFAddPeriodicCallback @8
|
||||
MFAllocateSerialWorkQueue=fMFAllocateSerialWorkQueue @9
|
||||
MFAllocateWorkQueue=fMFAllocateWorkQueue @10
|
||||
MFAllocateWorkQueueEx=fMFAllocateWorkQueueEx @11
|
||||
MFAppendCollection=fMFAppendCollection @12
|
||||
MFAverageTimePerFrameToFrameRate=fMFAverageTimePerFrameToFrameRate @13
|
||||
MFBeginCreateFile=fMFBeginCreateFile @14
|
||||
MFBlockThread=fMFBlockThread @15
|
||||
MFCalculateBitmapImageSize=fMFCalculateBitmapImageSize @16
|
||||
MFCalculateImageSize=fMFCalculateImageSize @17
|
||||
MFCancelCreateFile=fMFCancelCreateFile @18
|
||||
MFCancelWorkItem=fMFCancelWorkItem @19
|
||||
MFConvertColorInfoFromDXVA=fMFConvertColorInfoFromDXVA @20
|
||||
MFConvertColorInfoToDXVA=fMFConvertColorInfoToDXVA @21
|
||||
MFConvertFromFP16Array=fMFConvertFromFP16Array @22
|
||||
MFConvertToFP16Array=fMFConvertToFP16Array @23
|
||||
MFCopyImage=fMFCopyImage @24
|
||||
MFCreate2DMediaBuffer=fMFCreate2DMediaBuffer @25
|
||||
MFCreateAMMediaTypeFromMFMediaType=fMFCreateAMMediaTypeFromMFMediaType @26
|
||||
MFCreateAlignedMemoryBuffer=fMFCreateAlignedMemoryBuffer @27
|
||||
MFCreateAsyncResult=fMFCreateAsyncResult @28
|
||||
MFCreateAttributes=fMFCreateAttributes @29
|
||||
MFCreateAudioMediaType=fMFCreateAudioMediaType @30
|
||||
MFCreateCollection=fMFCreateCollection @31
|
||||
MFCreateDXGIDeviceManager=fMFCreateDXGIDeviceManager @32
|
||||
MFCreateDXGISurfaceBufferX=fMFCreateDXGISurfaceBufferX @33
|
||||
MFCreateDxvaSampleRendererX=fMFCreateDxvaSampleRendererX @34
|
||||
MFCreateEventQueue=fMFCreateEventQueue @35
|
||||
MFCreateFile=fMFCreateFile @36
|
||||
MFCreateFileFromHandle=fMFCreateFileFromHandle @37
|
||||
MFCreateLegacyMediaBufferOnMFMediaBuffer=fMFCreateLegacyMediaBufferOnMFMediaBuffer @38
|
||||
MFCreateMFByteStreamOnStream=fMFCreateMFByteStreamOnStream @39
|
||||
MFCreateMFVideoFormatFromMFMediaType=fMFCreateMFVideoFormatFromMFMediaType @40
|
||||
MFCreateMediaBufferFromMediaType=fMFCreateMediaBufferFromMediaType @41
|
||||
MFCreateMediaBufferWrapper=fMFCreateMediaBufferWrapper @42
|
||||
MFCreateMediaEvent=fMFCreateMediaEvent @43
|
||||
MFCreateMediaEventResult=fMFCreateMediaEventResult @44
|
||||
MFCreateMediaType=fMFCreateMediaType @45
|
||||
MFCreateMediaTypeFromRepresentation=fMFCreateMediaTypeFromRepresentation @46
|
||||
MFCreateMemoryBuffer=fMFCreateMemoryBuffer @47
|
||||
MFCreateMemoryStream=fMFCreateMemoryStream @48
|
||||
MFCreateNV12ToRGB32ConverterX=fMFCreateNV12ToRGB32ConverterX @49
|
||||
MFCreatePathFromURL=fMFCreatePathFromURL @50
|
||||
MFCreatePresentationDescriptor=fMFCreatePresentationDescriptor @51
|
||||
MFCreateRGB32ToNV12ConverterX=fMFCreateRGB32ToNV12ConverterX @52
|
||||
MFCreateSample=fMFCreateSample @53
|
||||
MFCreateSourceResolver=fMFCreateSourceResolver @54
|
||||
MFCreateSourceResolverInternal=fMFCreateSourceResolverInternal @55
|
||||
MFCreateStreamDescriptor=fMFCreateStreamDescriptor @56
|
||||
MFCreateSystemTimeSource=fMFCreateSystemTimeSource @57
|
||||
MFCreateTempFile=fMFCreateTempFile @58
|
||||
MFCreateTrackedSample=fMFCreateTrackedSample @59
|
||||
MFCreateURLFromPath=fMFCreateURLFromPath @60
|
||||
MFCreateVideoMediaType=fMFCreateVideoMediaType @61
|
||||
MFCreateVideoMediaTypeFromBitMapInfoHeader=fMFCreateVideoMediaTypeFromBitMapInfoHeader @62
|
||||
MFCreateVideoMediaTypeFromBitMapInfoHeaderEx=fMFCreateVideoMediaTypeFromBitMapInfoHeaderEx @63
|
||||
MFCreateVideoMediaTypeFromSubtype=fMFCreateVideoMediaTypeFromSubtype @64
|
||||
MFCreateVideoMediaTypeFromVideoInfoHeader=fMFCreateVideoMediaTypeFromVideoInfoHeader @65
|
||||
MFCreateVideoMediaTypeFromVideoInfoHeader2=fMFCreateVideoMediaTypeFromVideoInfoHeader2 @66
|
||||
MFCreateVideoSampleAllocatorEx=fMFCreateVideoSampleAllocatorEx @67
|
||||
MFCreateWaveFormatExFromMFMediaType=fMFCreateWaveFormatExFromMFMediaType @68
|
||||
MFDeserializeAttributesFromStream=fMFDeserializeAttributesFromStream @69
|
||||
MFDeserializeEvent=fMFDeserializeEvent @70
|
||||
MFDeserializeMediaTypeFromStream=fMFDeserializeMediaTypeFromStream @71
|
||||
MFDeserializePresentationDescriptor=fMFDeserializePresentationDescriptor @72
|
||||
MFEndCreateFile=fMFEndCreateFile @73
|
||||
MFFrameRateToAverageTimePerFrame=fMFFrameRateToAverageTimePerFrame @74
|
||||
MFGetAttributesAsBlob=fMFGetAttributesAsBlob @75
|
||||
MFGetAttributesAsBlobSize=fMFGetAttributesAsBlobSize @76
|
||||
MFGetConfigurationDWORD=fMFGetConfigurationDWORD @77
|
||||
MFGetConfigurationPolicy=fMFGetConfigurationPolicy @78
|
||||
MFGetConfigurationStore=fMFGetConfigurationStore @79
|
||||
MFGetConfigurationString=fMFGetConfigurationString @80
|
||||
MFGetPlaneSize=fMFGetPlaneSize @81
|
||||
MFGetPlatform=fMFGetPlatform @82
|
||||
MFGetPrivateWorkqueues=fMFGetPrivateWorkqueues @83
|
||||
MFGetStrideForBitmapInfoHeader=fMFGetStrideForBitmapInfoHeader @84
|
||||
MFGetSupportedMimeTypes=fMFGetSupportedMimeTypes @85
|
||||
MFGetSupportedSchemes=fMFGetSupportedSchemes @86
|
||||
MFGetSystemTime=fMFGetSystemTime @87
|
||||
MFGetTimerPeriodicity=fMFGetTimerPeriodicity @88
|
||||
MFGetUncompressedVideoFormat=fMFGetUncompressedVideoFormat @89
|
||||
MFGetWorkQueueMMCSSTaskId=fMFGetWorkQueueMMCSSTaskId @90
|
||||
MFHeapAlloc=fMFHeapAlloc @91
|
||||
MFHeapFree=fMFHeapFree @92
|
||||
MFInitAMMediaTypeFromMFMediaType=fMFInitAMMediaTypeFromMFMediaType @93
|
||||
MFInitAttributesFromBlob=fMFInitAttributesFromBlob @94
|
||||
MFInitMediaTypeFromAMMediaType=fMFInitMediaTypeFromAMMediaType @95
|
||||
MFInitMediaTypeFromMFVideoFormat=fMFInitMediaTypeFromMFVideoFormat @96
|
||||
MFInitMediaTypeFromVideoInfoHeader=fMFInitMediaTypeFromVideoInfoHeader @97
|
||||
MFInitMediaTypeFromVideoInfoHeader2=fMFInitMediaTypeFromVideoInfoHeader2 @98
|
||||
MFInitMediaTypeFromWaveFormatEx=fMFInitMediaTypeFromWaveFormatEx @99
|
||||
MFInitVideoFormat=fMFInitVideoFormat @100
|
||||
MFInitVideoFormat_RGB=fMFInitVideoFormat_RGB @101
|
||||
MFInvokeCallback=fMFInvokeCallback @102
|
||||
MFJoinIoPort=fMFJoinIoPort @103
|
||||
MFJoinWorkQueue=fMFJoinWorkQueue @104
|
||||
MFLockDXGIDeviceManager=fMFLockDXGIDeviceManager @105
|
||||
MFLockPlatform=fMFLockPlatform @106
|
||||
MFLockSharedWorkQueue=fMFLockSharedWorkQueue @107
|
||||
MFLockWorkQueue=fMFLockWorkQueue @108
|
||||
MFMapDX9FormatToDXGIFormat=fMFMapDX9FormatToDXGIFormat @109
|
||||
MFMapDXGIFormatToDX9Format=fMFMapDXGIFormatToDX9Format @110
|
||||
MFPutWaitingWorkItem=fMFPutWaitingWorkItem @111
|
||||
MFPutWorkItem=fMFPutWorkItem @112
|
||||
MFPutWorkItem2=fMFPutWorkItem2 @113
|
||||
MFPutWorkItemEx=fMFPutWorkItemEx @114
|
||||
MFPutWorkItemEx2=fMFPutWorkItemEx2 @115
|
||||
MFRemovePeriodicCallback=fMFRemovePeriodicCallback @116
|
||||
MFResetDXGIDeviceManagerX= MFResetDXGIDeviceManager_X @117
|
||||
MFScheduleWorkItem=fMFScheduleWorkItem @118
|
||||
MFScheduleWorkItemEx=fMFScheduleWorkItemEx @119
|
||||
MFSerializeAttributesToStream=fMFSerializeAttributesToStream @120
|
||||
MFSerializeEvent=fMFSerializeEvent @121
|
||||
MFSerializeMediaTypeToStream=fMFSerializeMediaTypeToStream @122
|
||||
MFSerializePresentationDescriptor=fMFSerializePresentationDescriptor @123
|
||||
MFShutdown=fMFShutdown @124
|
||||
MFStartup=fMFStartup @125
|
||||
MFTEnumEx=fMFTEnumEx @126
|
||||
MFTraceError=fMFTraceError @127
|
||||
MFTraceFuncEnter=fMFTraceFuncEnter @128
|
||||
MFUnblockThread=fMFUnblockThread @129
|
||||
MFUnjoinWorkQueue=fMFUnjoinWorkQueue @130
|
||||
MFUnlockDXGIDeviceManager=fMFUnlockDXGIDeviceManager @131
|
||||
MFUnlockPlatform=fMFUnlockPlatform @132
|
||||
MFUnlockWorkQueue=fMFUnlockWorkQueue @133
|
||||
MFUnwrapMediaType=fMFUnwrapMediaType @134
|
||||
MFValidateMediaTypeSize=fMFValidateMediaTypeSize @135
|
||||
MFWrapMediaType=fMFWrapMediaType @136
|
||||
MFllMulDiv=fMFllMulDiv @137
|
||||
PropVariantFromStream=fPropVariantFromStream @138
|
||||
PropVariantToStream=fPropVariantToStream @139
|
||||
ValidateWaveFormat=fValidateWaveFormat @140
|
||||
CopyPropVariant = fCopyPropVariant @1
|
||||
CreatePropVariant = fCreatePropVariant @2
|
||||
CreatePropertyStore = fCreatePropertyStore @3
|
||||
DestroyPropVariant = fDestroyPropVariant @4
|
||||
GetAMSubtypeFromD3DFormat = fGetAMSubtypeFromD3DFormat @5
|
||||
GetD3DFormatFromMFSubtype = fGetD3DFormatFromMFSubtype @6
|
||||
LFGetGlobalPool = fLFGetGlobalPool @7
|
||||
MFAddPeriodicCallback = fMFAddPeriodicCallback @8
|
||||
MFAllocateSerialWorkQueue = fMFAllocateSerialWorkQueue @9
|
||||
MFAllocateWorkQueue = fMFAllocateWorkQueue @10
|
||||
MFAllocateWorkQueueEx = fMFAllocateWorkQueueEx @11
|
||||
MFAppendCollection = fMFAppendCollection @12
|
||||
MFAverageTimePerFrameToFrameRate = fMFAverageTimePerFrameToFrameRate @13
|
||||
MFBeginCreateFile = fMFBeginCreateFile @14
|
||||
MFBlockThread = fMFBlockThread @15
|
||||
MFCalculateBitmapImageSize = fMFCalculateBitmapImageSize @16
|
||||
MFCalculateImageSize = fMFCalculateImageSize @17
|
||||
MFCancelCreateFile = fMFCancelCreateFile @18
|
||||
MFCancelWorkItem = fMFCancelWorkItem @19
|
||||
MFConvertColorInfoFromDXVA = fMFConvertColorInfoFromDXVA @20
|
||||
MFConvertColorInfoToDXVA = fMFConvertColorInfoToDXVA @21
|
||||
MFConvertFromFP16Array = fMFConvertFromFP16Array @22
|
||||
MFConvertToFP16Array = fMFConvertToFP16Array @23
|
||||
MFCopyImage = fMFCopyImage @24
|
||||
MFCreate2DMediaBuffer = fMFCreate2DMediaBuffer @25
|
||||
MFCreateAMMediaTypeFromMFMediaType = fMFCreateAMMediaTypeFromMFMediaType @26
|
||||
MFCreateAlignedMemoryBuffer = fMFCreateAlignedMemoryBuffer @27
|
||||
MFCreateAsyncResult = fMFCreateAsyncResult @28
|
||||
MFCreateAttributes = fMFCreateAttributes @29
|
||||
MFCreateAudioMediaType = fMFCreateAudioMediaType @30
|
||||
MFCreateCollection = fMFCreateCollection @31
|
||||
MFCreateDXGIDeviceManager = fMFCreateDXGIDeviceManager @32
|
||||
MFCreateDXGISurfaceBufferX = fMFCreateDXGISurfaceBufferX @33
|
||||
MFCreateDxvaSampleRendererX = fMFCreateDxvaSampleRendererX @34
|
||||
MFCreateEventQueue = fMFCreateEventQueue @35
|
||||
MFCreateFile = fMFCreateFile @36
|
||||
MFCreateFileFromHandle = fMFCreateFileFromHandle @37
|
||||
MFCreateLegacyMediaBufferOnMFMediaBuffer = fMFCreateLegacyMediaBufferOnMFMediaBuffer @38
|
||||
MFCreateMFByteStreamOnStream = fMFCreateMFByteStreamOnStream @39
|
||||
MFCreateMFVideoFormatFromMFMediaType = fMFCreateMFVideoFormatFromMFMediaType @40
|
||||
MFCreateMediaBufferFromMediaType = fMFCreateMediaBufferFromMediaType @41
|
||||
MFCreateMediaBufferWrapper = fMFCreateMediaBufferWrapper @42
|
||||
MFCreateMediaEvent = fMFCreateMediaEvent @43
|
||||
MFCreateMediaEventResult = fMFCreateMediaEventResult @44
|
||||
MFCreateMediaType = fMFCreateMediaType @45
|
||||
MFCreateMediaTypeFromRepresentation = fMFCreateMediaTypeFromRepresentation @46
|
||||
MFCreateMemoryBuffer = fMFCreateMemoryBuffer @47
|
||||
MFCreateMemoryStream = fMFCreateMemoryStream @48
|
||||
MFCreateNV12ToRGB32ConverterX = fMFCreateNV12ToRGB32ConverterX @49
|
||||
MFCreatePathFromURL = fMFCreatePathFromURL @50
|
||||
MFCreatePresentationDescriptor = fMFCreatePresentationDescriptor @51
|
||||
MFCreateRGB32ToNV12ConverterX = fMFCreateRGB32ToNV12ConverterX @52
|
||||
MFCreateSample = fMFCreateSample @53
|
||||
MFCreateSourceResolver = fMFCreateSourceResolver @54
|
||||
MFCreateSourceResolverInternal = fMFCreateSourceResolverInternal @55
|
||||
MFCreateStreamDescriptor = fMFCreateStreamDescriptor @56
|
||||
MFCreateSystemTimeSource = fMFCreateSystemTimeSource @57
|
||||
MFCreateTempFile = fMFCreateTempFile @58
|
||||
MFCreateTrackedSample = fMFCreateTrackedSample @59
|
||||
MFCreateURLFromPath = fMFCreateURLFromPath @60
|
||||
MFCreateVideoMediaType = fMFCreateVideoMediaType @61
|
||||
MFCreateVideoMediaTypeFromBitMapInfoHeader = fMFCreateVideoMediaTypeFromBitMapInfoHeader @62
|
||||
MFCreateVideoMediaTypeFromBitMapInfoHeaderEx = fMFCreateVideoMediaTypeFromBitMapInfoHeaderEx @63
|
||||
MFCreateVideoMediaTypeFromSubtype = fMFCreateVideoMediaTypeFromSubtype @64
|
||||
MFCreateVideoMediaTypeFromVideoInfoHeader = fMFCreateVideoMediaTypeFromVideoInfoHeader @65
|
||||
MFCreateVideoMediaTypeFromVideoInfoHeader2 = fMFCreateVideoMediaTypeFromVideoInfoHeader2 @66
|
||||
MFCreateVideoSampleAllocatorEx = fMFCreateVideoSampleAllocatorEx @67
|
||||
MFCreateWaveFormatExFromMFMediaType = fMFCreateWaveFormatExFromMFMediaType @68
|
||||
MFDeserializeAttributesFromStream = fMFDeserializeAttributesFromStream @69
|
||||
MFDeserializeEvent = fMFDeserializeEvent @70
|
||||
MFDeserializeMediaTypeFromStream = fMFDeserializeMediaTypeFromStream @71
|
||||
MFDeserializePresentationDescriptor = fMFDeserializePresentationDescriptor @72
|
||||
MFEndCreateFile = fMFEndCreateFile @73
|
||||
MFFrameRateToAverageTimePerFrame = fMFFrameRateToAverageTimePerFrame @74
|
||||
MFGetAttributesAsBlob = fMFGetAttributesAsBlob @75
|
||||
MFGetAttributesAsBlobSize = fMFGetAttributesAsBlobSize @76
|
||||
MFGetConfigurationDWORD = fMFGetConfigurationDWORD @77
|
||||
MFGetConfigurationPolicy = fMFGetConfigurationPolicy @78
|
||||
MFGetConfigurationStore = fMFGetConfigurationStore @79
|
||||
MFGetConfigurationString = fMFGetConfigurationString @80
|
||||
MFGetPlaneSize = fMFGetPlaneSize @81
|
||||
MFGetPlatform = fMFGetPlatform @82
|
||||
MFGetPrivateWorkqueues = fMFGetPrivateWorkqueues @83
|
||||
MFGetStrideForBitmapInfoHeader = fMFGetStrideForBitmapInfoHeader @84
|
||||
MFGetSupportedMimeTypes = fMFGetSupportedMimeTypes @85
|
||||
MFGetSupportedSchemes = fMFGetSupportedSchemes @86
|
||||
MFGetSystemTime = fMFGetSystemTime @87
|
||||
MFGetTimerPeriodicity = fMFGetTimerPeriodicity @88
|
||||
MFGetUncompressedVideoFormat = fMFGetUncompressedVideoFormat @89
|
||||
MFGetWorkQueueMMCSSTaskId = fMFGetWorkQueueMMCSSTaskId @90
|
||||
MFHeapAlloc = fMFHeapAlloc @91
|
||||
MFHeapFree = fMFHeapFree @92
|
||||
MFInitAMMediaTypeFromMFMediaType = fMFInitAMMediaTypeFromMFMediaType @93
|
||||
MFInitAttributesFromBlob = fMFInitAttributesFromBlob @94
|
||||
MFInitMediaTypeFromAMMediaType = fMFInitMediaTypeFromAMMediaType @95
|
||||
MFInitMediaTypeFromMFVideoFormat = fMFInitMediaTypeFromMFVideoFormat @96
|
||||
MFInitMediaTypeFromVideoInfoHeader = fMFInitMediaTypeFromVideoInfoHeader @97
|
||||
MFInitMediaTypeFromVideoInfoHeader2 = fMFInitMediaTypeFromVideoInfoHeader2 @98
|
||||
MFInitMediaTypeFromWaveFormatEx = fMFInitMediaTypeFromWaveFormatEx @99
|
||||
MFInitVideoFormat = fMFInitVideoFormat @100
|
||||
MFInitVideoFormat_RGB = fMFInitVideoFormat_RGB @101
|
||||
MFInvokeCallback = fMFInvokeCallback @102
|
||||
MFJoinIoPort = fMFJoinIoPort @103
|
||||
MFJoinWorkQueue = fMFJoinWorkQueue @104
|
||||
MFLockDXGIDeviceManager = fMFLockDXGIDeviceManager @105
|
||||
MFLockPlatform = fMFLockPlatform @106
|
||||
MFLockSharedWorkQueue = fMFLockSharedWorkQueue @107
|
||||
MFLockWorkQueue = fMFLockWorkQueue @108
|
||||
MFMapDX9FormatToDXGIFormat = fMFMapDX9FormatToDXGIFormat @109
|
||||
MFMapDXGIFormatToDX9Format = fMFMapDXGIFormatToDX9Format @110
|
||||
MFPutWaitingWorkItem = fMFPutWaitingWorkItem @111
|
||||
MFPutWorkItem = fMFPutWorkItem @112
|
||||
MFPutWorkItem2 = fMFPutWorkItem2 @113
|
||||
MFPutWorkItemEx = fMFPutWorkItemEx @114
|
||||
MFPutWorkItemEx2 = fMFPutWorkItemEx2 @115
|
||||
MFRemovePeriodicCallback = fMFRemovePeriodicCallback @116
|
||||
MFResetDXGIDeviceManagerX = MFResetDXGIDeviceManager_X @117
|
||||
MFScheduleWorkItem = fMFScheduleWorkItem @118
|
||||
MFScheduleWorkItemEx = fMFScheduleWorkItemEx @119
|
||||
MFSerializeAttributesToStream = fMFSerializeAttributesToStream @120
|
||||
MFSerializeEvent = fMFSerializeEvent @121
|
||||
MFSerializeMediaTypeToStream = fMFSerializeMediaTypeToStream @122
|
||||
MFSerializePresentationDescriptor = fMFSerializePresentationDescriptor @123
|
||||
MFShutdown = fMFShutdown @124
|
||||
MFStartup = fMFStartup @125
|
||||
MFTEnumEx = fMFTEnumEx @126
|
||||
MFTraceError = fMFTraceError @127
|
||||
MFTraceFuncEnter = fMFTraceFuncEnter @128
|
||||
MFUnblockThread = fMFUnblockThread @129
|
||||
MFUnjoinWorkQueue = fMFUnjoinWorkQueue @130
|
||||
MFUnlockDXGIDeviceManager = fMFUnlockDXGIDeviceManager @131
|
||||
MFUnlockPlatform = fMFUnlockPlatform @132
|
||||
MFUnlockWorkQueue = fMFUnlockWorkQueue @133
|
||||
MFUnwrapMediaType = fMFUnwrapMediaType @134
|
||||
MFValidateMediaTypeSize = fMFValidateMediaTypeSize @135
|
||||
MFWrapMediaType = fMFWrapMediaType @136
|
||||
MFllMulDiv = fMFllMulDiv @137
|
||||
PropVariantFromStream = fPropVariantFromStream @138
|
||||
PropVariantToStream = fPropVariantToStream @139
|
||||
ValidateWaveFormat = fValidateWaveFormat @140
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
namespace winrt::Windows::Xbox::System::implementation
|
||||
{
|
||||
//winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::System::UserAddedEventArgs>> m_userAddedEvent;
|
||||
UserOnlineState User::OnlineState()
|
||||
{
|
||||
|
||||
@@ -95,11 +94,11 @@ namespace winrt::Windows::Xbox::System::implementation
|
||||
}
|
||||
winrt::event_token User::SignInCompleted(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::System::SignInCompletedEventArgs> const& handler)
|
||||
{
|
||||
LOG_NOT_IMPLEMENTED(); return {};
|
||||
return m_signInCompletedEvent.add(handler);
|
||||
}
|
||||
void User::SignInCompleted(winrt::event_token const& token) noexcept
|
||||
{
|
||||
LOG_NOT_IMPLEMENTED(); throw hresult_not_implemented();
|
||||
m_signInCompletedEvent.remove(token);
|
||||
}
|
||||
winrt::event_token User::SignOutStarted(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::System::SignOutStartedEventArgs> const& handler)
|
||||
{
|
||||
@@ -111,11 +110,11 @@ namespace winrt::Windows::Xbox::System::implementation
|
||||
}
|
||||
winrt::event_token User::SignOutCompleted(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::System::SignOutCompletedEventArgs> const& handler)
|
||||
{
|
||||
LOG_NOT_IMPLEMENTED(); return {};
|
||||
return m_signOutCompletedEvent.add(handler);
|
||||
}
|
||||
void User::SignOutCompleted(winrt::event_token const& token) noexcept
|
||||
{
|
||||
LOG_NOT_IMPLEMENTED(); return;
|
||||
m_signOutCompletedEvent.remove(token);
|
||||
}
|
||||
winrt::event_token User::UserDisplayInfoChanged(winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::System::UserDisplayInfoChangedEventArgs> const& handler)
|
||||
{
|
||||
|
||||
@@ -54,6 +54,8 @@ namespace winrt::Windows::Xbox::System::implementation
|
||||
inline static winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::System::UserRemovedEventArgs>> m_userRemovedEvent;
|
||||
inline static winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::System::SignOutStartedEventArgs>> m_signOutStartedEvent;
|
||||
inline static winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::System::OnlineStateChangedEventArgs>> m_onlineStateChangedEvent;
|
||||
inline static winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::System::SignInCompletedEventArgs>> m_signInCompletedEvent;
|
||||
inline static winrt::event<winrt::Windows::Foundation::EventHandler<winrt::Windows::Xbox::System::SignOutCompletedEventArgs>> m_signOutCompletedEvent;
|
||||
inline static winrt::Windows::Xbox::System::User staticUser = {nullptr};
|
||||
inline static winrt::Windows::Foundation::Collections::IVector<winrt::Windows::Xbox::System::User> staticUsers = {nullptr};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user