Partager via


structure DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT (wdm.h)

La structure DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT contient les paramètres nécessaires pour démarrer un thread worker permutable à chaud à l’aide d’IoDriverProxyCreateHotSwappableWorkerThread.

Syntaxe

typedef struct _DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT {
  PDRIVER_PROXY_HOTSWAP_WORKER_ROUTINE WorkerRoutine;
  PVOID                                Context;
  WAIT_TYPE                            WaitType;
  KWAIT_REASON                         WaitReason;
  KPROCESSOR_MODE                      WaitMode;
  BOOLEAN                              Altertable;
  BOOLEAN                              HasTimeout;
  LARGE_INTEGER                        Timeout;
  ULONG                                EventCount;
  PKEVENT                              Events[ANYSIZE_ARRAY];
} DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT, *PDRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT;

Members

WorkerRoutine

Pointeur vers une fonction de rappel DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE qui sera appelée lorsque le thread de travail se réveille d’attendre les événements spécifiés.

Context

Pointeur vers les informations de contexte définies par le pilote qui seront transmises au rappel WorkerRoutine . Cela permet au pilote de fournir des données supplémentaires nécessaires à la routine de travail.

WaitType

Type d’opération d’attente à effectuer. Spécifiez waitAll, indiquant que tous les objets spécifiés doivent atteindre un état signalé avant que l’attente soit satisfaite ; ou WaitAny, indiquant que l’un des objets doit atteindre un état signalé avant que l’attente soit satisfaite.

WaitReason

Raison de l’attente. Les pilotes doivent définir cette valeur sur Executive ou, si le pilote effectue un travail au nom d’un utilisateur et s’exécute dans le contexte d’un thread d’utilisateur, sur UserRequest.

WaitMode

Indique si l’appelant attend dans KernelMode ou UserMode. Les pilotes intermédiaires et de niveau le plus bas doivent spécifier KernelMode. Si l’ensemble d’objets attendus inclut un mutex, l’appelant doit spécifier KernelMode.

Altertable

Valeur booléenne qui indique si le thread peut être alerté pendant qu’il est dans l’état d’attente.

HasTimeout

Valeur booléenne qui indique si une valeur de délai d’attente est spécifiée. Si la valeur est TRUE, le champ Timeout contient une valeur de délai d’expiration valide. Si la valeur est FALSE, l’opération d’attente attend indéfiniment.

Timeout

Pointeur vers une valeur de délai d’attente qui spécifie le temps absolu ou relatif, en unités de 100 nanosecondes, à laquelle l’attente doit être terminée.

Une valeur positive spécifie une heure absolue, par rapport au 1er janvier 1601. Une valeur négative spécifie un intervalle par rapport à l’heure actuelle. Les heures d’expiration absolues suivent les modifications apportées à l’heure système ; les heures d’expiration relatives ne sont pas affectées par les modifications de temps système.

Si *Délai d’attente = 0, la routine est retournée sans attendre. Si l’appelant fournit un pointeur NULL, la routine attend indéfiniment jusqu’à ce que tous les objets de répartiteur soient définis sur l’état signalé.

EventCount

Nombre d’événements dans le tableau Événements . Cette valeur détermine le nombre d’objets noyau qui attendront le thread de travail.

Events[ANYSIZE_ARRAY]

Tableau de pointeurs vers les objets KEVENT que le thread de travail attend. La taille du tableau est déterminée par le champ EventCount . Le thread de travail attend ces événements en fonction de la spécification WaitType .

Remarques

Cette structure configure la façon dont le thread de travail attend les objets noyau et définit la routine de rappel qui sera appelée une fois l’attente terminée.

Cette structure est utilisée pour configurer un thread de travail permutable à chaud qui peut être arrêté et recréé en toute sécurité pendant les opérations d’échange à chaud du pilote. La structure fournit tous les paramètres nécessaires pour les opérations d’attente du noyau sous-jacentes.

Le thread de travail créé avec cette structure attend à plusieurs reprises les événements spécifiés et appelle le rappel WorkerRoutine chaque fois que l’attente est terminée. Le rappel peut ensuite décider si le thread doit continuer à s’exécuter ou à se terminer.

La nature permutable à chaud du thread de travail signifie qu’elle peut être arrêtée et redémarrée en toute sécurité dans le cadre des opérations de mise à jour du pilote, en conservant la stabilité du système pendant les remplacements du pilote d’exécution.

Spécifications

Requirement Valeur
Header wdm.h

Voir aussi

IoDriverProxyCreateHotSwappableWorkerThread

DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE

KEVENT