EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST fonction de rappel (wdfio.h)
[S’applique à KMDF uniquement]
La fonction de rappel EvtIoAllocateResourcesForReservedRequest d’un pilote alloue des ressources spécifiques à la demande que le pilote peut utiliser pour traiter une demande d’E/S à l’avenir. L’infrastructure pré-alloue l’objet de requête spécifié pour une utilisation ultérieure dans des situations de faible mémoire.
Syntaxe
EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST EvtWdfIoAllocateResourcesForReservedRequest;
NTSTATUS EvtWdfIoAllocateResourcesForReservedRequest(
[in] WDFQUEUE Queue,
[in] WDFREQUEST Request
)
{...}
Paramètres
[in] Queue
Handle pour un objet file d’attente d’E/S.
[in] Request
Handle d’un objet de requête que l’infrastructure a créé pour une utilisation dans de futures situations de mémoire insuffisante.
Valeur retournée
La fonction de rappel EvtIoAllocateResourcesForReservedRequest doit retourner STATUS_SUCCESS ou une autre valeur de status pour laquelle NT_SUCCESS(status) est égal à TRUE si la fonction ne rencontre aucune erreur. Sinon, cette fonction doit retourner une valeur status pour laquelle NT_SUCCESS(status) est égal à FALSE.
Remarques
Un pilote peut inscrire une fonction de rappel EvtIoAllocateResourcesForReservedRequest lorsqu’il appelle WdfIoQueueAssignForwardProgressPolicy.
Si votre pilote inscrit une fonction de rappel EvtIoAllocateResourcesForReservedRequest , l’infrastructure appelle la fonction immédiatement après avoir créé un objet de requête qu’elle réserve pour les situations de mémoire insuffisante.
La fonction de rappel peut allouer des ressources dont votre pilote aura besoin pour traiter une demande ultérieurement, si l’infrastructure utilise la requête réservée en raison d’une situation de mémoire insuffisante.
Pour allouer de la mémoire aux ressources spécifiques à la requête, une fonction de rappel EvtIoAllocateResourcesForReservedRequest peut appeler WdfObjectAllocateContext, en spécifiant le handle d’objet de requête spécifié par le paramètre Request .
Votre pilote peut également appeler WdfDeviceInitSetRequestAttributes avant d’appeler WdfDeviceCreate. Par conséquent, l’infrastructure alloue de l’espace de contexte pour chaque objet de requête réservée lorsqu’il crée l’objet .
Si votre pilote alloue de l’espace de contexte d’objet pour les objets de requête réservés, il doit réinitialiser l’espace de contexte lorsqu’il termine une demande d’E/S qui utilise un objet de requête réservé. L’infrastructure ne réinitialise pas l’espace de contexte des objets de requête réservés après utilisation.
Si votre pilote appelle WdfDeviceInitSetRequestAttributes et spécifie une fonction de rappel EvtCleanupCallback ou EvtDestroyCallback pour ses objets de requête, le framework appelle ces fonctions de rappel pour ses objets de requête réservés uniquement lorsqu’il supprime les files d’attente d’E/S associées.
Les gestionnaires de requêtes du pilote peuvent appeler WdfRequestIsReserved pour déterminer si des objets de requête réservés sont utilisés.
Pour plus d’informations sur l’utilisation de l’espace de contexte d’objet, consultez Framework Object Context Space.
Si la fonction de rappel alloue correctement des ressources, elle doit retourner STATUS_SUCCESS.
Si une erreur d’allocation de ressources se produit, telle qu’une situation de mémoire insuffisante, la fonction de rappel doit retourner une erreur status valeur. Dans ce cas, l’infrastructure cesse d’allouer des objets de requête réservés et utilise la valeur de retour de la fonction de rappel comme valeur de retour pour WdfIoQueueAssignForwardProgressPolicy.
Pour plus d’informations sur la fonction de rappel EvtIoAllocateResourcesForReservedRequest , consultez Garantie de la progression des opérations d’E/S.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1,9 |
En-tête | wdfio.h (inclure Wdf.h) |
IRQL | <=DISPATCH_LEVEL |