Есть простой код открытия NTFS тома \\.\c: (\Device\HarddiskVolume1) Код (Text): HANDLE DrvLetter= CreateFileA ("\\\\.\\c:", GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (DrvLetter == INVALID_HANDLE_VALUE) return 0; __asm int 3 DWORD returned; UCHAR buff[512]; ReadFile (DrvLetter, buff, 512, &returned, NULL); Далее смотрю стек драйверов вплоть до вызова disk.sys Код (Text): kd> !devstack 81b9cd98 !DevObj !DrvObj !DevExt ObjectName 81b9c820 \Driver\VolSnap 81b9c8d8 > 81b9cd98 \Driver\Ftdisk 81b9ce50 HarddiskVolume1 f7c20a20 804eddf9 CLASSPNP!ClassReadWrite f7c20a30 f9c24537 nt!IopfCallDriver+0x31 f7c20a40 804eddf9 PartMgr!PmReadWrite+0x2d f7c20a50 f983e1c6 nt!IopfCallDriver+0x31 f7c20a6c 804eddf9 ftdisk!FtDiskReadWrite+0x194 f7c20a7c f99bc51a nt!IopfCallDriver+0x31 f7c20a8c 804eddf9 VolSnap!VolSnapRead+0x26 f7c20a9c f9713243 nt!IopfCallDriver+0x31 f7c20aac f9722f81 Ntfs!NtfsSingleAsync+0x6d f7c20ad8 f971ed61 Ntfs!NtfsVolumeDasdIo+0x3d f7c20bb4 f9714fbf Ntfs!NtfsCommonRead+0x23d f7c20c54 804eddf9 Ntfs!NtfsFsdRead+0x22d f7c20c64 f97b6459 nt!IopfCallDriver+0x31 f7c20c6c 804eddf9 sr!SrPassThrough+0x31 f7c20c7c 80573b42 nt!IopfCallDriver+0x31 f7c20c90 80570b98 nt!IopSynchronousServiceTail+0x60 f7c20d38 8053c808 nt!NtReadFile+0x580 f7c20d38 7c90eb94 nt!KiFastCallEntry+0xf8 0012fc44 7c801875 ntdll+0xeb94 0012fc44 004127ce kernel32!ReadFile+0x67 0012ff70 00412ea9 test!main+0xce Собственно вопросы: 1) Почему запрос на чтение сначала приходит к драйверу NTFS, а только потом доходит до того девайса который я открывал через Createfile (мне кажется более логичной схема ftdisk->partmgr->драйвер FS->драйвер диска)? 2) Как NtReadFile узнает о типе FS?