---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 146
  claims_with_evidence: 143
  claims_without_evidence: 3
confidence_derived: 0.98
---

# 根拠レポート：interactivity-onecore 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：143 / 146、根拠なし：3
- 優先レビュー（高）
  1. **C-114 (UT-IOC-114)**：GetSettingsFromLinkのnullポインタ渡しの挙動は実装上の保護がなく、SAL注釈からは推測のみ
  2. **C-018 (UT-IOC-018)**：HandleGenericKeyEvent例外時のログ記録はcatch(...)ブロックの存在から推測するが、具体的なログ出力先は不明
  3. **C-067 (UT-IOC-067)**：EndTask内のULongToHandleの境界値（0xFFFFFFFF）の挙動はWin32 API仕様依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `src/interactivity/onecore/ConIoSrvComm.hpp` - ConIoSrvCommクラス定義
- E-02: `src/interactivity/onecore/ConIoSrvComm.cpp` - ConIoSrvComm実装
- E-03: `src/interactivity/onecore/ConsoleControl.hpp` - ConsoleControlクラス定義
- E-04: `src/interactivity/onecore/ConsoleControl.cpp` - ConsoleControl実装
- E-05: `src/interactivity/onecore/ConsoleWindow.hpp` - ConsoleWindowクラス定義
- E-06: `src/interactivity/onecore/ConsoleWindow.cpp` - ConsoleWindow実装
- E-07: `src/interactivity/onecore/ConsoleInputThread.hpp` - ConsoleInputThreadクラス定義
- E-08: `src/interactivity/onecore/ConsoleInputThread.cpp` - ConsoleInputThread実装
- E-09: `src/interactivity/onecore/WindowMetrics.hpp` - WindowMetricsクラス定義
- E-10: `src/interactivity/onecore/WindowMetrics.cpp` - WindowMetrics実装
- E-11: `src/interactivity/onecore/SystemConfigurationProvider.hpp` - SystemConfigurationProviderクラス定義
- E-12: `src/interactivity/onecore/SystemConfigurationProvider.cpp` - SystemConfigurationProvider実装
- E-13: `src/interactivity/onecore/BgfxEngine.hpp` - BgfxEngineクラス定義
- E-14: `src/interactivity/onecore/BgfxEngine.cpp` - BgfxEngine実装

