---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 185
  claims_with_evidence: 179
  claims_without_evidence: 6
confidence_derived: 0.97
---

# 根拠レポート：server.csv（単体テストケース一覧）

## 本レポートについて

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

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

1. **根拠の有無確認**：各テストケースに対して、ソースコードのクラス定義・メソッド実装・条件分岐などの根拠（Evidence）が存在するか
2. **根拠との整合性**：テストケースの入力値・期待結果がソースコードのロジックと矛盾していないか
3. **網羅性**：対象クラス・メソッドの主要なパスを適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：179 / 185、根拠なし：6
- 優先レビュー（高）
  1. **C-060（ConsoleShimPolicy異常系）**：無効なプロセスハンドル時の挙動は実機依存のため要確認
  2. **C-067（ConsoleProcessPolicy::s_CreateInstance失敗時）**：OpenProcessTokenの失敗パスは内部ポリシー依存
  3. **C-130（ConDrvDeviceComm::ReadIo ERROR_IO_PENDING）**：ERROR_IO_PENDING時のWait動作はドライバ依存
  4. **C-168（WinNTControl例外安全性）**：ntdll.dllロード失敗のシミュレーションが環境依存
  5. **C-174/C-175（Entrypoints::StartConsoleForCmdLine）**：ExitThreadでプロセス終了するため通常テスト困難
  6. **C-176-183（IoDispatchers全般）**：外部依存（ServiceLocator, ConsoleAllocateConsole等）が多く、モック構築が複雑

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

