Merge pull request #1799 from DGP-Studio/develop

This commit is contained in:
DismissedLight
2024-07-06 16:55:20 +08:00
committed by GitHub
134 changed files with 592 additions and 258 deletions

View File

@@ -1,7 +1,6 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Microsoft.UI.Xaml.Controls.Primitives;
using Snap.Hutao.Win32.Foundation;
using Windows.Graphics;

View File

@@ -0,0 +1,22 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
namespace Snap.Hutao.Core.Threading;
internal readonly ref struct VolatileWrite
{
private readonly ref bool reference;
private readonly bool initialState;
public VolatileWrite(ref bool reference, bool initialState)
{
this.reference = ref reference;
this.initialState = initialState;
Volatile.Write(ref this.reference, initialState);
}
public void Dispose()
{
Volatile.Write(ref reference, !initialState);
}
}

View File

@@ -13,7 +13,7 @@
<Identity
Name="60568DGPStudio.SnapHutao"
Publisher="CN=35C8E923-85DF-49A7-9172-B39DC6312C52"
Version="1.10.5.0" />
Version="1.10.6.0" />
<Properties>
<DisplayName>Snap Hutao</DisplayName>

View File

@@ -13,7 +13,7 @@
<Identity
Name="60568DGPStudio.SnapHutaoDev"
Publisher="CN=35C8E923-85DF-49A7-9172-B39DC6312C52"
Version="1.10.5.0" />
Version="1.10.6.0" />
<Properties>
<DisplayName>Snap Hutao Dev</DisplayName>

View File

@@ -147,6 +147,12 @@
<data name="ControlAutoSuggestBoxNotFoundValue" xml:space="preserve">
<value>No results found</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>Delete</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>Select All</value>
</data>
<data name="ControlImageCachedImageInvalidResourceUri" xml:space="preserve">
<value>Invalid Uri</value>
</data>
@@ -162,12 +168,6 @@
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
<value>List</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>Delete</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>Select All</value>
</data>
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
<value>Database is corrupted: {0}</value>
</data>
@@ -977,6 +977,18 @@
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
<value>Waiting for the game process to close…</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandDescription" xml:space="preserve">
<value>Unlocks the module inject the game process, which is dangerous, but easy to succeed</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandName" xml:space="preserve">
<value>Injection</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyDescription" xml:space="preserve">
<value>Classic process memory operations are more dangerous but easy to fail.</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyName" xml:space="preserve">
<value>Classic</value>
</data>
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
<value>Select game executable</value>
</data>
@@ -2435,6 +2447,12 @@
<data name="ViewPageLaunchGameUnlockFpsHeader" xml:space="preserve">
<value>Unlock Frame Rate Limit</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindDescription" xml:space="preserve">
<value>Change how to unlock framerate</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindHeader" xml:space="preserve">
<value>Unlock Method</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsOff" xml:space="preserve">
<value>Disabled</value>
</data>
@@ -3107,6 +3125,9 @@
<data name="WebDailyNoteExpeditionRemainMinutesFormat" xml:space="preserve">
<value>{0} mins</value>
</data>
<data name="WebDailyNoteExpeditionRemainTime" xml:space="preserve">
<value>{0} 时 {1} 分</value>
</data>
<data name="WebDailyNoteExtraTaskRewardNotAllowed" xml:space="preserve">
<value>Daily Commissions are not Completed</value>
</data>

View File

@@ -147,6 +147,12 @@
<data name="ControlAutoSuggestBoxNotFoundValue" xml:space="preserve">
<value>Aucun résultat trouvé</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>删除</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="ControlImageCachedImageInvalidResourceUri" xml:space="preserve">
<value>Uri invalide</value>
</data>
@@ -162,12 +168,6 @@
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
<value>Liste</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>删除</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
<value>La base de donnée est corrompue : {0}</value>
</data>
@@ -977,6 +977,18 @@
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
<value>等待游戏进程退出</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandDescription" xml:space="preserve">
<value>解锁模块注入游戏进程,非常危险,但容易成功</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandName" xml:space="preserve">
<value>注入</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyDescription" xml:space="preserve">
<value>经典的进程外内存操作,较为危险,但容易失败</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyName" xml:space="preserve">
<value>经典</value>
</data>
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
<value>选择游戏本体</value>
</data>
@@ -2435,6 +2447,12 @@
<data name="ViewPageLaunchGameUnlockFpsHeader" xml:space="preserve">
<value>解锁帧率限制</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindDescription" xml:space="preserve">
<value>更改解锁帧率的工作方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindHeader" xml:space="preserve">
<value>解锁方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsOff" xml:space="preserve">
<value>禁用</value>
</data>
@@ -3107,6 +3125,9 @@
<data name="WebDailyNoteExpeditionRemainMinutesFormat" xml:space="preserve">
<value>{0} 分</value>
</data>
<data name="WebDailyNoteExpeditionRemainTime" xml:space="preserve">
<value>{0} 时 {1} 分</value>
</data>
<data name="WebDailyNoteExtraTaskRewardNotAllowed" xml:space="preserve">
<value>今日完成委托数量不足</value>
</data>

View File

@@ -147,6 +147,12 @@
<data name="ControlAutoSuggestBoxNotFoundValue" xml:space="preserve">
<value>未找到结果</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>Hapus</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="ControlImageCachedImageInvalidResourceUri" xml:space="preserve">
<value>Invalid Url</value>
</data>
@@ -162,12 +168,6 @@
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
<value>Daftar</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>Hapus</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
<value>Database mengalami kerusakan: {0}</value>
</data>
@@ -977,6 +977,18 @@
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
<value>Menunggu proses game tertutup...</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandDescription" xml:space="preserve">
<value>解锁模块注入游戏进程,非常危险,但容易成功</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandName" xml:space="preserve">
<value>注入</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyDescription" xml:space="preserve">
<value>经典的进程外内存操作,较为危险,但容易失败</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyName" xml:space="preserve">
<value>经典</value>
</data>
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
<value>Pilih exe game</value>
</data>
@@ -2435,6 +2447,12 @@
<data name="ViewPageLaunchGameUnlockFpsHeader" xml:space="preserve">
<value>Membuka limit Frame Rate</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindDescription" xml:space="preserve">
<value>更改解锁帧率的工作方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindHeader" xml:space="preserve">
<value>解锁方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsOff" xml:space="preserve">
<value>Nonaktifkan</value>
</data>
@@ -3107,6 +3125,9 @@
<data name="WebDailyNoteExpeditionRemainMinutesFormat" xml:space="preserve">
<value>{0} menit</value>
</data>
<data name="WebDailyNoteExpeditionRemainTime" xml:space="preserve">
<value>{0} 时 {1} 分</value>
</data>
<data name="WebDailyNoteExtraTaskRewardNotAllowed" xml:space="preserve">
<value>Komisi Harian Belum Selesai</value>
</data>

View File

