Bagikan melalui


Menangani Permintaan Pass-Through SCSI

Driver kelas yang menghasilkan permintaan IOCTL_SCSI_PASS_THROUGH atau permintaan IOCTL_SCSI_PASS_THROUGH_DIRECT bertanggung jawab atas hal berikut:

  • Mengatur panjang buffer pengguna di Parameters.DeviceIoControl.InputBufferLength ke setidaknya sizeof(SCSI_PASS_THROUGH) atau sizeof(SCSI_PASS_THROUGH_DIRECT)

  • Menyiapkan lokasi tumpukan I/O driver port penyimpanan seperti biasa

  • Mengatur MinorFunction di IRP ke IRP_MJ_DEVICE_CONTROL, yang menandai permintaan sebagai telah diproses oleh driver kelas penyimpanan.

Pada penerimaan permintaan IOCTL_SCSI_PASS_THROUGH atau IOCTL_SCSI_PASS_THROUGH_DIRECT dari driver tingkat yang lebih tinggi, rutinitas DispatchDeviceControl driver kelas penyimpanan bertanggung jawab untuk memeriksa validitas perintah SCSI (CDB) yang disematkan dan, jika perintah valid untuk perangkatnya, mengirim permintaan ke driver port penyimpanan.

Jika lokasi tumpukan I/O driver port untuk permintaan IOCTL_SCSI_PASS_THROUGH atau IOCTL_SCSI_PASS_THROUGH_DIRECT tidak memiliki bidang MinorFunction yang diatur dengan IRP_MJ_DEVICE_CONTROL, driver port mengasumsikan permintaan berasal langsung dari aplikasi dan bahwa tidak ada driver kelas untuk jenis perangkat target. Ini adalah kesalahan aplikasi untuk mengirim permintaan tersebut langsung ke driver port untuk perangkat yang telah diklaim oleh driver kelas penyimpanan.

Driver port tidak memeriksa validitas perintah SCSI yang disematkan dalam permintaan pass-through seperti itu.