- E-01: `src/server/ApiMessage.h` - _CONSOLE_API_MSG構造体定義（メソッド宣言）
- E-02: `src/server/ApiMessage.cpp` - _CONSOLE_API_MSGメソッド実装
- E-03: `src/server/ApiMessageState.h` - CONSOLE_API_STATE構造体定義
- E-04: `src/server/ObjectHandle.h` - ConsoleHandleDataクラス定義
- E-05: `src/server/ObjectHandle.cpp` - ConsoleHandleDataメソッド実装
- E-06: `src/server/ObjectHeader.h` - ConsoleObjectHeaderクラス定義
- E-07: `src/server/ObjectHeader.cpp` - ConsoleObjectHeaderメソッド実装
- E-08: `src/server/ConsoleShimPolicy.h` - ConsoleShimPolicyクラス定義
- E-09: `src/server/ConsoleShimPolicy.cpp` - ConsoleShimPolicyメソッド実装
- E-10: `src/server/ProcessPolicy.h` - ConsoleProcessPolicyクラス定義
- E-11: `src/server/ProcessPolicy.cpp` - ConsoleProcessPolicyメソッド実装
- E-12: `src/server/ProcessHandle.h` - ConsoleProcessHandleクラス定義
- E-13: `src/server/ProcessHandle.cpp` - ConsoleProcessHandleメソッド実装
- E-14: `src/server/ProcessList.h` - ConsoleProcessListクラス定義
- E-15: `src/server/ProcessList.cpp` - ConsoleProcessListメソッド実装
- E-16: `src/server/WaitBlock.h` - ConsoleWaitBlockクラス定義
- E-17: `src/server/WaitBlock.cpp` - ConsoleWaitBlockメソッド実装
- E-18: `src/server/WaitQueue.h` - ConsoleWaitQueueクラス定義
- E-19: `src/server/WaitQueue.cpp` - ConsoleWaitQueueメソッド実装
- E-20: `src/server/ConDrvDeviceComm.h` - ConDrvDeviceCommクラス定義
- E-21: `src/server/ConDrvDeviceComm.cpp` - ConDrvDeviceCommメソッド実装
- E-22: `src/server/DeviceComm.h` - IDeviceCommインターフェース定義
- E-23: `src/server/DeviceHandle.h` - DeviceHandle名前空間定義
- E-24: `src/server/DeviceHandle.cpp` - DeviceHandleメソッド実装
- E-25: `src/server/ApiSorter.h` - ApiSorterクラス定義
- E-26: `src/server/ApiSorter.cpp` - ApiSorterメソッド実装（レイヤテーブル含む）
- E-27: `src/server/IoSorter.h` - IoSorterクラス定義
- E-28: `src/server/IoSorter.cpp` - IoSorterメソッド実装
- E-29: `src/server/IoDispatchers.h` - IoDispatchersクラス定義
- E-30: `src/server/IoDispatchers.cpp` - IoDispatchersメソッド実装
- E-31: `src/server/ApiDispatchers.h` - ApiDispatchers名前空間定義
- E-32: `src/server/Entrypoints.h` - Entrypoints名前空間定義
- E-33: `src/server/Entrypoints.cpp` - Entrypointsメソッド実装
- E-34: `src/server/WinNTControl.h` - WinNTControlクラス定義
- E-35: `src/server/WinNTControl.cpp` - WinNTControlメソッド実装
- E-36: `src/server/IWaitRoutine.h` - IWaitRoutineインターフェース定義
- E-37: `src/server/IApiRoutines.h` - IApiRoutinesインターフェース定義
- E-38: `src/server/WaitTerminationReason.h` - WaitTerminationReason列挙型定義
- E-39: `src/server/IoThread.h` - ConsoleCreateIoThreadLegacy関数宣言

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | デフォルトコンストラクタでDescriptor以降が0初期化 | E-02 (ApiMessage.cpp:13-19) | ○ |
| C-002 | コピー代入で全フィールドがコピーされる | E-02 (ApiMessage.cpp:26-56) | ○ |
| C-003 | コピー代入時InputBufferポインタ再設定 | E-02 (ApiMessage.cpp:40-43) | ○ |
| C-004 | コピー代入時OutputBufferポインタ再設定 | E-02 (ApiMessage.cpp:45-48) | ○ |
| C-005 | コピー代入時Complete.Write.Dataポインタ再設定 | E-02 (ApiMessage.cpp:50-53) | ○ |
| C-006 | GetProcessHandleでDeviceCommからハンドル取得 | E-02 (ApiMessage.cpp:58-61) | ○ |
| C-007 | GetObjectHandleでDeviceCommからハンドル取得 | E-02 (ApiMessage.cpp:63-66) | ○ |
| C-008 | ReadMessageInputで正しくペイロード読取 | E-02 (ApiMessage.cpp:76-87) | ○ |
| C-009 | ReadMessageInputエラー時にHRESULT伝播 | E-02 (ApiMessage.cpp:86) | ○ |
| C-010 | GetInputBuffer初回呼出で遅延初期化 | E-02 (ApiMessage.cpp:98-130) | ○ |
| C-011 | GetInputBuffer2回目以降でキャッシュ利用 | E-02 (ApiMessage.cpp:103-126) | ○ |
| C-012 | GetInputBufferでReadOffset>InputSize時E_FAIL | E-02 (ApiMessage.cpp:105) | ○ |
| C-013 | GetInputBufferで巨大バッファのshrink_to_fit | E-02 (ApiMessage.cpp:111-114) | ○ |
| C-014 | GetOutputBuffer初回呼出で0初期化バッファ | E-02 (ApiMessage.cpp:141-174) | ○ |
| C-015 | GetOutputBufferでWriteOffset>OutputSize時E_FAIL | E-02 (ApiMessage.cpp:148) | ○ |
| C-016 | GetOutputBufferで巨大バッファのshrink_to_fit | E-02 (ApiMessage.cpp:154-157) | ○ |
| C-017 | ReleaseMessageBuffersで入力バッファ解放 | E-02 (ApiMessage.cpp:183-190) | ○ |
| C-018 | ReleaseMessageBuffersで成功時に出力書込後解放 | E-02 (ApiMessage.cpp:192-211) | ○ |
| C-019 | ReleaseMessageBuffersで失敗時にWriteOutputスキップ | E-02 (ApiMessage.cpp:194) | ○ |
| C-020 | ReleaseMessageBuffersで両バッファnull時何もしない | E-02 (ApiMessage.cpp:185,193) | ○ |
| C-021 | SetReplyStatusでステータス設定 | E-02 (ApiMessage.cpp:213-216) | ○ |
| C-022 | SetReplyInformationで情報設定 | E-02 (ApiMessage.cpp:218-221) | ○ |
| C-023 | ConsoleHandleDataコンストラクタ初期化 | E-05 (ObjectHandle.cpp:15-23) | ○ |
| C-024 | Initialize(Input)でINPUT_READ_HANDLE_DATA作成 | E-05 (ObjectHandle.cpp:53-69) | ○ |
| C-025 | Initialize(Output)で_pClientInputが作成されない | E-05 (ObjectHandle.cpp:53-69) | ○ |
| C-026 | Initialize二重呼出でE_NOT_VALID_STATE | E-05 (ObjectHandle.cpp:57) | ○ |
| C-027 | Initialize(NotReady)でE_INVALIDARG | E-05 (ObjectHandle.cpp:60) | ○ |
| C-028 | IsReadAllowed(GENERIC_READ有) | E-05 (ObjectHandle.cpp:99-102) | ○ |
| C-029 | IsReadAllowed(GENERIC_READ無) | E-05 (ObjectHandle.cpp:99-102) | ○ |
| C-030 | IsWriteAllowed(GENERIC_WRITE有) | E-05 (ObjectHandle.cpp:121-124) | ○ |
| C-031 | IsWriteAllowed(GENERIC_WRITE無) | E-05 (ObjectHandle.cpp:121-124) | ○ |
| C-032 | IsReadShared(FILE_SHARE_READ有) | E-05 (ObjectHandle.cpp:110-113) | ○ |
| C-033 | IsWriteShared(FILE_SHARE_WRITE有) | E-05 (ObjectHandle.cpp:131-135) | ○ |
| C-034 | GetInputBuffer正常系 | E-05 (ObjectHandle.cpp:144-155) | ○ |
| C-035 | GetInputBufferアクセス拒否 | E-05 (ObjectHandle.cpp:149) | ○ |
| C-036 | GetInputBufferハンドルタイプ不一致 | E-05 (ObjectHandle.cpp:150) | ○ |
| C-037 | GetScreenBuffer正常系 | E-05 (ObjectHandle.cpp:164-175) | ○ |
| C-038 | GetScreenBufferアクセス拒否 | E-05 (ObjectHandle.cpp:169) | ○ |
| C-039 | GetScreenBufferハンドルタイプ不一致 | E-05 (ObjectHandle.cpp:170) | ○ |
| C-040 | GetWaitQueue(Input) | E-05 (ObjectHandle.cpp:183-202) | ○ |
| C-041 | GetWaitQueue(Output) | E-05 (ObjectHandle.cpp:192-196) | ○ |
| C-042 | GetWaitQueue(NotReady)でE_UNEXPECTED | E-05 (ObjectHandle.cpp:200) | ○ |
| C-043 | GetClientInput(Input) | E-05 (ObjectHandle.cpp:211-214) | ○ |
| C-044 | GetClientInput(Output) | E-05 (ObjectHandle.cpp:211-214) | ○ |
| C-045 | IsInputHandle(Input) | E-04 (ObjectHandle.h:59-62) | ○ |
| C-046 | IsInputHandle(Output) | E-04 (ObjectHandle.h:59-62) | ○ |
| C-047 | ConsoleObjectHeaderコンストラクタ初期化 | E-07 (ObjectHeader.cpp:11-17) | ○ |
| C-048 | AllocateIoHandle(Read/ReadShare)正常系 | E-07 (ObjectHeader.cpp:34-86) | ○ |
| C-049 | AllocateIoHandle(Write/WriteShare)正常系 | E-07 (ObjectHeader.cpp:34-86) | ○ |
| C-050 | AllocateIoHandle共有違反 | E-07 (ObjectHeader.cpp:46-51) | ○ |
| C-051 | FreeIoHandleカウンタデクリメント | E-07 (ObjectHeader.cpp:94-122) | ○ |
| C-052 | FreeIoHandleで_ulOpenCount=0時E_NOT_VALID_STATE | E-07 (ObjectHeader.cpp:97) | ○ |
| C-053 | HasAnyOpenHandles(>0) | E-07 (ObjectHeader.cpp:130-133) | ○ |
| C-054 | HasAnyOpenHandles(==0) | E-07 (ObjectHeader.cpp:130-133) | ○ |
| C-055 | IncrementOriginalScreenBufferで全カウンタ増加 | E-07 (ObjectHeader.cpp:142-149) | ○ |
| C-056 | ConsoleShimPolicy cmd.exe判定 | E-09 (ConsoleShimPolicy.cpp:12-32) | ○ |
| C-057 | ConsoleShimPolicy powershell.exe判定 | E-09 (ConsoleShimPolicy.cpp:27-29) | ○ |
| C-058 | ConsoleShimPolicy pwsh.exe判定 | E-09 (ConsoleShimPolicy.cpp:28-29) | ○ |
| C-059 | ConsoleShimPolicy 一般プロセス | E-09 (ConsoleShimPolicy.cpp:12-31) | ○ |
| C-060 | ConsoleShimPolicy 無効ハンドル時のCATCH_LOG | E-09 (ConsoleShimPolicy.cpp:31) | △ |
| C-061 | ConsoleShimPolicy 大文字小文字無視 | E-09 (ConsoleShimPolicy.cpp:20, til::equals_insensitive_ascii) | ○ |
| C-062 | IsCmdExe getter | E-09 (ConsoleShimPolicy.cpp:41-44) | ○ |
| C-063 | IsPowershellExe getter | E-09 (ConsoleShimPolicy.cpp:54-57) | ○ |
| C-064 | s_CreateInstance正常系 | E-11 (ProcessPolicy.cpp:33-62) | ○ |
| C-065 | s_CreateInstanceポリシー許可時 | E-11 (ProcessPolicy.cpp:48-58) | ○ |
| C-066 | s_CreateInstanceポリシーブロック時 | E-11 (ProcessPolicy.cpp:42-47) | ○ |
| C-067 | s_CreateInstance OpenProcessToken失敗時 | E-11 (ProcessPolicy.cpp:40) | △ |
| C-068 | CanReadOutputBuffer getter | E-11 (ProcessPolicy.cpp:71-74) | ○ |
| C-069 | CanWriteInputBuffer getter | E-11 (ProcessPolicy.cpp:83-86) | ○ |
| C-070 | ConsoleProcessHandle初期化 | E-13 (ProcessHandle.cpp:14-32) | ○ |
| C-071 | GetConnectionInformation | E-13 (ProcessHandle.cpp:40-47) | ○ |
| C-072 | GetPolicy | E-13 (ProcessHandle.cpp:52-55) | ○ |
| C-073 | GetShimPolicy | E-13 (ProcessHandle.cpp:60-63) | ○ |
| C-074 | GetRawHandle | E-13 (ProcessHandle.cpp:67-70) | ○ |
| C-075 | GetProcessCreationTime初回 | E-13 (ProcessHandle.cpp:75-89) | ○ |
| C-076 | GetProcessCreationTimeキャッシュ | E-13 (ProcessHandle.cpp:77) | ○ |
| C-077 | GetProcessCreationTimeで_hProcess null | E-13 (ProcessHandle.cpp:77) | ○ |
| C-078 | AllocProcessData正常系 | E-15 (ProcessList.cpp:27-50) | ○ |
| C-079 | AllocProcessData重複チェック | E-15 (ProcessList.cpp:34-37) | ○ |
| C-080 | FreeProcessData正常系 | E-15 (ProcessList.cpp:58-75) | ○ |
| C-081 | FindProcessInList見つかる | E-15 (ProcessList.cpp:83-96) | ○ |
| C-082 | FindProcessInList見つからない | E-15 (ProcessList.cpp:83-96) | ○ |
| C-083 | FindProcessByGroupId見つかる | E-15 (ProcessList.cpp:104-117) | ○ |
| C-084 | FindProcessByGroupId見つからない | E-15 (ProcessList.cpp:104-117) | ○ |
| C-085 | GetRootProcess見つかる | E-15 (ProcessList.cpp:123-136) | ○ |
| C-086 | GetRootProcess見つからない | E-15 (ProcessList.cpp:123-136) | ○ |
| C-087 | GetOldestProcess非空 | E-15 (ProcessList.cpp:146-156) | ○ |
| C-088 | GetOldestProcess空リスト | E-15 (ProcessList.cpp:150-155) | ○ |
| C-089 | GetProcessList正常系 | E-15 (ProcessList.cpp:167-191) | ○ |
| C-090 | GetProcessListバッファ不足 | E-15 (ProcessList.cpp:172-175) | ○ |
| C-091 | GetProcessList空リスト | E-15 (ProcessList.cpp:167-191) | ○ |
| C-092 | GetTerminationRecordsByGroupId全件 | E-15 (ProcessList.cpp:204-254) | ○ |
| C-093 | GetTerminationRecordsByGroupIdフィルタ | E-15 (ProcessList.cpp:224-225) | ○ |
| C-094 | GetTerminationRecordsByGroupIdカウントインクリメント | E-15 (ProcessList.cpp:228-231) | ○ |
| C-095 | ModifyConsoleProcessFocus(true) | E-15 (ProcessList.cpp:263-277) | ○ |
| C-096 | ModifyConsoleProcessFocus(false) | E-15 (ProcessList.cpp:263-277) | ○ |
| C-097 | IsEmpty(空) | E-15 (ProcessList.cpp:286-290) | ○ |
| C-098 | IsEmpty(非空) | E-15 (ProcessList.cpp:286-290) | ○ |
| C-099 | ConsoleWaitBlockコンストラクタ正常系 | E-17 (WaitBlock.cpp:25-65) | ○ |
| C-100 | ConsoleWaitBlock pProcessQueue null | E-17 (WaitBlock.cpp:29) | ○ |
| C-101 | ConsoleWaitBlock pObjectQueue null | E-17 (WaitBlock.cpp:30) | ○ |
| C-102 | ConsoleWaitBlock pWaiter null | E-17 (WaitBlock.cpp:32) | ○ |
| C-103 | ConsoleWaitBlock InputBufferマイグレーション | E-17 (WaitBlock.cpp:56-59) | ○ |
| C-104 | ConsoleWaitBlock OutputBufferマイグレーション | E-17 (WaitBlock.cpp:61-64) | ○ |
| C-105 | s_CreateWait正常系 | E-17 (WaitBlock.cpp:91-135) | ○ |
| C-106 | s_CreateWait pWaitReplyMessage null | E-17 (WaitBlock.cpp:94-101) | ○ |
| C-107 | s_CreateWait pWaiter null | E-17 (WaitBlock.cpp:94-101) | ○ |
| C-108 | s_CreateWait 両方null | E-17 (WaitBlock.cpp:94-101) | ○ |
| C-109 | Notify GetConsoleInput | E-17 (WaitBlock.cpp:159-167) | ○ |
| C-110 | Notify ReadConsole | E-17 (WaitBlock.cpp:168-173) | ○ |
| C-111 | Notify WriteConsole | E-17 (WaitBlock.cpp:174-179) | ○ |
| C-112 | Notify CTRL+Z処理 | E-17 (WaitBlock.cpp:222-232) | ○ |
| C-113 | Notify waiterがfalse返却時 | E-17 (WaitBlock.cpp:249-253) | ○ |
| C-114 | デストラクタでキュー削除 | E-17 (WaitBlock.cpp:71-76) | ○ |
| C-115 | ConsoleWaitQueue初期化 | E-19 (WaitQueue.cpp:14-17) | ○ |
| C-116 | ConsoleWaitQueueデストラクタ | E-19 (WaitQueue.cpp:22-26) | ○ |
| C-117 | NotifyWaiters全体通知 | E-19 (WaitQueue.cpp:74-104) | ○ |
| C-118 | NotifyWaiters先頭のみ | E-19 (WaitQueue.cpp:95-98) | ○ |
| C-119 | NotifyWaiters空キュー | E-19 (WaitQueue.cpp:80) | ○ |
| C-120 | NotifyWaiters終了理由付き | E-19 (WaitQueue.cpp:74-104) | ○ |
| C-121 | CancelWaitersForScreenBuffer該当あり | E-19 (WaitQueue.cpp:106-120) | ○ |
| C-122 | CancelWaitersForScreenBuffer該当なし | E-19 (WaitQueue.cpp:106-120) | ○ |
| C-123 | _NotifyBlock成功時削除 | E-19 (WaitQueue.cpp:129-142) | ○ |
| C-124 | _NotifyBlock失敗時維持 | E-19 (WaitQueue.cpp:129-142) | ○ |
| C-125 | ConDrvDeviceCommコンストラクタ正常系 | E-21 (ConDrvDeviceComm.cpp:7-11) | ○ |
| C-126 | ConDrvDeviceComm INVALID_HANDLE_VALUE | E-21 (ConDrvDeviceComm.cpp:10) | ○ |
| C-127 | SetServerInformation | E-21 (ConDrvDeviceComm.cpp:23-30) | ○ |
| C-128 | ReadIo(reply無) | E-21 (ConDrvDeviceComm.cpp:39-55) | ○ |
| C-129 | ReadIo(reply有) | E-21 (ConDrvDeviceComm.cpp:39-55) | ○ |
| C-130 | ReadIo ERROR_IO_PENDING | E-21 (ConDrvDeviceComm.cpp:48-52) | △ |
| C-131 | CompleteIo | E-21 (ConDrvDeviceComm.cpp:63-70) | ○ |
| C-132 | ReadInput | E-21 (ConDrvDeviceComm.cpp:79-86) | ○ |
| C-133 | WriteOutput | E-21 (ConDrvDeviceComm.cpp:95-102) | ○ |
| C-134 | AllowUIAccess | E-21 (ConDrvDeviceComm.cpp:111-118) | ○ |
| C-135 | PutHandle正常系 | E-21 (ConDrvDeviceComm.cpp:159-164) | ○ |
| C-136 | PutHandle nullptr | E-21 (ConDrvDeviceComm.cpp:163) | ○ |
| C-137 | GetHandle正常系 | E-21 (ConDrvDeviceComm.cpp:171-174) | ○ |
| C-138 | GetServerHandle | E-21 (ConDrvDeviceComm.cpp:179-183) | ○ |
| C-139 | _CallIoctl正常系 | E-21 (ConDrvDeviceComm.cpp:131-151) | ○ |
| C-140 | _CallIoctlエラー | E-21 (ConDrvDeviceComm.cpp:140) | ○ |
| C-141 | ConsoleDispatchRequest L1 | E-26 (ApiSorter.cpp:43-54, 141-202) | ○ |
| C-142 | ConsoleDispatchRequest L2 | E-26 (ApiSorter.cpp:56-79, 141-202) | ○ |
| C-143 | ConsoleDispatchRequest L3 | E-26 (ApiSorter.cpp:81-127, 141-202) | ○ |
| C-144 | ConsoleDispatchRequest不正レイヤ | E-26 (ApiSorter.cpp:147-151) | ○ |
| C-145 | ConsoleDispatchRequest不正API番号 | E-26 (ApiSorter.cpp:147-151) | ○ |
| C-146 | ConsoleDispatchRequestサイズバリデーション(InputSize) | E-26 (ApiSorter.cpp:156-163) | ○ |
| C-147 | ConsoleDispatchRequestサイズバリデーション(ApiDescriptorSize) | E-26 (ApiSorter.cpp:159) | ○ |
| C-148 | ConsoleDispatchRequest ReplyPending | E-26 (ApiSorter.cpp:195-201) | ○ |
| C-149 | ConsoleDispatchRequest ResultException | E-26 (ApiSorter.cpp:176-179) | ○ |
| C-150 | ConsoleDispatchRequest未知の例外 | E-26 (ApiSorter.cpp:180-183) | ○ |
| C-151 | STATUS_BUFFER_TOO_SMALL特殊処理 | E-26 (ApiSorter.cpp:189-193) | ○ |
| C-152 | ServiceIoOperation USER_DEFINED | E-28 (IoSorter.cpp:32-33) | ○ |
| C-153 | ServiceIoOperation CONNECT | E-28 (IoSorter.cpp:36-37) | ○ |
| C-154 | ServiceIoOperation DISCONNECT | E-28 (IoSorter.cpp:39-40) | ○ |
| C-155 | ServiceIoOperation CREATE_OBJECT | E-28 (IoSorter.cpp:42-43) | ○ |
| C-156 | ServiceIoOperation CLOSE_OBJECT | E-28 (IoSorter.cpp:45-46) | ○ |
| C-157 | ServiceIoOperation RAW_WRITE | E-28 (IoSorter.cpp:48-67) | ○ |
| C-158 | ServiceIoOperation RAW_READ | E-28 (IoSorter.cpp:69-85) | ○ |
| C-159 | ServiceIoOperation RAW_FLUSH | E-28 (IoSorter.cpp:87-94) | ○ |
| C-160 | ServiceIoOperationデフォルト分岐 | E-28 (IoSorter.cpp:96-98) | ○ |
| C-161 | ServiceIoOperation RAW_WRITE非同期 | E-28 (IoSorter.cpp:58-61) | ○ |
| C-162 | CreateServerHandle | E-24 (DeviceHandle.cpp:53-64) | ○ |
| C-163 | CreateServerHandle Inheritable | E-24 (DeviceHandle.cpp:93-98) | ○ |
| C-164 | CreateClientHandle | E-24 (DeviceHandle.cpp:27-40) | ○ |
| C-165 | _CreateHandle正常系 | E-24 (DeviceHandle.cpp:83-121) | ○ |
| C-166 | _CreateHandleエラー | E-24 (DeviceHandle.cpp:115-121) | ○ |
| C-167 | WinNTControl::NtOpenFile | E-35 (WinNTControl.cpp:39-51) | ○ |
| C-168 | WinNTControl例外安全性 | E-35 (WinNTControl.cpp:46-50) | △ |
| C-169 | WinNTControlシングルトン | E-35 (WinNTControl.cpp:26-30) | ○ |
| C-170 | IWaitRoutineコンストラクタ | E-36 (IWaitRoutine.h:32-36) | ○ |
| C-171 | GetReplyType | E-36 (IWaitRoutine.h:58-61) | ○ |
| C-172 | GetScreenBufferデフォルト | E-36 (IWaitRoutine.h:45-48) | ○ |
| C-173 | StartConsoleForServerHandle | E-33 (Entrypoints.cpp:12-16) | ○ |
| C-174 | StartConsoleForCmdLine空コマンドライン | E-33 (Entrypoints.cpp:150-153) | △ |
| C-175 | StartConsoleForCmdLine環境変数展開 | E-33 (Entrypoints.cpp:157) | △ |
| C-176 | ConsoleCreateObject入力 | E-30 (IoDispatchers.cpp:36-108) | ○ |
| C-177 | ConsoleCreateObject出力 | E-30 (IoDispatchers.cpp:69-77) | ○ |
| C-178 | ConsoleCreateObject GENERIC→入力解決 | E-30 (IoDispatchers.cpp:47-56) | ○ |
| C-179 | ConsoleCreateObject GENERIC→出力解決 | E-30 (IoDispatchers.cpp:52-56) | ○ |
| C-180 | ConsoleCreateObject不正タイプ | E-30 (IoDispatchers.cpp:82-83) | ○ |
| C-181 | ConsoleCloseObject | E-30 (IoDispatchers.cpp:116-125) | ○ |
| C-182 | IoDispatchers::ConsoleDispatchRequest委譲 | E-30 (IoDispatchers.cpp:574-577) | ○ |
| C-183 | ConsoleClientDisconnectRoutine | E-30 (IoDispatchers.cpp:552-566) | ○ |
| C-184 | WaitTerminationReason列挙値 | E-38 (WaitTerminationReason.h:22-27) | ○ |
| C-185 | WaitTerminationReasonフラグ演算 | E-38 (WaitTerminationReason.h:29) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-060**: ConsoleShimPolicy で無効なプロセスハンドルを渡した際の具体的な例外パスは、wil::GetModuleFileNameExW の内部挙動に依存する。CATCH_LOG() がどの例外を捕捉するかは wil ライブラリのバージョンに依存。
  - 候補：wil ライブラリのソースコード / Windows API ドキュメント