@@ -147,6 +147,12 @@
<data name="ControlAutoSuggestBoxNotFoundValue" xml:space="preserve">
<value>検索結果なし</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>削除</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>すべて選択</value>
</data>
<data name="ControlImageCachedImageInvalidResourceUri" xml:space="preserve">
<value>無効なURL</value>
</data>
@@ -162,12 +168,6 @@
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
<value>リスト</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>削除</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>すべて選択</value>
</data>
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
<value>データベースが破損しています:{0}</value>
</data>
@@ -977,6 +977,18 @@
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
<value>プロセスが終了するまで待機中</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandDescription" xml:space="preserve">
<value>モジュールをロック解除する際に非常に危険で賭けます。モジュールが成功することは容易です。</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandName" xml:space="preserve">
<value>インジェクション</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyDescription" xml:space="preserve">
<value>標準的な手続きによる外メモリ操作、危険です、そして失敗することが容易です</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyName" xml:space="preserve">
<value>クラシック</value>
</data>
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
<value>ゲーム本体を選択する</value>
</data>
@@ -2435,6 +2447,12 @@
<data name="ViewPageLaunchGameUnlockFpsHeader" xml:space="preserve">
<value>フレームレート上限解除</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindDescription" xml:space="preserve">
<value>ロック解除フレームレート変更方法の変更</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindHeader" xml:space="preserve">
<value>ロック解除モード</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsOff" xml:space="preserve">
<value>無効</value>
</data>
@@ -3107,6 +3125,9 @@
<data name="WebDailyNoteExpeditionRemainMinutesFormat" xml:space="preserve">
<value>{0} 分</value>
</data>
<data name="WebDailyNoteExpeditionRemainTime" xml:space="preserve">
<value>{0} 时 {1} 分</value>
</data>
<data name="WebDailyNoteExtraTaskRewardNotAllowed" xml:space="preserve">
<value>すべての依頼を完了していません</value>
</data>

View File

@@ -147,6 +147,12 @@
<data name="ControlAutoSuggestBoxNotFoundValue" xml:space="preserve">
<value>未找到结果</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>삭제</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="ControlImageCachedImageInvalidResourceUri" xml:space="preserve">
<value>잘못된 Uri</value>
</data>
@@ -162,12 +168,6 @@
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
<value>목록</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>삭제</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
<value>数据库已损坏:{0}</value>
</data>
@@ -977,6 +977,18 @@
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
<value>等待游戏进程退出</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandDescription" xml:space="preserve">
<value>解锁模块注入游戏进程,非常危险,但容易成功</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandName" xml:space="preserve">
<value>注入</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyDescription" xml:space="preserve">
<value>经典的进程外内存操作,较为危险,但容易失败</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyName" xml:space="preserve">
<value>经典</value>
</data>
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
<value>게임 파일 선택</value>
</data>
@@ -2435,6 +2447,12 @@
<data name="ViewPageLaunchGameUnlockFpsHeader" xml:space="preserve">
<value>프레임 속도 제한 해제</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindDescription" xml:space="preserve">
<value>更改解锁帧率的工作方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindHeader" xml:space="preserve">
<value>解锁方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsOff" xml:space="preserve">
<value>비활성화</value>
</data>
@@ -3107,6 +3125,9 @@
<data name="WebDailyNoteExpeditionRemainMinutesFormat" xml:space="preserve">
<value>{0}분</value>
</data>
<data name="WebDailyNoteExpeditionRemainTime" xml:space="preserve">
<value>{0} 时 {1} 分</value>
</data>
<data name="WebDailyNoteExtraTaskRewardNotAllowed" xml:space="preserve">
<value>今日完成委托数量不足</value>
</data>

View File

@@ -147,6 +147,12 @@
<data name="ControlAutoSuggestBoxNotFoundValue" xml:space="preserve">
<value>Nenhum resultado</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>Excluir</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="ControlImageCachedImageInvalidResourceUri" xml:space="preserve">
<value>Uri inválido</value>
</data>
@@ -162,12 +168,6 @@
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
<value>Lista</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>Excluir</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
<value>O banco de dados está corrompido: {0}</value>
</data>
@@ -977,6 +977,18 @@
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
<value>Aguardando o encerramento do processo do jogo…</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandDescription" xml:space="preserve">
<value>解锁模块注入游戏进程,非常危险,但容易成功</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandName" xml:space="preserve">
<value>注入</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyDescription" xml:space="preserve">
<value>经典的进程外内存操作,较为危险,但容易失败</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyName" xml:space="preserve">
<value>经典</value>
</data>
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
<value>Selecione o executável do jogo</value>
</data>
@@ -2435,6 +2447,12 @@
<data name="ViewPageLaunchGameUnlockFpsHeader" xml:space="preserve">
<value>Desbloquear limite de taxa de quadros</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindDescription" xml:space="preserve">
<value>更改解锁帧率的工作方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindHeader" xml:space="preserve">
<value>解锁方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsOff" xml:space="preserve">
<value>Desativado</value>
</data>
@@ -3107,6 +3125,9 @@
<data name="WebDailyNoteExpeditionRemainMinutesFormat" xml:space="preserve">
<value>{0} mins</value>
</data>
<data name="WebDailyNoteExpeditionRemainTime" xml:space="preserve">
<value>{0} 时 {1} 分</value>
</data>
<data name="WebDailyNoteExtraTaskRewardNotAllowed" xml:space="preserve">
<value>Missões diárias incompletas</value>
</data>

View File

@@ -3125,6 +3125,9 @@
<data name="WebDailyNoteExpeditionRemainMinutesFormat" xml:space="preserve">
<value>{0} 分</value>
</data>
<data name="WebDailyNoteExpeditionRemainTime" xml:space="preserve">
<value>{0} 时 {1} 分</value>
</data>
<data name="WebDailyNoteExtraTaskRewardNotAllowed" xml:space="preserve">
<value>今日完成委托数量不足</value>
</data>

View File

@@ -147,6 +147,12 @@
<data name="ControlAutoSuggestBoxNotFoundValue" xml:space="preserve">
<value>Результаты не найдены</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="ControlImageCachedImageInvalidResourceUri" xml:space="preserve">
<value>Ошибка ссылки</value>
</data>
@@ -162,12 +168,6 @@
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
<value>Список</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
<value>База данных повреждена: {0}</value>
</data>
@@ -977,6 +977,18 @@
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
<value>Ожидание закрытия процесса игры</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandDescription" xml:space="preserve">
<value>解锁模块注入游戏进程,非常危险,但容易成功</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandName" xml:space="preserve">
<value>注入</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyDescription" xml:space="preserve">
<value>经典的进程外内存操作,较为危险,但容易失败</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyName" xml:space="preserve">
<value>经典</value>
</data>
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
<value>Выберите исполняемый файл игры</value>
</data>
@@ -2435,6 +2447,12 @@
<data name="ViewPageLaunchGameUnlockFpsHeader" xml:space="preserve">
<value>Разблокировать ограничение частоты кадров</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindDescription" xml:space="preserve">
<value>更改解锁帧率的工作方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindHeader" xml:space="preserve">
<value>解锁方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsOff" xml:space="preserve">
<value>Отключено</value>
</data>
@@ -3107,6 +3125,9 @@
<data name="WebDailyNoteExpeditionRemainMinutesFormat" xml:space="preserve">
<value>{0} минут</value>
</data>
<data name="WebDailyNoteExpeditionRemainTime" xml:space="preserve">
<value>{0} 时 {1} 分</value>
</data>
<data name="WebDailyNoteExtraTaskRewardNotAllowed" xml:space="preserve">
<value>Incomplete Daily Commissions</value>
</data>

