@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/windows-io-internals-architecture-irp/#article>
    schema:about <https://comcomponent.com/knowledge/io-manager/>, <https://comcomponent.com/knowledge/irp/> ;
    schema:mentions <https://comcomponent.com/knowledge/object-manager/>, <https://comcomponent.com/knowledge/device-stack/>, <https://comcomponent.com/knowledge/dispatch-routine/>, <https://comcomponent.com/knowledge/irp-major-function/>, <https://comcomponent.com/knowledge/fast-io/>, <https://comcomponent.com/knowledge/kernel-mode/>, <https://comcomponent.com/knowledge/winobj/>, <https://comcomponent.com/knowledge/dos-device-symlink/>, <https://comcomponent.com/knowledge/device-object/>, <https://comcomponent.com/knowledge/network-redirector/>, <https://comcomponent.com/knowledge/createfile/>, <https://comcomponent.com/knowledge/file-object/>, <https://comcomponent.com/knowledge/file-handle/>, <https://comcomponent.com/knowledge/user-mode/>, <https://comcomponent.com/knowledge/driver-object/>, <https://comcomponent.com/knowledge/ntfs/>, <https://comcomponent.com/knowledge/io-stack-location/>, <https://comcomponent.com/knowledge/filter-driver/>, <https://comcomponent.com/knowledge/procmon/>, <https://comcomponent.com/knowledge/cache-manager/>, <https://comcomponent.com/knowledge/synchronous-io/>, <https://comcomponent.com/knowledge/closehandle/>, <https://comcomponent.com/knowledge/irp-mj-cleanup/>, <https://comcomponent.com/knowledge/handle-leak/>, <https://comcomponent.com/knowledge/irp-mj-close/>, <https://comcomponent.com/knowledge/asynchronous-io/> .

<https://comcomponent.com/knowledge/io-manager/> a skos:Concept ;
    skos:prefLabel "I/Oマネージャー"@ja ;
    skos:definition "Windowsカーネルモードで、アプリケーションとデバイスドライバーの間のI/O要求を統括するコンポーネント。要求のほとんどをIRPに詰めてデバイススタックへ流す。"@ja ;
    skos:altLabel "I/O Manager" ;
    skos:altLabel "IOマネージャー"@ja ;
    ks:uses <https://comcomponent.com/knowledge/irp/> ;
    ks:uses <https://comcomponent.com/knowledge/object-manager/> ;
    ks:uses <https://comcomponent.com/knowledge/device-stack/> ;
    ks:uses <https://comcomponent.com/knowledge/dispatch-routine/> ;
    ks:uses <https://comcomponent.com/knowledge/irp-major-function/> ;
    ks:uses <https://comcomponent.com/knowledge/fast-io/> ;
    ks:requires <https://comcomponent.com/knowledge/kernel-mode/> .

<https://comcomponent.com/knowledge/irp/> a skos:Concept ;
    skos:prefLabel "IRP(I/O要求パケット)"@ja ;
    skos:definition "デバイスドライバーに送られる要求のほとんどが詰め込まれるパケット。要求全体のヘッダーと、経由するドライバーの数だけ並ぶI/Oスタックロケーションを持つ。"@ja ;
    skos:altLabel "I/O Request Packet" ;
    skos:altLabel "IRP" ;
    ks:uses <https://comcomponent.com/knowledge/io-stack-location/> ;
    ks:requires <https://comcomponent.com/knowledge/device-stack/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/procmon/> .

<https://comcomponent.com/knowledge/object-manager/> a skos:Concept ;
    skos:prefLabel "オブジェクトマネージャー"@ja ;
    skos:definition "デバイス・イベント・共有メモリセクションなどをすべて「オブジェクト」として単一の階層的な名前空間で管理するWindowsカーネルのコンポーネント。CreateFileの名前解決はここから始まる。"@ja ;
    skos:altLabel "Object Manager" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/winobj/> .