## 3) Claims と根拠の対応（レビューの主戦場）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | ConIoSrvCommコンストラクタで全メンバが初期値に設定される | E-02 (L40-50) | ○ |
| C-002 | デストラクタで_inputPipeThreadHandleがCancelSynchronousIo後にCloseされる | E-02 (L55-61) | ○ |
| C-003 | デストラクタでパイプハンドルがCloseされる | E-02 (L64-74) | ○ |
| C-004 | デストラクタでALPCポートがCloseされる | E-02 (L76-80) | ○ |
| C-005 | デストラクタでINVALID_HANDLE_VALUEのハンドルはスキップされる | E-02 (L64,70,76の条件分岐) | ○ |
| C-006 | GetConIoSrvCommがシングルトンを返す | E-02 (L28-38) | ○ |
| C-007 | GetConIoSrvCommが同一インスタンスを返す | E-02 (L30のstatic変数) | ○ |
| C-008 | Connect成功時にパイプハンドルとALPCポートが設定される | E-02 (L85-221) | ○ |
| C-009 | Connect成功時に共有ビュー情報が保存される | E-02 (L206-207) | ○ |
| C-010 | Connect成功時にディスプレイモードが取得される | E-02 (L216) | ○ |
| C-011 | Connect失敗時にエラーステータスが返される | E-02 (L166,220) | ○ |
| C-012 | ハンドル数!=2でSTATUS_UNSUCCESSFULが返される | E-02 (L173-176) | ○ |
| C-013 | EnsureConnectionが未接続時にConnectを呼ぶ | E-02 (L223-237) | ○ |
| C-014 | EnsureConnectionが接続済み時にSTATUS_SUCCESSを返す | E-02 (L231-233) | ○ |
| C-015 | ServiceInputPipeがCIS_EVENT_TYPE_INPUTを処理する | E-02 (L266-275) | ○ |
| C-016 | ServiceInputPipeがCIS_EVENT_TYPE_FOCUSを処理する | E-02 (L276-278) | ○ |
| C-017 | ReadFile失敗時にRundownAndExitが呼ばれる | E-02 (L285-288) | ○ |
| C-018 | HandleGenericKeyEvent例外時にLOG_HRが呼ばれる | E-02 (L271-274) | △ |
| C-019 | _inputPipeThreadHandle設定済みでE_NOT_VALID_STATEがスローされる | E-02 (L242) | ○ |
| C-020 | 不明なイベントタイプはdefaultで無視される | E-02 (L279-280) | ○ |
| C-021 | SendRequestReceiveReplyがヘッダを初期化してALPC通信する | E-02 (L292-315) | ○ |
| C-022 | SendRequestReceiveReply失敗時にエラーステータスが返される | E-02 (L305-314) | ○ |
| C-023 | BGFXモード・フォーカス取得時にEnablePainting/TriggerRedrawAll | E-02 (L326-334) | ○ |
| C-024 | DirectXモード・フォーカス取得時にWddmCon初期化 | E-02 (L341-388) | ○ |
| C-025 | DirectXモード・フォーカス取得時にビューポートサイズ同期 | E-02 (L356-372) | ○ |
| C-026 | DirectXモード・フォーカス喪失時にTeardown/Disable/FocusAck | E-02 (L392-461) | ○ |
| C-027 | NONEモードでフォーカスイベント無視 | E-02 (L467-470) | ○ |
| C-028 | DirectXモードでWddmCon初期化失敗時にEnable/Paintが呼ばれない | E-02 (L375-388) | ○ |
| C-029 | CleanupForHeadlessで未初期化時にハンドルクリーンアップ | E-02 (L474-505) | ○ |
| C-030 | CleanupForHeadlessでステータス設定とイベントシグナル | E-02 (L498-501) | ○ |
| C-031 | CleanupForHeadlessで_fIsInputInitialized=true | E-02 (L503) | ○ |
| C-032 | CleanupForHeadlessで初期化済みなら何もしない | E-02 (L476の条件分岐) | ○ |
| C-033 | RequestGetDisplaySizeが正しくサイズを取得する | E-02 (L511-524) | ○ |
| C-034 | RequestGetDisplaySize通信失敗時にエラーステータス | E-02 (L516-523) | ○ |
| C-035 | RequestGetFontSizeが正しくサイズを取得する | E-02 (L526-539) | ○ |
| C-036 | RequestGetFontSize通信失敗時にエラーステータス | E-02 (L530-538) | ○ |
| C-037 | RequestSetCursorがカーソル情報を送信する | E-02 (L541-554) | ○ |
| C-038 | RequestSetCursor通信失敗時にエラーステータス | E-02 (L547-553) | ○ |
| C-039 | RequestUpdateDisplayが正しく送信される | E-02 (L556-569) | ○ |
| C-040 | RequestUpdateDisplay通信失敗時にエラーステータス | E-02 (L562-568) | ○ |
| C-041 | RequestMapVirtualKeyが結果を取得する | E-02 (L571-591) | ○ |
| C-042 | RequestMapVirtualKey接続保証失敗時にエラー | E-02 (L575-576) | ○ |
| C-043 | RequestVkKeyScanが変換結果を取得する | E-02 (L593-612) | ○ |
| C-044 | RequestVkKeyScan接続保証失敗時にエラー | E-02 (L597-598) | ○ |
| C-045 | RequestGetKeyStateがキー状態を取得する | E-02 (L614-633) | ○ |
| C-046 | RequestGetKeyState接続保証失敗時にエラー | E-02 (L618-619) | ○ |
| C-047 | GetDisplayModeが_displayModeを返す | E-02 (L635-638) | ○ |
| C-048 | GetSharedViewBaseが_alpcSharedViewBaseを返す | E-02 (L640-643) | ○ |
| C-049 | GetSharedViewBase未接続時にnullptr | E-02 (L42の初期化値) | ○ |
| C-050 | ConIoMapVirtualKeyW成功時に結果を返す | E-02 (L649-663) | ○ |
| C-051 | ConIoMapVirtualKeyW失敗時に0とERROR_PROC_NOT_FOUND | E-02 (L656-659) | ○ |
| C-052 | ConIoVkKeyScanW成功時に結果を返す | E-02 (L665-679) | ○ |
| C-053 | ConIoVkKeyScanW失敗時に0とERROR_PROC_NOT_FOUND | E-02 (L672-676) | ○ |
| C-054 | ConIoGetKeyState成功時に結果を返す | E-02 (L681-695) | ○ |
| C-055 | ConIoGetKeyState失敗時に0とERROR_PROC_NOT_FOUND | E-02 (L688-691) | ○ |
| C-056 | InitializeBgfxが正しくBgfxEngineを作成する | E-02 (L699-739) | ○ |
| C-057 | InitializeBgfxでDisplaySize取得失敗時にエラー | E-02 (L707-709) | ○ |
| C-058 | InitializeBgfxでFontSize取得失敗時にエラー | E-02 (L713-714) | ○ |
| C-059 | InitializeBgfx例外時にNTSTATUS変換 | E-02 (L731-734) | ○ |
| C-060 | InitializeWddmConが正しくエンジン作成 | E-02 (L741-760) | ○ |
| C-061 | InitializeWddmCon例外時にNTSTATUS変換 | E-02 (L755-757) | ○ |
| C-062 | ConsoleControl::Controlがno-op | E-04 (L15-17) | ○ |
| C-063 | ConsoleControl::NotifyWinEventがno-op | E-04 (L19-21) | ○ |
| C-064 | ConsoleControl::NotifyConsoleApplicationがno-op | E-04 (L23-25) | ○ |
| C-065 | ConsoleControl::SetForegroundがno-op | E-04 (L27-29) | ○ |
| C-066 | ConsoleControl::EndTaskがCsrClientCallServerを呼ぶ | E-04 (L31-43) | ○ |
| C-067 | EndTask内のULongToHandle変換（0xFFFFFFFF） | E-04 (L37) | △ |
| C-068 | ConsoleControl::SetWindowOwnerがno-op | E-04 (L45-47) | ○ |
| C-069 | ConsoleWindow::IsInFullscreenが常にtrue | E-06 (L14-17) | ○ |
| C-070 | ConsoleWindow::SetIsFullscreenがno-op | E-06 (L19-21) | ○ |
| C-071 | SetIsFullscreen(false)もno-op | E-06 (L19-21) | ○ |
| C-072 | ChangeViewportがビューポート変更とスクロールトリガー | E-06 (L23-43) | ○ |
| C-073 | ChangeViewportで選択範囲のHide/Show | E-06 (L31,40) | ○ |
| C-074 | ChangeViewportでpRender==nullptrの場合TriggerScrollスキップ | E-06 (L35-38) | ○ |
| C-075 | ConsoleWindow::CaptureMouseがno-op | E-06 (L45-47) | ○ |
| C-076 | ConsoleWindow::ReleaseMouseがTRUEを返す | E-06 (L49-52) | ○ |
| C-077 | ConsoleWindow::GetWindowHandleがnullptrを返す | E-06 (L54-57) | ○ |
| C-078 | ConsoleWindow::SetOwnerがno-op | E-06 (L59-61) | ○ |
| C-079 | ConsoleWindow::GetCursorPositionがFALSEを返す | E-06 (L63-66) | ○ |
| C-080 | ConsoleWindow::GetClientRectangleがFALSEを返す | E-06 (L68-71) | ○ |
| C-081 | ConsoleWindow::MapRectが0を返す | E-06 (L73-76) | ○ |
| C-082 | ConsoleWindow::ConvertScreenToClientが0を返す | E-06 (L78-81) | ○ |
| C-083 | ConsoleWindow::SendNotifyBeepがBeep(800,200)を呼ぶ | E-06 (L83-86) | ○ |
| C-084 | ConsoleWindow::PostUpdateScrollBarsがFALSEを返す | E-06 (L88-91) | ○ |
| C-085 | ConsoleWindow::PostUpdateWindowSizeがFALSEを返す | E-06 (L93-96) | ○ |
| C-086 | ConsoleWindow::UpdateWindowSizeがno-op | E-06 (L98-100) | ○ |
| C-087 | ConsoleWindow::UpdateWindowTextがno-op | E-06 (L102-104) | ○ |
| C-088 | ConsoleWindow::HorizontalScrollがno-op | E-06 (L106-108) | ○ |
| C-089 | ConsoleWindow::VerticalScrollがno-op | E-06 (L110-112) | ○ |
| C-090 | ConsoleWindow::UiaSetTextAreaFocusがE_NOTIMPLを返す | E-06 (L114-117) | ○ |
| C-091 | ConsoleWindow::GetWindowRectが空矩形を返す | E-06 (L119-122) | ○ |
| C-092 | ConsoleInputThread::Startがスレッドを作成する | E-08 (L109-126) | ○ |
| C-093 | Start失敗時にnullptrが返される | E-08 (L119-123) | ○ |
| C-094 | スレッドプロシージャ: BGFXモードでInitializeBgfxが呼ばれる | E-08 (L44-46) | ○ |
| C-095 | スレッドプロシージャ: DirectXモードでInitializeWddmConが呼ばれる | E-08 (L47-49) | ○ |
| C-096 | スレッドプロシージャ: NONEモードでCleanupForHeadless | E-08 (L82-86) | ○ |
| C-097 | 接続失敗ACCESS_DENIED時にSTATUS_SUCCESSに変換 | E-08 (L95-98) | ○ |
| C-098 | 接続失敗ACCESS_DENIED以外でエラーステータスのまま | E-08 (L95-101) | ○ |
| C-099 | ServiceInputPipe例外時にCleanupForHeadless | E-08 (L64-77) | ○ |
| C-100 | WindowMetrics: BGFXモードでサーバーからサイズ取得 | E-10 (L61-89) | ○ |
| C-101 | WindowMetrics: DirectXモードでWddmConからサイズ取得 | E-10 (L91-95) | ○ |
| C-102 | WindowMetrics: NONEモードでデフォルト値 | E-10 (L97-103, L16-19) | ○ |
| C-103 | WindowMetrics: BGFX DisplaySize取得失敗時のフォールバック | E-10 (L86-88) | ○ |
| C-104 | WindowMetrics: BGFX FontSize取得失敗時のフォールバック | E-10 (L70-83) | ○ |
| C-105 | GetMaxClientRectInPixelsがGetMinと同じ結果 | E-10 (L115-119) | ○ |
| C-106 | GetCaretBlinkTimeが530を返す | E-12 (L10-13) | ○ |
| C-107 | IsCaretBlinkingEnabledがtrueを返す | E-12 (L15-18) | ○ |
| C-108 | GetNumberOfMouseButtons: GetSystemMetrics使用 | E-12 (L20-30) | ○ |
| C-109 | GetNumberOfMouseButtons: デフォルト3 | E-12 (L27-29) | ○ |
| C-110 | GetCursorWidthが1を返す | E-12 (L32-35) | ○ |
| C-111 | GetNumberOfWheelScrollLinesが3を返す | E-12 (L37-40) | ○ |
| C-112 | GetNumberOfWheelScrollCharactersが3を返す | E-12 (L42-45) | ○ |
| C-113 | GetSettingsFromLinkでTrueTypeフォント設定 | E-12 (L47-68) | ○ |
| C-114 | GetSettingsFromLinkでnullポインタの挙動 | E-12 (L47-68) | △ |
| C-115 | BgfxEngineコンストラクタでメンバ初期化 | E-14 (L23-34) | ○ |
| C-116 | BgfxEngine: FontWidth > SHORT_MAXのクランプ | E-14 (L32) | ○ |
| C-117 | BgfxEngine: FontHeight > SHORT_MAXのクランプ | E-14 (L33) | ○ |
| C-118 | BgfxEngine::InvalidateがS_OK | E-14 (L36-39) | ○ |
| C-119 | BgfxEngine::InvalidateCursorがS_OK | E-14 (L41-44) | ○ |
| C-120 | BgfxEngine::InvalidateSystemがS_OK | E-14 (L46-49) | ○ |
| C-121 | BgfxEngine::InvalidateScrollがS_OK | E-14 (L51-54) | ○ |
| C-122 | BgfxEngine::InvalidateAllがS_OK | E-14 (L56-59) | ○ |
| C-123 | BgfxEngine::StartPaintがS_OK | E-14 (L61-64) | ○ |
| C-124 | BgfxEngine::EndPaintでバッファコピー実行 | E-14 (L66-83) | ○ |
| C-125 | BgfxEngine::EndPaintで更新失敗時にバッファコピースキップ | E-14 (L71-78) | ○ |
| C-126 | BgfxEngine::PresentがS_FALSE | E-14 (L92-95) | ○ |
| C-127 | BgfxEngine::ScrollFrameがS_OK | E-14 (L97-100) | ○ |
| C-128 | PaintBackground: 新バッファを空白で初期化 | E-14 (L102-116) | ○ |
| C-129 | PaintBackground: DisplayHeight=0で何もしない | E-14 (L104のループ条件) | ○ |
| C-130 | PaintBufferLine: 文字と属性を書き込む | E-14 (L118-137) | ○ |
| C-131 | PaintBufferLine: 空クラスタで何もしない | E-14 (L128のループ条件) | ○ |
| C-132 | PaintBufferLine: クラスタ数>DisplayWidthでクランプ | E-14 (L128の条件 i < _displayWidth) | ○ |
| C-133 | PaintBufferGridLinesがS_OK | E-14 (L139-146) | ○ |
| C-134 | PaintSelectionがS_OK | E-14 (L148-151) | ○ |
| C-135 | PaintCursor: カーソル情報をRequestSetCursorで送信 | E-14 (L153-168) | ○ |
| C-136 | PaintCursor: RequestSetCursor失敗時にHRESULTエラー | E-14 (L164-166) | ○ |
| C-137 | UpdateDrawingBrushes: レガシーカラー属性を更新 | E-14 (L170-179) | ○ |
| C-138 | UpdateFontがS_OK | E-14 (L181-184) | ○ |
| C-139 | UpdateDpiがS_OK | E-14 (L186-189) | ○ |
| C-140 | UpdateViewportがS_OK | E-14 (L198-201) | ○ |
| C-141 | GetProposedFontがS_OK | E-14 (L203-206) | ○ |
| C-142 | GetDirtyArea: 全表示領域を返す | E-14 (L208-217) | ○ |
| C-143 | GetDirtyArea: サイズ0で{0,0,0,0} | E-14 (L210-211のstd::max) | ○ |
| C-144 | GetFontSize: コンストラクタで設定した値を返す | E-14 (L219-223) | ○ |
| C-145 | IsGlyphWideByFont: 常にfalse | E-14 (L225-229) | ○ |
| C-146 | _DoUpdateTitle: S_OK | E-14 (L238-241) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-018**: HandleGenericKeyEventは外部関数（`host/input.h`で定義）であり、例外発生時の具体的なログ出力先はConIoSrvComm.cppのcatch(...)ブロック内のLOG_HRマクロの動作に依存する。LOG_HRマクロの実装詳細は本モジュール外。
  - 候補：`host/input.h` / WILライブラリのLOG_HRマクロ定義