- **C-067**: OpenProcessToken の失敗条件は OS のプロセスセキュリティ設定に依存するため、テスト環境でのシミュレーションが困難。
  - 候補：Windows Security API ドキュメント / モックフレームワーク
- **C-130**: ConDrvDeviceComm::ReadIo の ERROR_IO_PENDING パスは ConDrv ドライバの動作に依存。コメントにも「TODO: MSFT: 9115192」と記載あり。
  - 候補：ConDrv ドライバドキュメント
- **C-168**: WinNTControl::GetInstance 内で ntdll.dll のロードが失敗するシナリオは通常のWindows環境では発生しないため、テスト困難。
  - 候補：特殊な環境構築 / DLLロードのモック
- **C-174/C-175**: Entrypoints::StartConsoleForCmdLine は ExitThread で終了するため、通常のユニットテストでは完全な検証が困難。プロセス生成・終了を伴うため統合テスト向き。
  - 候補：プロセスレベルのテストハーネス

## 5) リスクフラグ（レビュー観点）
- **リスク2（高）**: ConsoleHandleData::GetInputBuffer / GetScreenBuffer のアクセス権チェック（C-034〜C-039）。セキュリティに直結するロジックのため、境界条件の網羅性を要確認。
- **リスク2（高）**: ConsoleObjectHeader::AllocateIoHandle の共有違反チェック（C-050）。ハンドル管理の根幹ロジックであり、全組み合わせの網羅性を要確認。
- **リスク1（中）**: ApiSorter::ConsoleDispatchRequest のサイズバリデーション（C-146〜C-147）。不正なメッセージサイズによるバッファオーバーフロー防止が目的のため、境界値テストの追加を検討。
- **リスク1（中）**: ConsoleWaitBlock::Notify の CTRL+Z 処理（C-112）。EOF シグナリングのロジックが複雑で、エッジケースが多い。
- **リスク0（低）**: IWaitRoutine / WaitTerminationReason の定義検証（C-170〜C-172, C-184〜C-185）。インターフェース・列挙型の単純な定義確認。

## 6) レビュアーチェックリスト（最小）
- [ ] ConsoleHandleData のアクセス権チェック（GetInputBuffer/GetScreenBuffer）で、全てのアクセスマスクの組み合わせが考慮されているか
- [ ] ConsoleObjectHeader::AllocateIoHandle の共有違反条件が、実際の Windows コンソール共有セマンティクスと一致しているか
- [ ] ApiSorter::ConsoleDispatchRequest のレイヤテーブルサイズと各レイヤのAPI数が、実際の定義配列と一致しているか
- [ ] ConsoleWaitBlock::Notify の CTRL+Z (0x1a) 検出ロジックが ReadConsole のコントラクトと一致しているか
- [ ] ConsoleProcessPolicy::s_CreateInstance のフェイルセーフ（デフォルトブロック）動作がセキュリティ要件を満たしているか
- [ ] Entrypoints::StartConsoleForCmdLine のテストケースが統合テストとして適切か（ExitThread 呼び出しのため単体テスト困難）