<https://comcomponent.com/knowledge/device-stack/> a skos:Concept ;
    skos:prefLabel "デバイススタック"@ja ;
    skos:definition "積み重なった複数のデバイスオブジェクトの列。IRPはスタック最上位のデバイスオブジェクトへ送られ、各層で処理または下位への転送が行われる。"@ja ;
    skos:altLabel "Device Stack" ;
    ks:uses <https://comcomponent.com/knowledge/device-object/> .

<https://comcomponent.com/knowledge/dispatch-routine/> a skos:Concept ;
    skos:prefLabel "ディスパッチルーチン"@ja ;
    skos:definition "ドライバーオブジェクトのMajorFunction配列に登録された、特定のメジャーファンクションコード(IRP_MJ_READなど)に対応するIRP処理関数。"@ja ;
    skos:altLabel "Dispatch Routine" ;
    ks:requires <https://comcomponent.com/knowledge/irp-major-function/> .

<https://comcomponent.com/knowledge/irp-major-function/> a skos:Concept ;
    skos:prefLabel "メジャーファンクションコード"@ja ;
    skos:definition "IRPが表す要求の種類を示すコード。IRP_MJ_CREATE(開く)、IRP_MJ_READ(読む)、IRP_MJ_WRITE(書く)、IRP_MJ_CLEANUP、IRP_MJ_CLOSEなど全28種類がある。"@ja ;
    skos:altLabel "IRP_MJ_XXX" ;
    skos:altLabel "Major Function Code" .

<https://comcomponent.com/knowledge/fast-io/> a skos:Concept ;
    skos:prefLabel "ファストI/O"@ja ;
    skos:definition "キャッシュに載っているファイルへの同期I/Oのために、IRPを組み立てずキャッシュマネージャーと直接データをやり取りする高速経路。処理できない場合は通常のIRP経路に折り返す。"@ja ;
    skos:altLabel "Fast I/O" ;
    ks:verifiedBy <https://comcomponent.com/knowledge/procmon/> ;
    ks:requires <https://comcomponent.com/knowledge/cache-manager/> ;
    ks:requires <https://comcomponent.com/knowledge/synchronous-io/> ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/asynchronous-io/> .

<https://comcomponent.com/knowledge/kernel-mode/> a skos:Concept ;
    skos:prefLabel "カーネルモード"@ja ;
    skos:definition "プロセッサがハードウェアと全メモリへ制限なくアクセスできる実行モード。OS中核部分やデバイスドライバーはここで動作し、単一の仮想アドレス空間を全コードが共有する。"@ja ;
    skos:altLabel "Kernel Mode" .

<https://comcomponent.com/knowledge/winobj/> a skos:Concept ;
    skos:prefLabel "WinObj"@ja ;
    skos:definition "オブジェクトマネージャーの名前空間をツリー表示で閲覧できるSysinternalsのツール。デバイスオブジェクトの実名やシンボリックリンクを確認できる。"@ja ;
    skos:altLabel "WinObj (Sysinternals)" .

<https://comcomponent.com/knowledge/dos-device-symlink/> a skos:Concept ;
    skos:prefLabel "MS-DOSデバイス名のシンボリックリンク"@ja ;
    skos:definition "MS-DOSデバイス名(ドライブレターやCOMポート名など)からNTデバイス名への、オブジェクトマネージャー名前空間内のリンク。ドライバーがIoCreateSymbolicLinkで作る。NTFSのファイルシステムレベルのシンボリックリンク(リパースポイント)とは別の、カーネルオブジェクト名前空間の仕組み。"@ja ;
    skos:altLabel "MS-DOSデバイス名"@ja ;
    skos:altLabel "\\DosDevices" ;
    skos:altLabel "\\GLOBAL??" ;
    ks:storedIn <https://comcomponent.com/knowledge/object-manager/> ;
    ks:requires <https://comcomponent.com/knowledge/device-object/> .