- **C-067**: ULongToHandle(0xFFFFFFFF)の動作はWindows SDKのマクロ定義に依存し、本モジュール内にはバウンダリチェックが存在しない。
  - 候補：Windows SDK / `handleapi.h`
- **C-114**: GetSettingsFromLinkにnullptrを渡した場合のクラッシュ可能性。SAL注釈（`_Inout_`）は非nullを期待するが、実行時の保護コードは存在しない。
  - 候補：呼び出し元のコード / SAL注釈の強制力に関するドキュメント

## 5) リスクフラグ（レビュー観点）
- **リスク1 (中)**: ConIoSrvCommのALPC通信処理は低レベルのカーネルAPI（NtAlpcConnectPort, NtAlpcSendWaitReceivePort等）に依存しており、単体テストではモック化が必要。モック化の適切性がテストの信頼性に影響する。
- **リスク1 (中)**: HandleFocusEventのDirectXモード処理は、pWddmConEngineの状態（IsInitialized）に依存する複雑な状態遷移があり、テストカバレッジの漏れが発生しやすい。
- **リスク0 (低)**: ConsoleControl、ConsoleWindowの多数のno-op実装は機能的には単純だが、インターフェース準拠性の観点からテスト対象とした。
- **リスク1 (中)**: BgfxEngineの共有メモリ操作（PaintBackground, PaintBufferLine, EndPaint）はポインタ演算を含み、テスト環境での共有メモリのセットアップに注意が必要。

## 6) レビュアーチェックリスト（最小）
- [ ] ConIoSrvCommのALPC通信テストでモック境界が適切か確認
- [ ] HandleFocusEventの全DisplayMode x IsActive組み合わせが網羅されているか確認
- [ ] BgfxEngineの共有メモリ操作テストでバッファオーバーラン防止が考慮されているか確認
- [ ] ConsoleInputThreadProcOneCoreの各分岐パス（接続成功/失敗 x DisplayMode）が網羅されているか確認
- [ ] WindowMetricsのデフォルト値（80x25, 8x12）が仕様と一致しているか確認
- [ ] GetSettingsFromLinkのnullポインタ渡し（C-114）がテスト可能か、またはテスト不要か判断