View File

@@ -147,6 +147,12 @@
<data name="ControlAutoSuggestBoxNotFoundValue" xml:space="preserve">
<value>Không tìm thấy kết quả</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>删除</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="ControlImageCachedImageInvalidResourceUri" xml:space="preserve">
<value>Uri không hợp lệ</value>
</data>
@@ -162,12 +168,6 @@
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
<value>Danh sách</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>删除</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
<value>数据库已损坏:{0}</value>
</data>
@@ -977,6 +977,18 @@
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
<value>Đang đợi tiến trình trò chơi đóng...</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandDescription" xml:space="preserve">
<value>解锁模块注入游戏进程,非常危险,但容易成功</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandName" xml:space="preserve">
<value>注入</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyDescription" xml:space="preserve">
<value>经典的进程外内存操作,较为危险,但容易失败</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyName" xml:space="preserve">
<value>经典</value>
</data>
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
<value>选择游戏本体</value>
</data>
@@ -2435,6 +2447,12 @@
<data name="ViewPageLaunchGameUnlockFpsHeader" xml:space="preserve">
<value>解锁帧率限制</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindDescription" xml:space="preserve">
<value>更改解锁帧率的工作方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindHeader" xml:space="preserve">
<value>解锁方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsOff" xml:space="preserve">
<value>禁用</value>
</data>
@@ -3107,6 +3125,9 @@
<data name="WebDailyNoteExpeditionRemainMinutesFormat" xml:space="preserve">
<value>{0} 分</value>
</data>
<data name="WebDailyNoteExpeditionRemainTime" xml:space="preserve">
<value>{0} 时 {1} 分</value>
</data>
<data name="WebDailyNoteExtraTaskRewardNotAllowed" xml:space="preserve">
<value>今日完成委托数量不足</value>
</data>

View File

@@ -147,6 +147,12 @@
<data name="ControlAutoSuggestBoxNotFoundValue" xml:space="preserve">
<value>未找到結果</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>刪除</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="ControlImageCachedImageInvalidResourceUri" xml:space="preserve">
<value>無效的 URI</value>
</data>
@@ -162,12 +168,6 @@
<data name="ControlPanelPanelSelectorDropdownListName" xml:space="preserve">
<value>清單</value>
</data>
<data name="ControlAutoSuggestTokenBoxRemoveMenuItem" xml:space="preserve">
<value>刪除</value>
</data>
<data name="ControlAutoSuggestTokenBoxSelectAllMenuItem" xml:space="preserve">
<value>选择全部</value>
</data>
<data name="CoreExceptionServiceDatabaseCorruptedMessage" xml:space="preserve">
<value>數據庫已損壞:{0}</value>
</data>
@@ -977,6 +977,18 @@
<data name="ServiceGameLaunchPhaseWaitingProcessExit" xml:space="preserve">
<value>等待遊戲進程退出</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandDescription" xml:space="preserve">
<value>解锁模块注入游戏进程,非常危险,但容易成功</value>
</data>
<data name="ServiceGameLaunchUnlockerKindIslandName" xml:space="preserve">
<value>注入</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyDescription" xml:space="preserve">
<value>经典的进程外内存操作,较为危险,但容易失败</value>
</data>
<data name="ServiceGameLaunchUnlockerKindLegacyName" xml:space="preserve">
<value>经典</value>
</data>
<data name="ServiceGameLocatorFileOpenPickerCommitText" xml:space="preserve">
<value>請選擇遊戲本體</value>
</data>
@@ -2435,6 +2447,12 @@
<data name="ViewPageLaunchGameUnlockFpsHeader" xml:space="preserve">
<value>解鎖 FPS 限制</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindDescription" xml:space="preserve">
<value>更改解锁帧率的工作方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsKindHeader" xml:space="preserve">
<value>解锁方式</value>
</data>
<data name="ViewPageLaunchGameUnlockFpsOff" xml:space="preserve">
<value>停用</value>
</data>
@@ -3107,6 +3125,9 @@
<data name="WebDailyNoteExpeditionRemainMinutesFormat" xml:space="preserve">
<value>{0} 分</value>
</data>
<data name="WebDailyNoteExpeditionRemainTime" xml:space="preserve">
<value>{0} 时 {1} 分</value>
</data>
<data name="WebDailyNoteExtraTaskRewardNotAllowed" xml:space="preserve">
<value>今日完成委託數量不足</value>
</data>

View File

@@ -7,7 +7,6 @@ using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Model.Entity;
using Snap.Hutao.Model.InterChange.Achievement;
using Snap.Hutao.Model.Primitive;
using Snap.Hutao.UI.Xaml.Data;
using Snap.Hutao.ViewModel.Achievement;
using System.Collections.ObjectModel;
using EntityAchievement = Snap.Hutao.Model.Entity.Achievement;

View File

@@ -109,6 +109,7 @@ internal sealed partial class GachaLogService : IGachaLogService
if (target is not null && Archives is not null)
{
await taskContext.SwitchToMainThreadAsync();
Archives.CurrentItem = target;
}

View File

@@ -83,6 +83,8 @@ internal sealed partial class UIGFImportService : IUIGFImportService
}
gachaLogDbService.AddGachaItemRange(fullItems);
await taskContext.SwitchToMainThreadAsync();
archives.MoveCurrentTo(archive);
}

View File

@@ -88,10 +88,13 @@ internal sealed partial class GameAccountService : IGameAccountService
return RegistryInterop.Set(account);
}
public void AttachGameAccountToUid(GameAccount gameAccount, string uid)
public async ValueTask AttachGameAccountToUidAsync(GameAccount gameAccount, string uid)
{
gameAccount.UpdateAttachUid(uid);
await taskContext.SwitchToBackgroundAsync();
gameDbService.UpdateGameAccount(gameAccount);
await taskContext.SwitchToMainThreadAsync();
gameAccount.UpdateAttachUid(uid);
}
public async ValueTask ModifyGameAccountAsync(GameAccount gameAccount)

View File