<https://comcomponent.com/knowledge/device-object/> a skos:Concept ;
    skos:prefLabel "デバイスオブジェクト"@ja ;
    skos:definition "ドライバーが自分の管理するデバイスごとに作る、I/O要求の宛先となるカーネルオブジェクト。物理デバイスとは限らず、ボリュームやフィルターのための仮想的な存在もある。"@ja ;
    skos:altLabel "DEVICE_OBJECT" ;
    ks:storedIn <https://comcomponent.com/knowledge/object-manager/> ;
    ks:requires <https://comcomponent.com/knowledge/driver-object/> .

<https://comcomponent.com/knowledge/createfile/> a skos:Concept ;
    skos:prefLabel "CreateFile"@ja ;
    skos:definition "ファイルだけでなく物理ディスク・ボリューム・COMポート・パイプなどのデバイスも、名前解決を通じて共通に開けるWin32 API。開いた対象ごとにファイルオブジェクトが作られる。"@ja ;
    skos:altLabel "CreateFileW" ;
    skos:altLabel "CreateFileA" ;
    ks:requires <https://comcomponent.com/knowledge/object-manager/> ;
    ks:uses <https://comcomponent.com/knowledge/file-object/> .

<https://comcomponent.com/knowledge/network-redirector/> a skos:Concept ;
    skos:prefLabel "ネットワークリダイレクター"@ja ;
    skos:definition "\\Device\\Mupという単一のデバイスオブジェクトとして名前空間に存在し、UNCパス(\\\\server\\share)の要求をネットワーク越しに運ぶコンポーネント。"@ja ;
    skos:altLabel "\\Device\\Mup" ;
    skos:altLabel "SMBクライアント"@ja ;
    skos:broader <https://comcomponent.com/knowledge/device-object/> ;
    ks:requires <https://comcomponent.com/knowledge/device-object/> .

<https://comcomponent.com/knowledge/file-object/> a skos:Concept ;
    skos:prefLabel "ファイルオブジェクト"@ja ;
    skos:definition "CreateFileなどでファイル(またはデバイス)を開くたびにカーネルが作る、開いた1回ぶんのセッション状態を表すオブジェクト。現在のバイトオフセットや共有モードを保持する。"@ja ;
    skos:altLabel "FILE_OBJECT" ;
    ks:requires <https://comcomponent.com/knowledge/device-object/> ;
    ks:requires <https://comcomponent.com/knowledge/kernel-mode/> .

<https://comcomponent.com/knowledge/file-handle/> a skos:Concept ;
    skos:prefLabel "ファイルハンドル"@ja ;
    skos:definition "プロセスのハンドルテーブルを経由した、ファイルオブジェクトへの参照。CreateFileが返し、ユーザーモードのプロセスがI/O操作の対象を指定するのに使う値。"@ja ;
    skos:altLabel "HANDLE" ;
    skos:altLabel "SafeFileHandle" ;
    ks:requires <https://comcomponent.com/knowledge/file-object/> ;
    ks:requires <https://comcomponent.com/knowledge/user-mode/> .

<https://comcomponent.com/knowledge/user-mode/> a skos:Concept ;
    skos:prefLabel "ユーザーモード"@ja ;
    skos:definition "アプリケーションが動作する実行モード。プロセスごとに私有の仮想アドレス空間とハンドルテーブルを持ち、他のアプリケーションやカーネルメモリを直接操作できない。"@ja ;
    skos:altLabel "User Mode" .

<https://comcomponent.com/knowledge/driver-object/> a skos:Concept ;
    skos:prefLabel "ドライバーオブジェクト"@ja ;
    skos:definition "ドライバーのロード時にI/Oマネージャーが作るオブジェクト。要求の種類ごとの処理関数(ディスパッチルーチン)への対応表であるMajorFunction配列を持つ。"@ja ;
    skos:altLabel "DRIVER_OBJECT" ;
    ks:uses <https://comcomponent.com/knowledge/dispatch-routine/> ;
    ks:requires <https://comcomponent.com/knowledge/kernel-mode/> .

