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 になってるのが 特徴でした ・ω・
Comments