@@ -11,7 +11,7 @@ internal interface IGameAccountService
{
ObservableReorderableDbCollection<GameAccount> GameAccountCollection { get; }
void AttachGameAccountToUid(GameAccount gameAccount, string uid);
ValueTask AttachGameAccountToUidAsync(GameAccount gameAccount, string uid);
GameAccount? DetectCurrentGameAccount(SchemeType schemeType);

View File

@@ -148,7 +148,7 @@ internal struct GameScreenCaptureContext : IDisposable
return clientBox.right <= width && clientBox.bottom <= height;
}
public unsafe readonly void AttachPreview(GameScreenCaptureDebugPreviewWindow? window)
public readonly unsafe void AttachPreview(GameScreenCaptureDebugPreviewWindow? window)
{
if (PreviewEnabled && window is not null)
{
@@ -156,7 +156,7 @@ internal struct GameScreenCaptureContext : IDisposable
}
}
public unsafe readonly void UpdatePreview(GameScreenCaptureDebugPreviewWindow? window, IDirect3DSurface surface)
public readonly unsafe void UpdatePreview(GameScreenCaptureDebugPreviewWindow? window, IDirect3DSurface surface)
{
if (PreviewEnabled && window is not null)
{
@@ -164,7 +164,7 @@ internal struct GameScreenCaptureContext : IDisposable
}
}
public unsafe readonly void DetachPreview(GameScreenCaptureDebugPreviewWindow? window)
public readonly unsafe void DetachPreview(GameScreenCaptureDebugPreviewWindow? window)
{
if (PreviewEnabled && window is not null)
{
@@ -173,7 +173,7 @@ internal struct GameScreenCaptureContext : IDisposable
}
}
public unsafe readonly void Dispose()
public readonly unsafe void Dispose()
{
IUnknownMarshal.Release(factory);
IUnknownMarshal.Release(swapChain);

View File

@@ -26,9 +26,20 @@ internal sealed partial class GameConfigurationFileService : IGameConfigurationF
{
string serverCacheFolder = runtimeOptions.GetDataFolderServerCacheFolder();
string source = Path.Combine(serverCacheFolder, ConfigurationFileName);
if (File.Exists(source))
if (!File.Exists(source))
{
File.Copy(source, destination, true);
return;
}
// If target directory does not exist, do not copy the file
// This often means user has moved the game folder away.
string? directory = Path.GetDirectoryName(destination);
if (string.IsNullOrEmpty(directory) || !Directory.Exists(directory))
{
return;
}
File.Copy(source, destination, true);
}
}

View File

@@ -54,9 +54,9 @@ internal sealed partial class GameServiceFacade : IGameServiceFacade
}
/// <inheritdoc/>
public void AttachGameAccountToUid(GameAccount gameAccount, string uid)
public ValueTask AttachGameAccountToUidAsync(GameAccount gameAccount, string uid)
{
gameAccountService.AttachGameAccountToUid(gameAccount, uid);
return gameAccountService.AttachGameAccountToUidAsync(gameAccount, uid);
}
/// <inheritdoc/>

View File

@@ -25,7 +25,7 @@ internal interface IGameServiceFacade
/// </summary>
/// <param name="gameAccount">游戏内账号</param>
/// <param name="uid">uid</param>
void AttachGameAccountToUid(GameAccount gameAccount, string uid);
ValueTask AttachGameAccountToUidAsync(GameAccount gameAccount, string uid);
ValueTask<GameAccount?> DetectGameAccountAsync(SchemeType scheme);

View File

@@ -22,7 +22,6 @@ using Snap.Hutao.UI.Xaml.Media.Backdrop;
using Snap.Hutao.Win32.Foundation;
using Snap.Hutao.Win32.Graphics.Dwm;
using Snap.Hutao.Win32.UI.WindowsAndMessaging;
using System.Diagnostics;
using System.IO;
using Windows.Foundation;
using Windows.Graphics;

View File

@@ -45,15 +45,30 @@ internal sealed class InterspersedObservableCollection : IList, IEnumerable<obje
public IList ItemsSource { get; private set; }
public bool IsFixedSize => false;
public bool IsFixedSize
{
get => false;
}
public bool IsReadOnly => false;
public bool IsReadOnly
{
get => false;
}
public int Count => ItemsSource.Count + interspersedObjects.Count;
public int Count
{
get => ItemsSource.Count + interspersedObjects.Count;
}
public bool IsSynchronized => false;
public bool IsSynchronized
{
get => false;
}
public object SyncRoot => new();
public object SyncRoot
{
get => new();
}
public object? this[int index]
{

View File

@@ -14,7 +14,6 @@ using System.Diagnostics;
using System.IO;
using System.Net.Http;
using System.Runtime.InteropServices;
using Windows.Foundation;
namespace Snap.Hutao.UI.Xaml.Control.Image;

View File

@@ -60,6 +60,7 @@
Command="{Binding NavigateCommand}"
Content="{StaticResource FontIconContentSetting}"
FontFamily="{StaticResource SymbolThemeFontFamily}"
Style="{ThemeResource ButtonRevealStyle}"
ToolTipService.ToolTip="{shuxm:ResourceString Name=ViewPageHomeLaunchGameSettingAction}"/>
<StackPanel
Grid.Row="2"

View File

@@ -66,7 +66,7 @@ internal sealed partial class AnnouncementWebView2ContentProvider : DependencyOb
}
}
public RectInt32 InitializePosition(RectInt32 parentRect)
public RectInt32 InitializePosition(RectInt32 parentRect, double parentDpi)
{
// Parent Window can never be so small
// if (parentRect.Width < 96 || parentRect.Height < 96)

View File

@@ -15,7 +15,7 @@ internal interface IWebView2ContentProvider
ValueTask InitializeAsync(IServiceProvider serviceProvider, CancellationToken token);
RectInt32 InitializePosition(RectInt32 parentRect);
RectInt32 InitializePosition(RectInt32 parentRect, double parentDpi);
void Unload();
}

View File

@@ -3,7 +3,6 @@
using Microsoft.UI.Windowing;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Media;
using Microsoft.Web.WebView2.Core;
using Snap.Hutao.Core.Graphics;
using Snap.Hutao.Service.Notification;
@@ -70,11 +69,11 @@ internal sealed partial class MiHoYoJSBridgeWebView2ContentProvider : Dependency
jsBridge?.Detach();
}
public RectInt32 InitializePosition(RectInt32 parentRect)
public RectInt32 InitializePosition(RectInt32 parentRect, double parentDpi)
{
PointInt32 center = parentRect.GetPointInt32(PointInt32Kind.Center);
RectInt32 target = new(center.X - 240, center.Y - 400, 450, 800);
SizeInt32 size = new SizeInt32(480, 800).Scale(parentDpi);
RectInt32 target = RectInt32Convert.RectInt32(new(center.X - (size.Width / 2), center.Y - (size.Height / 2)), size);
RectInt32 workArea = DisplayArea.GetFromRect(parentRect, DisplayAreaFallback.None).WorkArea;
RectInt32 workAreaShrink = new(workArea.X + 48, workArea.Y + 48, workArea.Width - 96, workArea.Height - 96);

View File

@@ -60,7 +60,8 @@ internal sealed partial class WebView2Window : Microsoft.UI.Xaml.Window, IXamlWi
EnableWindow(parentHWND, false);
base.Activate();
AppWindow.MoveThenResize(contentProvider.InitializePosition(parentAppWindow.GetRect()));
double dpi = Math.Round(GetDpiForWindow(parentHWND) / 96D, 2, MidpointRounding.AwayFromZero);
AppWindow.MoveThenResize(contentProvider.InitializePosition(parentAppWindow.GetRect(), dpi));
}
public void OnWindowClosed()