<https://comcomponent.com/knowledge/ntfs/> a skos:Concept ;
    skos:prefLabel "NTFS"@ja ;
    skos:definition "現行のWindowsが標準で使うファイルシステム。MFT(マスターファイルテーブル)などの構造でボリューム上のファイルを管理する。"@ja ;
    skos:altLabel "New Technology File System" ;
    ks:requires <https://comcomponent.com/knowledge/device-object/> .

<https://comcomponent.com/knowledge/io-stack-location/> a skos:Concept ;
    skos:prefLabel "I/Oスタックロケーション"@ja ;
    skos:definition "IRP内に、経由予定のドライバーの数だけ用意される領域。各ドライバー用のメジャー/マイナーファンクションコードとパラメーターを保持する。"@ja ;
    skos:altLabel "IO_STACK_LOCATION" ;
    ks:uses <https://comcomponent.com/knowledge/irp-major-function/> .

<https://comcomponent.com/knowledge/filter-driver/> a skos:Concept ;
    skos:prefLabel "フィルタードライバー"@ja ;
    skos:definition "デバイススタックに割り込むためのデバイスオブジェクトを挟み込み、通過するI/O要求を検査・加工するドライバー。ウイルス対策ソフトやProcess Monitorもこの位置に立つ。"@ja ;
    skos:altLabel "Filter Driver" ;
    skos:broader <https://comcomponent.com/knowledge/driver-object/> ;
    ks:uses <https://comcomponent.com/knowledge/device-object/> .

<https://comcomponent.com/knowledge/procmon/> a skos:Concept ;
    skos:prefLabel "Process Monitor(procmon.exe)"@ja ;
    skos:definition "ファイルI/O・レジストリ・プロセス/スレッド活動をリアルタイムに監視できるSysinternalsのツール。Advanced Outputを有効にすると、IRPやファストI/Oのカーネル側の語彙で操作を表示する。"@ja ;
    skos:altLabel "Procmon" ;
    skos:altLabel "Process Monitor" .

<https://comcomponent.com/knowledge/cache-manager/> a skos:Concept ;
    skos:prefLabel "キャッシュマネージャー"@ja ;
    skos:definition "ファイルデータをメモリ上のシステムキャッシュに保持し、読み書きの多くをディスクI/Oなしで処理させるWindowsカーネルのコンポーネント。ファストI/Oの近道もこのキャッシュを直接利用する。"@ja ;
    skos:altLabel "Cache Manager" .

<https://comcomponent.com/knowledge/synchronous-io/> a skos:Concept ;
    skos:prefLabel "同期I/O"@ja ;
    skos:definition "I/O要求の完了まで呼び出しが戻らないI/Oの形態。実体は「完了する前には戻らない」という保証であり、要求がペンディングになったときだけスレッドが待機状態になる。"@ja ;
    skos:altLabel "Synchronous I/O" .

<https://comcomponent.com/knowledge/asynchronous-io/> a skos:Concept ;
    skos:prefLabel "非同期I/O"@ja ;
    skos:definition "要求を発行した呼び出しがI/Oの完了を待たずにすぐ戻り、完了を別途の通知(イベント・APC・I/O完了ポートなど)で受け取るI/Oの形態。"@ja ;
    skos:altLabel "Asynchronous I/O" ;
    skos:altLabel "オーバーラップI/O"@ja .

<https://comcomponent.com/knowledge/closehandle/> a skos:Concept ;
    skos:prefLabel "CloseHandle"@ja ;
    skos:definition "プロセスのハンドルテーブルからエントリを1つ削除するWin32 API。「ファイルを閉じる」ことそのものではない。"@ja ;
    skos:altLabel "CloseHandle API" ;
    ks:mayCause <https://comcomponent.com/knowledge/irp-mj-cleanup/> ;
    ks:mitigates <https://comcomponent.com/knowledge/handle-leak/> .

<https://comcomponent.com/knowledge/irp-mj-cleanup/> a skos:Concept ;
    skos:prefLabel "IRP_MJ_CLEANUP"@ja ;
    skos:definition "あるファイルオブジェクトの最後のハンドルが閉じられたことを示すIRP。未完了I/Oの取り消しやロック解放を行うが、ファイルオブジェクト自体が即座に解放されるとは限らない。"@ja ;
    skos:altLabel "cleanup" ;
    skos:broader <https://comcomponent.com/knowledge/irp-major-function/> .

