Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[S’applique uniquement à KMDF]
Le EvtIoAllocateResourcesForReservedRequest d’un pilote fonction de rappel alloue des ressources spécifiques à la requête que le pilote peut utiliser pour traiter une requête 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 vers un objet file d’attente d’E/S.
[in] Request
Handle vers un objet de requête que l’infrastructure a créé pour être utilisé lors de futures situations de faible mémoire.
Valeur de retour
La fonction de rappel EvtIoAllocateResourcesForReservedRequest doit retourner STATUS_SUCCESS ou une autre valeur d’état pour laquelle NT_SUCCESS(status) est égal à TRUE si la fonction ne rencontre aucune erreur. Dans le cas contraire, cette fonction doit retourner une valeur d’état pour laquelle NT_SUCCESS(status) est égal à FALSE.
Remarques
Un pilote peut inscrire une fonction de rappel EvtIoAllocateResourcesForReservedRequest lorsqu’elle appelle WdfIoQueueAssignForwardProgressPolicy.
Si votre pilote inscrit un EvtIoAllocateResourcesForReservedRequest fonction de rappel, l’infrastructure appelle la fonction immédiatement après avoir créé un objet de requête qu’il réserve pour des situations de mémoire faible.
La fonction de rappel peut allouer des ressources dont votre pilote a besoin pour traiter une requête ultérieurement, si l’infrastructure utilise la demande réservée en raison d’une situation de mémoire faible.
Pour allouer de la mémoire pour les 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.
Vous pouvez é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é 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ée, le pilote doit réinitialiser l’espace de contexte lorsqu’il termine une requête 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 l’utilisation.
Si votre pilote appelle WdfDeviceInitSetRequestAttributes et spécifie un EvtCleanupCallback ou EvtDestroyCallback fonction de rappel pour ses objets de requête, l’infrastructure appelle ces fonctions de rappel pour ses objets de requête réservés uniquement lorsqu’elle 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 'espace de contexte d’objet framework.
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 faible, la fonction de rappel doit retourner une valeur d’état d’erreur. Dans ce cas, l’infrastructure arrête l’allocation d’objets de requête réservée 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 Garantir la progression des opérations d’E/S.
Spécifications
Besoin | Valeur |
---|---|
plateforme cible | Universel |
version minimale de KMDF | 1.9 |
En-tête | wdfio.h (include Wdf.h) |
IRQL | <=DISPATCH_LEVEL |