View File

@@ -2,12 +2,9 @@
// Licensed under the MIT license.
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Media.Imaging;
using Snap.Hutao.Core.DataTransfer;
using Snap.Hutao.Core.ExceptionService;
using Snap.Hutao.Core.Graphics.Imaging;
using Snap.Hutao.Factory.ContentDialog;
using Snap.Hutao.Model.Calculable;
using Snap.Hutao.Model.Entity.Primitive;
@@ -15,15 +12,11 @@ using Snap.Hutao.Service.AvatarInfo;
using Snap.Hutao.Service.Cultivation;
using Snap.Hutao.Service.Notification;
using Snap.Hutao.Service.User;
using Snap.Hutao.UI;
using Snap.Hutao.UI.Xaml.Control;
using Snap.Hutao.UI.Xaml.View.Dialog;
using Snap.Hutao.ViewModel.User;
using Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate;
using Snap.Hutao.Web.Response;
using Windows.Graphics.Imaging;
using Windows.Storage.Streams;
using Windows.UI;
using CalculatorAvatarPromotionDelta = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.AvatarPromotionDelta;
using CalculatorBatchConsumption = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.BatchConsumption;
using CalculatorClient = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.CalculateClient;

View File

@@ -15,8 +15,6 @@ using Snap.Hutao.Service.User;
using Snap.Hutao.UI.Xaml.Control;
using Snap.Hutao.UI.Xaml.View.Dialog;
using Snap.Hutao.UI.Xaml.View.Window.WebView2;
using Snap.Hutao.ViewModel.User;
using Snap.Hutao.Web.Hoyolab.Takumi.Binding;
using System.Collections.ObjectModel;
namespace Snap.Hutao.ViewModel.DailyNote;

View File