<https://comcomponent.com/knowledge/irp-mj-close/> a skos:Concept ;
    skos:prefLabel "IRP_MJ_CLOSE"@ja ;
    skos:definition "ファイルオブジェクトの参照カウントが0になり、ファイルオブジェクトが解放されようとしていることを示すIRP。cleanupの後に送られるが、未処理I/Oの完了を待つため即座に続くとは限らない。"@ja ;
    skos:altLabel "close" ;
    skos:broader <https://comcomponent.com/knowledge/irp-major-function/> .

<https://comcomponent.com/knowledge/handle-leak/> a skos:Concept ;
    skos:prefLabel "ハンドルリーク"@ja ;
    skos:definition "参照され続けて解放できないファイルオブジェクト(とその先のリソース)が積み上がっていく状態。ハンドルカウントや参照カウントの数え違いが原因になる。"@ja ;
    skos:altLabel "Handle Leak" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/io-manager/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/irp/> ;
    schema:description "アプリからの要求(開く・読む・書く…)をIRPというパケットに詰めてドライバーに渡す。デバイスドライバーへの要求のほとんどはこの形式になる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/windows-kernel-mode-i-o-manager>, <https://learn.microsoft.com/windows-hardware/drivers/gettingstarted/i-o-request-packets> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/io-manager/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/object-manager/> ;
    schema:description "CreateFileに渡された名前の解決は、オブジェクトマネージャーが管理する単一の名前空間で行われる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/fileio/naming-a-file>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/windows-kernel-mode-object-manager> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/io-manager/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/device-stack/> ;
    schema:description "組み立てたIRPは、まずデバイススタックの最上位のデバイスオブジェクトへ送られる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/gettingstarted/i-o-request-packets>, <https://learn.microsoft.com/windows-hardware/drivers/gettingstarted/device-nodes-and-device-stacks> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/io-manager/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dispatch-routine/> ;
    schema:description "IRPを処理させるとき、宛先ドライバーのMajorFunction配列から対応するディスパッチルーチンを呼び出す"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/writing-dispatch-routines>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/introduction-to-driver-objects> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/io-manager/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/irp-major-function/> ;
    schema:description "要求の種類(開く・読む・書く・クリーンアップ…)をメジャーファンクションコードで表す"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/irp-major-function-codes> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/io-manager/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/fast-io/> ;
    schema:description "同期のファイルI/O要求を受け取ると、IRPを組み立てる前にまずファストI/Oルーチンを試し、処理できなければIRPを作る"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/ifs/irps-are-different-from-fast-i-o> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/io-manager/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/kernel-mode/> ;
    schema:description "I/OマネージャーはOS中核部分としてカーネルモードで動作する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/windows-kernel-mode-i-o-manager>, <https://learn.microsoft.com/windows-hardware/drivers/gettingstarted/user-mode-and-kernel-mode> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/object-manager/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/winobj/> ;
    schema:description "WinObjを使うとオブジェクトマネージャーの名前空間をそのまま覗け、デバイスオブジェクトの実名やシンボリックリンクを確認できる"@ja ;
    ks:evidence <https://learn.microsoft.com/sysinternals/downloads/winobj>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/windows-kernel-mode-object-manager> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dos-device-symlink/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/object-manager/> ;
    schema:description "MS-DOSデバイス名からNTデバイス名へのシンボリックリンクは、オブジェクトマネージャーの名前空間(\\GLOBAL??など)に登録される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/introduction-to-ms-dos-device-names>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/object-names> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/device-object/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/object-manager/> ;
    schema:description "ドライバーが作るデバイスオブジェクトは\\Device配下の名前空間に登録される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/introduction-to-device-objects>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/windows-kernel-mode-object-manager> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dos-device-symlink/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/device-object/> ;
    schema:description "シンボリックリンクの解決先は最終的にデバイスオブジェクトである(例: C: → \\Device\\HarddiskVolume3)"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/introduction-to-ms-dos-device-names> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/createfile/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/object-manager/> ;
    schema:description "CreateFileの名前解決は、オブジェクトマネージャーが管理する名前空間の検索から始まる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/fileio/naming-a-file>, <https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilew> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/createfile/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dos-device-symlink/> ;
    schema:description "ドライブレターやCOMポート名を渡した場合、名前空間内のシンボリックリンクをたどってNTデバイス名に置き換えられる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/introduction-to-ms-dos-device-names>, <https://learn.microsoft.com/windows/win32/fileio/naming-a-file> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/createfile/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/network-redirector/> ;
    schema:description "UNCパス(\\\\server\\share)は\\Device\\Mupに解決され、その先はネットワークリダイレクターが要求を運ぶ"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/fileio/naming-a-file> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/createfile/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/file-object/> ;
    schema:description "CreateFileが成功するたびに、開いた1回ぶんの状態を表すファイルオブジェクトが1つ作られる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/using-files-in-a-driver> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/file-object/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/device-object/> ;
    schema:description "ファイルオブジェクトは、開いた対象(ファイルまたはデバイス)を管理するデバイスオブジェクトと結び付いている"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/using-files-in-a-driver>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/introduction-to-device-objects> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/file-object/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/kernel-mode/> ;
    schema:description "ファイルオブジェクトはカーネル内に存在し、ユーザーモードのプロセスから直接操作されることはない"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/using-files-in-a-driver> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/file-handle/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/file-object/> ;
    schema:description "ファイルハンドルは、プロセスのハンドルテーブルを経由したファイルオブジェクトへの参照である"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/fileio/file-handles> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/file-handle/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/user-mode/> ;
    schema:description "HANDLEはユーザーモードのプロセスがハンドルテーブルを通じて保持する値である"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/fileio/file-handles>, <https://learn.microsoft.com/windows-hardware/drivers/gettingstarted/user-mode-and-kernel-mode> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/driver-object/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dispatch-routine/> ;
    schema:description "ドライバーオブジェクトのMajorFunction配列は、メジャーファンクションコードごとのディスパッチルーチンへの対応表である"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/introduction-to-driver-objects>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/writing-dispatch-routines> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/driver-object/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/kernel-mode/> ;
    schema:description "ドライバーオブジェクトとその処理関数はカーネルモードで動作する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/introduction-to-driver-objects> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/device-object/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/driver-object/> ;
    schema:description "デバイスオブジェクトは、自分を作成したドライバーオブジェクトと結び付いており、宛先が決まれば処理関数の表も決まる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/introduction-to-device-objects> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/device-stack/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/device-object/> ;
    schema:description "デバイススタックは、積み重なった複数のデバイスオブジェクトの列として構成される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/gettingstarted/device-nodes-and-device-stacks> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/device-stack/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/ntfs/> ;
    schema:description "ローカルディスク上のファイルへのI/Oでは、ファイルシステム側のデバイススタックにNTFSが層として入る"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/gettingstarted/device-nodes-and-device-stacks>, <https://learn.microsoft.com/windows-server/storage/file-server/ntfs-overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/ntfs/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/device-object/> ;
    schema:description "NTFSはボリューム(HarddiskVolumeNなど)のデバイスオブジェクト上で動作し、ファイル内オフセットをボリューム上の位置に変換する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/storage/file-server/ntfs-overview>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/introduction-to-device-objects> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/irp/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/io-stack-location/> ;
    schema:description "IRPは経由予定のドライバーの数だけI/Oスタックロケーションを持ち、各ドライバーは自分用の領域から指示を読み取る"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/i-o-stack-locations> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/io-stack-location/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/irp-major-function/> ;
    schema:description "各I/Oスタックロケーションは、メジャー/マイナーファンクションコードとその要求のパラメーターを保持する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/i-o-stack-locations>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/irp-major-function-codes> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/irp/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/device-stack/> ;
    schema:description "IRPはデバイススタック最上位のデバイスオブジェクトへ送られ、各層で処理または下位への転送が行われる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/gettingstarted/i-o-request-packets>, <https://learn.microsoft.com/windows-hardware/drivers/gettingstarted/device-nodes-and-device-stacks> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/filter-driver/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/device-object/> ;
    schema:description "フィルタードライバーは、割り込むためだけのデバイスオブジェクトをデバイススタックに挟み込む"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/ifs/filter-manager-concepts>, <https://learn.microsoft.com/windows-hardware/drivers/gettingstarted/device-nodes-and-device-stacks> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/irp/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/procmon/> ;
    schema:description "Process MonitorのAdvanced Outputを有効にすると、Operation列がIRP_MJ_READなどIRPのメジャーファンクションコードの語彙で表示される"@ja ;
    ks:evidence <https://learn.microsoft.com/sysinternals/downloads/procmon>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/irp-major-function-codes> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fast-io/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/procmon/> ;
    schema:description "Process MonitorのOperation列でFASTIO_で始まる行として、IRPを経由しない読み書きを観察できる"@ja ;
    ks:evidence <https://learn.microsoft.com/sysinternals/downloads/procmon>, <https://learn.microsoft.com/windows-hardware/drivers/ifs/irps-are-different-from-fast-i-o> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fast-io/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/cache-manager/> ;
    schema:description "ファストI/Oは、要求されたデータがキャッシュマネージャーの管理するシステムキャッシュ上に全部載っているときだけ、ユーザーバッファとキャッシュの間で直接コピーする近道である"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/ifs/irps-are-different-from-fast-i-o>, <https://learn.microsoft.com/windows/win32/fileio/file-caching> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fast-io/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/synchronous-io/> ;
    schema:description "ファストI/Oのルーチンが使えるのは同期I/Oの場合だけで、ページングI/Oやストレージドライバーでは使われない"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/ifs/irps-are-different-from-fast-i-o> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/fast-io/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/asynchronous-io/> ;
    schema:description "ファストI/Oは同期I/O専用の仕組みで、非同期に発行された要求には使われず、IRP経由の処理になる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/ifs/irps-are-different-from-fast-i-o> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/closehandle/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/irp-mj-cleanup/> ;
    schema:description "あるファイルオブジェクトの最後のハンドルがCloseHandleで閉じられると、そのファイルシステムにIRP_MJ_CLEANUPが送られる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/irp-mj-cleanup> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/irp-mj-cleanup/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/irp-mj-close/> ;
    schema:description "cleanupの後、未完了I/Oやメモリマップトファイルのセクションなどカーネル内の参照がすべて消えて参照カウントが0になったときに限り、IRP_MJ_CLOSEが送られる。cleanupとcloseの間には隙間があり即座に続くとは限らない"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/irp-mj-cleanup>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/irp-mj-close> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/closehandle/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/handle-leak/> ;
    schema:description "不要になったハンドルをCloseHandleで確実に閉じることが、ハンドルカウントを減らしハンドルリークを防ぐ基本になる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/fileio/file-handles> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/file-object/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/handle-leak/> ;
    schema:description "未完了I/Oやメモリマップトセクションなどカーネル内の参照が残り続けるファイルオブジェクトの山が、ハンドルリークとして観測される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/irp-mj-cleanup>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/using-files-in-a-driver> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dispatch-routine/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/irp-major-function/> ;
    schema:description "ドライバーはメジャーファンクションコードごとに個別のディスパッチルーチンを用意できる(必須・任意はコードごとに異なる)"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/kernel/writing-dispatch-routines>, <https://learn.microsoft.com/windows-hardware/drivers/kernel/irp-major-function-codes> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/network-redirector/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/device-object/> ;
    schema:description "ネットワークリダイレクターは\\Device\\Mupという単一のデバイスオブジェクトとして名前空間に存在する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/win32/fileio/naming-a-file> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
