Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I enhetstilläggen för varje enhetsobjekt som skapas av en lagringsklassdrivrutin tillhandahåller drivrutinen lagring för de drivrutinsbestämda data som används för att hantera I/O-begäranden för enheten, till exempel pekaren till den PDO som skickas till AddDevice, pekaren till enhetsobjektet som returneras av IoAttachDeviceToDeviceStack, en bakåtpekare till sitt eget enhetsobjekt. och så vidare.
De flesta drivrutiner för lagringsklass tillhandahåller också lagring för följande information:
Ett enhetstypspecifikt timeout-värde
Klassdrivrutinen kan överföra timeout-värdet i SRB:er som den skickar till portdrivrutinen, vilken tidmäter SRB_FUNCTION_EXECUTE_SCSI-begäranden (se SCSI_REQUEST_BLOCK) för varje klassdrivrutin. Portdrivrutinen returnerar en SRB med dess SrbStatus-medlem inställd på SRB_STATUS_TIMEOUT om intervallet mellan när portdrivrutinen skickar begäran till den underliggande drivrutinen och när begäran har slutförts överskrider det angivna tidsgränsvärdet.
En pekare till klassdrivrutinens felhanteringsrutin
Mer information om felhantering i lagringsklassdrivrutiner finns i lagringsklassdrivrutiner IoCompletion-rutiner.
Antalet som drivrutinen underhåller av bus-protokollfel på enheten
En pekare till en drivrutinsallokerad buffert för "sense-data".
En klassdrivrutin måste allokera minne för returnerad känslig data från cache-anpassad, ej sidindelad pool. Mer information om hur du allokerar minne för drivrutinsbuffertar finns i Allokera System-Space minne.
Ett drivrutinsbestämt standardvärde för SrbFlags som klassdrivrutinen anger i SRB:er
En pekare till en lookaside-listrubrik om drivrutinen konfigurerar en lookaside-lista för de SRB:er som den allokerar
Mer information finns i Använda Lookaside-listor .
Pekare till en IRP och en SRB som allokerats och hålls i reserv för begäranden som måste lyckas även under låga minnestillstånd, för pagineringsåtgärder samt felåterställningsåtgärder (till exempel de som utförs av en Lagringsklassdrivrutins ReleaseQueue-rutin)
En pekare till STORAGE_ADAPTER_DESCRIPTOR och STORAGE_DEVICE_DESCRIPTOR data som portdrivrutinen samlade in från HBA
Information om hur klassdrivrutiner får och använder dessa data finns i Storage Class Driver's GetDescriptor-rutin.
Flaggor som anger det tidigare och aktuella PnP-tillståndet för att hantera övergångar mellan tillstånd på enheten
En flagga som anger det aktuella enhetskrafttillståndet för att undvika extra arbete vid hantering av redundanta energibegäranden
Antal eventuella systemväxlingsfiler på enheten baserat på begäranden om växlingsmeddelanden som tagits emot av drivrutinen (IRP_MJ_PNP med IRP_MN_DEVICE_USAGE_NOTIFICATION)
En lagringsklassdrivrutin kan inte skicka begäranden till enheten via lagringsportdrivrutinen utan att använda pekaren för enhetsobjektet som returnerades av IoAttachDeviceToDeviceStack och lagras i enhetstillägget av drivrutinens AddDevice-rutin .