Sdílet prostřednictvím


Uzamčení interní fronty ovladače portu SCSI

Ovladač třídy a další ovladače vyšší úrovně můžou vynutit, aby port SCSI zastavil zpracování požadavků ve frontě. Ovladač třídy zastaví frontu portu SCSI odesláním SRB typu SRB_FUNCTION_LOCK_QUEUE. Ovladač třídy obvykle zastaví zpracování požadavků ve frontě portu SCSI za účelem změny stavu napájení zařízení. Po změně stavu napájení zařízení ovladač třídy odemkne frontu. Posloupnost je následující:

  1. Ovladač třídy uzamkne frontu portu SCSI (pomocí IRP_MJ_SCSI s hodnotou funkce SRB SRB_FUNCTION_LOCK_QUEUE).

  2. Žádosti o změnu stavu napájení třídy (pomocí IRP_MJ_SCSI s příznakem SRB_FLAGS_BYPASS_LOCKED_QUEUE, aby se zajistilo, že IRP napájení není zařazen do fronty).

  3. Ovladač třídy odemkne frontu portu SCSI (IRP_MJ_SCSI s hodnotou funkce SRB SRB_FUNCTION_UNLOCK_QUEUE a nastaveným příznakem SRB_FLAGS_BYPASS_LOCKED_QUEUE).

Jakmile je jeho fronta odemknutá, port SCSI obnoví zpracování dat ve frontě SRB. Ovladač třídy by se neměl pokoušet obejít frontu, která byla uzamčena jiným ovladačem.

Další informace o odemčení front z pohledu ovladače třídy naleznete v tématu ReleaseQueue Rutina třídy úložiště.