Windows XP と 2000の cdrom.sys の初期化処理の違い

cdrom.sys が呼び出している ClassInitialize について XPと 2000で違いがあったのでまとめてみました。

Offset 用途 2000 XP
+00 InitializationDataSize 0xd4 0xd4
+04 FdoData.
DeviceExtensionSize
0x338 0x580
+08 FdoData.
DeviceType
2(FILE_DEVICE_CD_ROM)
+10 FdoData.
DeviceCharacteristics
3(FILE_DIRECTORY_FILE | FILE_WRITE_THROUGH) 0x101(FILE_DIRECTORY_FILE | FILE_COMPLETE_IF_OPLOCKED)
+14 FdoData.
ClassError
NULL 使用
+18 FdoData.
ClassReadWriteVerification
使用 使用
+1C FdoData.
ClassDeviceControl
使用 使用
+20 FdoData.
ClassShutdownFlush
NULL 使用
+24 FdoData.
ClassCreateClose
NULL 使用
+28 FdoData.
ClassInitDevice
使用 使用
+2C FdoData.
ClassStartDevice
使用 使用
+30 FdoData.
ClassPowerDevice
CLASSPNP.SYS!ClassSpinDownPowerHandler
+34 FdoData.
ClassStopDevice
使用 使用
+38 FdoData.
ClassRemoveDevice
使用 使用
  :    
+BC ClassAddDevice 使用 使用
+C8 ClassStartIo 使用 使用
+CC ClassUnload 使用 使用
+D0 ClassTick 使用 使用

Windows 2000は、ClassCreateCloseとClassShutdownFlushとClassErrorの処理が無し。
また、DeviceExtensionSizeが大きく異なる事、XPはデバイスの属性がOplock のデッドロック回避のためFILE_COMPLETE_IF_OPLOCKED になってるのが 特徴でした ・ω・

 

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です