@@ -39,6 +39,7 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
private AdvancedDbCollectionView<GachaArchive>? archives;
private GachaStatistics? statistics;
private bool isAggressiveRefresh;
private bool suppressCurrentItemChangedHandling;
public AdvancedDbCollectionView<GachaArchive>? Archives
{
@@ -119,25 +120,30 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
private void OnCurrentArchiveChanged(object? sender, object? e)
{
if (suppressCurrentItemChangedHandling)
{
return;
}
UpdateStatisticsAsync(Archives?.CurrentItem).SafeForget(logger);
}
[Command("RefreshByWebCacheCommand")]
private Task RefreshByWebCacheAsync()
private async Task RefreshByWebCacheAsync()
{
return RefreshCoreAsync(RefreshOption.WebCache).AsTask();
await RefreshCoreAsync(RefreshOption.WebCache).ConfigureAwait(false);
}
[Command("RefreshBySTokenCommand")]
private Task RefreshBySTokenAsync()
private async Task RefreshBySTokenAsync()
{
return RefreshCoreAsync(RefreshOption.SToken).AsTask();
await RefreshCoreAsync(RefreshOption.SToken).ConfigureAwait(false);
}
[Command("RefreshByManualInputCommand")]
private Task RefreshByManualInputAsync()
private async Task RefreshByManualInputAsync()
{
return RefreshCoreAsync(RefreshOption.ManualInput).AsTask();
await RefreshCoreAsync(RefreshOption.ManualInput).ConfigureAwait(false);
}
private async ValueTask RefreshCoreAsync(RefreshOption option)
@@ -184,7 +190,16 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
{
try
{
authkeyValid = await gachaLogService.RefreshGachaLogAsync(query, strategy, progress, CancellationToken).ConfigureAwait(false);
try
{
suppressCurrentItemChangedHandling = true;
authkeyValid = await gachaLogService.RefreshGachaLogAsync(query, strategy, progress, CancellationToken).ConfigureAwait(false);
}
finally
{
suppressCurrentItemChangedHandling = false;
await UpdateStatisticsAsync(Archives?.CurrentItem).ConfigureAwait(false);
}
}
catch (HutaoException ex)
{
@@ -339,7 +354,7 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
private async ValueTask<bool> TryImportUIGFInternalAsync(UIGF uigf)
{
if (!uigf.IsCurrentVersionSupported(out UIGFVersion version))
if (!uigf.IsCurrentVersionSupported(out _))
{
infoBarService.Warning(SH.ViewModelGachaLogImportWarningTitle, SH.ViewModelGachaLogImportWarningMessage);
return false;
@@ -357,7 +372,16 @@ internal sealed partial class GachaLogViewModel : Abstraction.ViewModel
{
using (await dialog.BlockAsync(taskContext).ConfigureAwait(false))
{
await gachaLogService.ImportFromUIGFAsync(uigf).ConfigureAwait(false);
try
{
suppressCurrentItemChangedHandling = true;
await gachaLogService.ImportFromUIGFAsync(uigf).ConfigureAwait(false);
}
finally
{
suppressCurrentItemChangedHandling = false;
await UpdateStatisticsAsync(Archives?.CurrentItem).ConfigureAwait(false);
}
}
}
catch (InvalidOperationException ex)

View File

@@ -249,7 +249,7 @@ internal sealed partial class LaunchGameViewModel : Abstraction.ViewModel, IView
if (await userService.GetCurrentUidAsync().ConfigureAwait(false) is { } uid)
{
gameService.AttachGameAccountToUid(gameAccount, uid);
await gameService.AttachGameAccountToUidAsync(gameAccount, uid).ConfigureAwait(false);
}
else
{

View File

@@ -80,9 +80,7 @@ internal sealed class Expedition
}
TimeSpan ts = new(0, 0, RemainedTime);
return ts.Hours > 0
? SH.FormatWebDailyNoteExpeditionRemainHoursFormat(ts.Hours)
: SH.FormatWebDailyNoteExpeditionRemainMinutesFormat(ts.Minutes);
return SH.FormatWebDailyNoteExpeditionRemainTime(ts.Hours, ts.Minutes);
}
}
}

View File

@@ -1,9 +1,6 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Model.Primitive;
namespace Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.RoleCombat;
internal sealed class RoleCombatBuff

View File

@@ -1,9 +1,6 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Model.Primitive;
namespace Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.RoleCombat;
internal sealed class RoleCombatData

View File

@@ -1,9 +1,6 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Model.Primitive;
namespace Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.RoleCombat;
internal sealed class RoleCombatDetail

View File

@@ -1,12 +1,6 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Snap.Hutao.Web.Hoyolab.Takumi.GameRecord.RoleCombat;
internal sealed class RoleCombatLinks

View File

@@ -15,7 +15,7 @@ internal static class AdvApi32
{
[DllImport("ADVAPI32.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
[SupportedOSPlatform("windows5.1.2600")]
public static unsafe extern BOOL ConvertSidToStringSidW(PSID Sid, PWSTR* StringSid);
public static extern unsafe BOOL ConvertSidToStringSidW(PSID Sid, PWSTR* StringSid);
public static unsafe BOOL ConvertSidToStringSidW(PSID Sid, out PWSTR StringSid)
{
@@ -27,7 +27,7 @@ internal static class AdvApi32
[DllImport("ADVAPI32.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
[SupportedOSPlatform("windows5.1.2600")]
public static unsafe extern BOOL ConvertStringSidToSidW(PCWSTR StringSid, PSID* Sid);
public static extern unsafe BOOL ConvertStringSidToSidW(PCWSTR StringSid, PSID* Sid);
public static unsafe BOOL ConvertStringSidToSidW(ReadOnlySpan<char> StringSid, out PSID Sid)
{
@@ -54,7 +54,7 @@ internal static class AdvApi32
[DllImport("ADVAPI32.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
[SupportedOSPlatform("windows5.0")]
public static unsafe extern WIN32_ERROR RegOpenKeyExW(HKEY hKey, [AllowNull] PCWSTR lpSubKey, [AllowNull] uint ulOptions, REG_SAM_FLAGS samDesired, HKEY* phkResult);
public static extern unsafe WIN32_ERROR RegOpenKeyExW(HKEY hKey, [AllowNull] PCWSTR lpSubKey, [AllowNull] uint ulOptions, REG_SAM_FLAGS samDesired, HKEY* phkResult);
[DebuggerStepThrough]
public static unsafe WIN32_ERROR RegOpenKeyExW(HKEY hKey, ReadOnlySpan<char> subKey, uint ulOptions, REG_SAM_FLAGS samDesired, out HKEY hkResult)

View File

@@ -22,5 +22,5 @@ internal static class ComCtl32
[DllImport("COMCTL32.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
[SupportedOSPlatform("windows5.1.2600")]
public static unsafe extern BOOL SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, nuint uIdSubclass, nuint dwRefData);
public static extern unsafe BOOL SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, nuint uIdSubclass, nuint dwRefData);
}

View File

@@ -16,7 +16,7 @@ namespace Snap.Hutao.Win32;
internal static class D3d11
{
[DllImport("d3d11.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
public static unsafe extern HRESULT CreateDirect3D11DeviceFromDXGIDevice(IDXGIDevice* dxgiDevice, IInspectable** graphicsDevice);
public static extern unsafe HRESULT CreateDirect3D11DeviceFromDXGIDevice(IDXGIDevice* dxgiDevice, IInspectable** graphicsDevice);
[DebuggerStepThrough]
public static unsafe HRESULT CreateDirect3D11DeviceFromDXGIDevice(IDXGIDevice* dxgiDevice, out IInspectable* graphicsDevice)
@@ -28,7 +28,7 @@ internal static class D3d11
}
[DllImport("d3d11.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
public static unsafe extern HRESULT D3D11CreateDevice([AllowNull] IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, D3D11_CREATE_DEVICE_FLAG Flags, [AllowNull] D3D_FEATURE_LEVEL* pFeatureLevels, uint FeatureLevels, uint SDKVersion, [MaybeNull] ID3D11Device** ppDevice, [MaybeNull] D3D_FEATURE_LEVEL* pFeatureLevel, [MaybeNull] ID3D11DeviceContext** ppImmediateContext);
public static extern unsafe HRESULT D3D11CreateDevice([AllowNull] IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, D3D11_CREATE_DEVICE_FLAG Flags, [AllowNull] D3D_FEATURE_LEVEL* pFeatureLevels, uint FeatureLevels, uint SDKVersion, [MaybeNull] ID3D11Device** ppDevice, [MaybeNull] D3D_FEATURE_LEVEL* pFeatureLevel, [MaybeNull] ID3D11DeviceContext** ppImmediateContext);
public static unsafe HRESULT D3D11CreateDevice([AllowNull] IDXGIAdapter* pAdapter, D3D_DRIVER_TYPE DriverType, HMODULE Software, D3D11_CREATE_DEVICE_FLAG Flags, [AllowNull] ReadOnlySpan<D3D_FEATURE_LEVEL> featureLevels, uint SDKVersion, out ID3D11Device* pDevice, out D3D_FEATURE_LEVEL featureLevel, out ID3D11DeviceContext* pImmediateContext)
{

View File

@@ -14,7 +14,7 @@ internal static class DwmApi
{
[DllImport("dwmapi.dll", ExactSpelling = true)]
[SupportedOSPlatform("windows6.0.6000")]
public static unsafe extern HRESULT DwmGetWindowAttribute(HWND hwnd, uint dwAttribute, void* pvAttribute, uint cbAttribute);
public static extern unsafe HRESULT DwmGetWindowAttribute(HWND hwnd, uint dwAttribute, void* pvAttribute, uint cbAttribute);
public static unsafe HRESULT DwmGetWindowAttribute<T>(HWND hwnd, DWMWINDOWATTRIBUTE dwAttribute, out T attribute)
where T : unmanaged
@@ -27,7 +27,7 @@ internal static class DwmApi
[DllImport("dwmapi.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
[SupportedOSPlatform("windows6.0.6000")]
public static unsafe extern HRESULT DwmSetWindowAttribute(HWND hwnd, uint dwAttribute, void* pvAttribute, uint cbAttribute);
public static extern unsafe HRESULT DwmSetWindowAttribute(HWND hwnd, uint dwAttribute, void* pvAttribute, uint cbAttribute);
[DebuggerStepThrough]
public static unsafe HRESULT DwmSetWindowAttribute<T>(HWND hwnd, DWMWINDOWATTRIBUTE dwAttribute, ref readonly T attribute)

View File

@@ -13,7 +13,7 @@ internal static class Dxgi
{
[DllImport("dxgi.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
[SupportedOSPlatform("windows8.1")]
public static unsafe extern HRESULT CreateDXGIFactory2(uint Flags, Guid* riid, void** ppFactory);
public static extern unsafe HRESULT CreateDXGIFactory2(uint Flags, Guid* riid, void** ppFactory);
public static unsafe HRESULT CreateDXGIFactory2<T>(uint Flags, ref readonly Guid iid, out T* pFactory)
where T : unmanaged

View File

@@ -16,7 +16,7 @@ internal static class FirewallApi
{
[DllImport("api-ms-win-net-isolation-l1-1-0.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
[SupportedOSPlatform("windows8.0")]
public static unsafe extern uint NetworkIsolationEnumAppContainers(uint Flags, uint* pdwNumPublicAppCs, INET_FIREWALL_APP_CONTAINER** ppPublicAppCs);
public static extern unsafe uint NetworkIsolationEnumAppContainers(uint Flags, uint* pdwNumPublicAppCs, INET_FIREWALL_APP_CONTAINER** ppPublicAppCs);
[DebuggerStepThrough]
public static unsafe WIN32_ERROR NetworkIsolationEnumAppContainers(NETISO_FLAG Flags, out uint dwNumPublicAppCs, out INET_FIREWALL_APP_CONTAINER* pPublicAppCs)
@@ -33,7 +33,7 @@ internal static class FirewallApi
[DllImport("api-ms-win-net-isolation-l1-1-0.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
[SupportedOSPlatform("windows8.0")]
public static unsafe extern uint NetworkIsolationFreeAppContainers(INET_FIREWALL_APP_CONTAINER* pPublicAppCs);
public static extern unsafe uint NetworkIsolationFreeAppContainers(INET_FIREWALL_APP_CONTAINER* pPublicAppCs);
[DebuggerStepThrough]
public static unsafe WIN32_ERROR NetworkIsolationFreeAppContainers(ref readonly INET_FIREWALL_APP_CONTAINER publicAppCs)
@@ -47,7 +47,7 @@ internal static class FirewallApi
[DllImport("api-ms-win-net-isolation-l1-1-0.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
[SupportedOSPlatform("windows8.0")]
public static unsafe extern uint NetworkIsolationGetAppContainerConfig(uint* pdwNumPublicAppCs, SID_AND_ATTRIBUTES** appContainerSids);
public static extern unsafe uint NetworkIsolationGetAppContainerConfig(uint* pdwNumPublicAppCs, SID_AND_ATTRIBUTES** appContainerSids);
[DebuggerStepThrough]
public static unsafe WIN32_ERROR NetworkIsolationGetAppContainerConfig(out uint dwNumPublicAppCs, out SID_AND_ATTRIBUTES* appContainerSids)
@@ -64,7 +64,7 @@ internal static class FirewallApi
[DllImport("api-ms-win-net-isolation-l1-1-0.dll", CallingConvention = CallingConvention.Winapi, ExactSpelling = true)]
[SupportedOSPlatform("windows8.0")]
public static unsafe extern uint NetworkIsolationSetAppContainerConfig(uint dwNumPublicAppCs, SID_AND_ATTRIBUTES* appContainerSids);
public static extern unsafe uint NetworkIsolationSetAppContainerConfig(uint dwNumPublicAppCs, SID_AND_ATTRIBUTES* appContainerSids);
[DebuggerStepThrough]
public static unsafe WIN32_ERROR NetworkIsolationSetAppContainerConfig(ReadOnlySpan<SID_AND_ATTRIBUTES> appContainerSids)

View File

@@ -9,13 +9,28 @@ internal readonly struct BOOL
public readonly int Value;
public BOOL(bool value) => Value = value ? 1 : 0;
public BOOL(bool value)
{
Value = value ? 1 : 0;
}
public static unsafe implicit operator int(BOOL value) => *(int*)&value;
public static unsafe implicit operator int(BOOL value)
{
return *(int*)&value;
}
public static unsafe implicit operator BOOL(int value) => *(BOOL*)&value;
public static unsafe implicit operator BOOL(int value)
{
return *(BOOL*)&value;
}
public static implicit operator BOOL(bool value) => new(value);
public static implicit operator BOOL(bool value)
{
return new(value);
}
public static implicit operator bool(BOOL value) => value != 0;
public static implicit operator bool(BOOL value)
{
return value != 0;
}
}

View File

@@ -9,9 +9,18 @@ internal readonly struct HANDLE
{
public readonly nint Value;
public static unsafe implicit operator HANDLE(nint value) => *(HANDLE*)&value;
public static unsafe implicit operator HANDLE(nint value)
{
return *(HANDLE*)&value;
}
public static unsafe implicit operator nint(HANDLE handle) => *(nint*)&handle;
public static unsafe implicit operator nint(HANDLE handle)
{
return *(nint*)&handle;
}
public static unsafe implicit operator HANDLE(BOOL value) => *(int*)&value;
public static unsafe implicit operator HANDLE(BOOL value)
{
return *(int*)&value;
}
}

View File

@@ -9,5 +9,8 @@ internal readonly struct HINSTANCE
{
public readonly nint Value;
public static unsafe implicit operator HINSTANCE(HANDLE value) => *(HINSTANCE*)&value;
public static unsafe implicit operator HINSTANCE(HANDLE value)
{
return *(HINSTANCE*)&value;
}
}

View File

@@ -9,7 +9,13 @@ internal readonly struct HMODULE
{
public readonly nint Value;
public static unsafe implicit operator HMODULE(nint value) => *(HMODULE*)&value;
public static unsafe implicit operator HMODULE(nint value)
{
return *(HMODULE*)&value;
}
public static unsafe implicit operator nint(HMODULE module) => *(nint*)&module;
public static unsafe implicit operator nint(HMODULE module)
{
return *(nint*)&module;
}
}

View File

@@ -8,7 +8,7 @@ namespace Snap.Hutao.Win32.Foundation;
[SuppressMessage("", "SA1310")]
internal readonly partial struct HRESULT
{
public static readonly HRESULT S_OK = unchecked((int)0x00000000);
public static readonly HRESULT S_OK = unchecked(0x00000000);
public static readonly HRESULT E_ASYNC_OPERATION_NOT_STARTED = unchecked((int)0x80000019);
public static readonly HRESULT E_FAIL = unchecked((int)0x80004005);
public static readonly HRESULT DXGI_ERROR_NOT_FOUND = unchecked((int)0x887A0002);
@@ -17,9 +17,15 @@ internal readonly partial struct HRESULT
public readonly int Value;
public static unsafe implicit operator int(HRESULT value) => *(int*)&value;
public static unsafe implicit operator int(HRESULT value)
{
return *(int*)&value;
}
public static unsafe implicit operator HRESULT(int value) => *(HRESULT*)&value;
public static unsafe implicit operator HRESULT(int value)
{
return *(HRESULT*)&value;
}
public override string ToString()
{

View File

@@ -7,7 +7,13 @@ internal readonly struct HWND
{
public readonly nint Value;
public static unsafe implicit operator HWND(nint value) => *(HWND*)&value;
public static unsafe implicit operator HWND(nint value)
{
return *(HWND*)&value;
}
public static unsafe implicit operator nint(HWND value) => *(nint*)&value;
public static unsafe implicit operator nint(HWND value)
{
return *(nint*)&value;
}
}

View File

@@ -7,5 +7,8 @@ internal readonly struct LPARAM
{
public readonly nint Value;
public static unsafe implicit operator void*(LPARAM value) => *(void**)&value;
public static unsafe implicit operator void*(LPARAM value)
{
return *(void**)&value;
}
}

View File

@@ -7,5 +7,8 @@ internal readonly struct LRESULT
{
public readonly nint Value;
public static unsafe implicit operator LRESULT(nint value) => *(LRESULT*)&value;
public static unsafe implicit operator LRESULT(nint value)
{
return *(LRESULT*)&value;
}
}

View File

@@ -7,7 +7,13 @@ internal readonly struct PCSTR
{
public readonly unsafe byte* Value;
public static unsafe implicit operator PCSTR(byte* value) => *(PCSTR*)&value;
public static unsafe implicit operator PCSTR(byte* value)
{
return *(PCSTR*)&value;
}
public static unsafe implicit operator byte*(PCSTR value) => *(byte**)&value;
public static unsafe implicit operator byte*(PCSTR value)
{
return *(byte**)&value;
}
}

View File

@@ -7,7 +7,13 @@ internal readonly struct PCWSTR
{
public readonly unsafe char* Value;
public static unsafe implicit operator PCWSTR(char* value) => *(PCWSTR*)&value;
public static unsafe implicit operator PCWSTR(char* value)
{
return *(PCWSTR*)&value;
}
public static unsafe implicit operator char*(PCWSTR value) => *(char**)&value;
public static unsafe implicit operator char*(PCWSTR value)
{
return *(char**)&value;
}
}

View File

@@ -9,7 +9,13 @@ internal struct PSID
{
public unsafe void* Value;
public static unsafe implicit operator PSID(SID* value) => *(PSID*)&value;
public static unsafe implicit operator PSID(SID* value)
{
return *(PSID*)&value;
}
public static unsafe implicit operator void*(PSID value) => *(void**)&value;
public static unsafe implicit operator void*(PSID value)
{
return *(void**)&value;
}
}

View File

@@ -7,7 +7,13 @@ internal readonly struct PWSTR
{
public readonly unsafe char* Value;
public static unsafe implicit operator PWSTR(char* value) => *(PWSTR*)&value;
public static unsafe implicit operator PWSTR(char* value)
{
return *(PWSTR*)&value;
}
public static unsafe implicit operator char*(PWSTR value) => *(char**)&value;
public static unsafe implicit operator char*(PWSTR value)
{
return *(char**)&value;
}
}

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11Asynchronous
internal readonly unsafe struct ID3D11Asynchronous
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11BlendState
internal readonly unsafe struct ID3D11BlendState
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11Buffer
internal readonly unsafe struct ID3D11Buffer
{
public readonly Vftbl* ThisPtr;

View File

@@ -9,7 +9,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11ClassInstance
internal readonly unsafe struct ID3D11ClassInstance
{
public readonly Vftbl* ThisPtr;

View File

@@ -9,7 +9,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11ClassLinkage
internal readonly unsafe struct ID3D11ClassLinkage
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11CommandList
internal readonly unsafe struct ID3D11CommandList
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11ComputeShader
internal readonly unsafe struct ID3D11ComputeShader
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11Counter
internal readonly unsafe struct ID3D11Counter
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11DepthStencilState
internal readonly unsafe struct ID3D11DepthStencilState
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11DepthStencilView
internal readonly unsafe struct ID3D11DepthStencilView
{
public readonly Vftbl* ThisPtr;

View File

@@ -10,7 +10,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11DeviceChild
internal readonly unsafe struct ID3D11DeviceChild
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11DomainShader
internal readonly unsafe struct ID3D11DomainShader
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11GeometryShader
internal readonly unsafe struct ID3D11GeometryShader
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11HullShader
internal readonly unsafe struct ID3D11HullShader
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11InputLayout
internal readonly unsafe struct ID3D11InputLayout
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11PixelShader
internal readonly unsafe struct ID3D11PixelShader
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11Predicate
internal readonly unsafe struct ID3D11Predicate
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11Query
internal readonly unsafe struct ID3D11Query
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11RasterizerState
internal readonly unsafe struct ID3D11RasterizerState
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11RenderTargetView
internal readonly unsafe struct ID3D11RenderTargetView
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11Resource
internal readonly unsafe struct ID3D11Resource
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11SamplerState
internal readonly unsafe struct ID3D11SamplerState
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11ShaderResourceView
internal readonly unsafe struct ID3D11ShaderResourceView
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11Texture1D
internal readonly unsafe struct ID3D11Texture1D
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11Texture2D
internal readonly unsafe struct ID3D11Texture2D
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11Texture3D
internal readonly unsafe struct ID3D11Texture3D
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11UnorderedAccessView
internal readonly unsafe struct ID3D11UnorderedAccessView
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11VertexShader
internal readonly unsafe struct ID3D11VertexShader
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Direct3D11;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct ID3D11View
internal readonly unsafe struct ID3D11View
{
public readonly Vftbl* ThisPtr;

View File

@@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
internal unsafe readonly struct IDXGIAdapter
internal readonly unsafe struct IDXGIAdapter
{
public readonly Vftbl* ThisPtr;

View File

@@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
internal unsafe readonly struct IDXGIAdapter1
internal readonly unsafe struct IDXGIAdapter1
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.InteropServices;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
internal unsafe readonly struct IDXGIDevice
internal readonly unsafe struct IDXGIDevice
{
public readonly Vftbl* ThisPtr;

View File

@@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
internal unsafe readonly struct IDXGIDeviceSubObject
internal readonly unsafe struct IDXGIDeviceSubObject
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.InteropServices;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
internal unsafe readonly struct IDXGIFactory
internal readonly unsafe struct IDXGIFactory
{
public readonly Vftbl* ThisPtr;

View File

@@ -9,7 +9,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
[SupportedOSPlatform("windows6.1")]
internal unsafe readonly struct IDXGIFactory1
internal readonly unsafe struct IDXGIFactory1
{
public readonly Vftbl* ThisPtr;

View File

@@ -10,7 +10,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
[SupportedOSPlatform("windows8.0")]
internal unsafe readonly struct IDXGIFactory2
internal readonly unsafe struct IDXGIFactory2
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.Versioning;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
[SupportedOSPlatform("windows8.1")]
internal unsafe readonly struct IDXGIFactory3
internal readonly unsafe struct IDXGIFactory3
{
public readonly Vftbl* ThisPtr;

View File

@@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
internal unsafe readonly struct IDXGIFactory4
internal readonly unsafe struct IDXGIFactory4
{
public readonly Vftbl* ThisPtr;

View File

@@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
internal unsafe readonly struct IDXGIFactory5
internal readonly unsafe struct IDXGIFactory5
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.InteropServices;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
internal unsafe readonly struct IDXGIObject
internal readonly unsafe struct IDXGIObject
{
public readonly Vftbl* ThisPtr;

View File

@@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
internal unsafe readonly struct IDXGIOutput
internal readonly unsafe struct IDXGIOutput
{
public readonly Vftbl* ThisPtr;

View File

@@ -8,7 +8,7 @@ using System.Runtime.InteropServices;
namespace Snap.Hutao.Win32.Graphics.Dxgi;
internal unsafe readonly struct IDXGISwapChain
internal readonly unsafe struct IDXGISwapChain
{
public readonly Vftbl* ThisPtr;

Some files were not shown because too many files have changed in this diff Show More