TAPE_ERROR_ROUTINE fungsi panggilan balik (minitape.h)

TAPE_ERROR_ROUTINE menyediakan penanganan kesalahan khusus perangkat saat SRB selesai dengan status kesalahan. Rutinitas ini bersifat opsional.

Sintaks

TAPE_ERROR_ROUTINE TapeErrorRoutine;

void TapeErrorRoutine(
  [in]      PVOID MinitapeExtension,
  [in]      PSCSI_REQUEST_BLOCK Srb,
  [in, out] PTAPE_STATUS TapeStatus
)
{...}

Parameter

[in] MinitapeExtension

Arahkan ke ekstensi minitape khusus driver. Ini adalah NULL jika driver miniclass tidak meminta ekstensi minitape ketika diinisialisasi.

[in] Srb

Arahkan ke SRB untuk operasi yang gagal.

[in, out] TapeStatus

Arahkan ke TAPE_STATUS yang diatur oleh driver kelas pita. Driver miniclass pita dapat mengubah TAPE_STATUS atau membiarkannya tidak berubah.

Nilai kembali

Tidak ada

Keterangan

Sebagian besar driver miniclass pita tidak menyediakan rutinitas TAPE_ERROR_ROUTINE karena kode TAPE_STATUS yang ditetapkan oleh driver kelas pita sesuai.

Namun, untuk beberapa perangkat, driver miniclass pita dapat mengidentifikasi kode kesalahan yang lebih tepat daripada driver kelas pita. Misalnya, jika driver kelas pita mengembalikan TAPE_STATUS_BUS_RESET, driver miniclass pita mungkin dapat menentukan bahwa masalah sebenarnya lebih akurat diwakili oleh TAPE_STATUS_NO_MEDIA untuk beberapa perangkat.

Driver miniclass pita secara opsional menentukan titik masuk untuk rutinitas TAPE_ERROR_ROUTINE dalam struktur TAPE_INIT_DATA_EX yang diteruskannya ke TapeClassInitialize dari rutinitas DriverEntry-nya . Untuk driver miniclass seperti itu, ketika kesalahan terjadi selama perintah baca, tulis, atau kontrol perangkat, driver kelas pita menetapkan kode TAPE_STATUS yang sesuai dan memanggil rutinitas TAPE_ERROR_ROUTINE driver miniclass dengan ekstensi minitape, SRB yang gagal, dan kode TAPE_STATUS yang akan dikembalikan.

TAPE_ERROR_ROUTINE menentukan apakah akan mengubah status yang disediakan oleh driver kelas pita berdasarkan parameter input dan pengetahuannya tentang perangkat. Jika bit SRB_STATUS_AUTOSENSE_VALID diatur dalam Srb-SrbStatus>, maka SRB berisi informasi indra SCSI di SenseInfoBuffer. Panjang buffer adalah SenseInfoBufferLength. Rutinitas TAPE_ERROR_ROUTINE harus memeriksa informasi ini bersama dengan SrbStatus dan ScsiStatus di SRB untuk menentukan apakah akan mengubah TAPE_STATUS yang dikembalikan.

Persyaratan

Persyaratan Nilai
Target Platform Desktop
Header minitape.h (termasuk Minitape.h)

Lihat juga

DriverEntry dari Driver Tape Miniclass

SCSI_REQUEST_BLOCK

TAPE_INIT_DATA_EX

TAPE_STATUS

TapeClassInitialize