Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT-Struktur enthält die Parameter, die zum Starten eines Hot-Swappable-Workerthreads mit IoDriverProxyCreateHotSwappableWorkerThread erforderlich sind.
Syntax
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;
Elemente
WorkerRoutine
Ein Zeiger auf eine DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE Rückruffunktion, die aufgerufen wird, wenn der Workerthread aktiviert wird, ohne auf die angegebenen Ereignisse zu warten.
Context
Ein Zeiger auf treiberdefinierte Kontextinformationen, die an den WorkerRoutine-Rückruf übergeben werden. Auf diese Weise kann der Treiber zusätzliche Daten bereitstellen, die von der Arbeitsroutine benötigt werden.
WaitType
Der Typ des auszuführenden Wartevorgangs. Geben Sie entweder WaitAll an, um anzugeben, dass alle angegebenen Objekte einen signalisierten Zustand erreichen müssen, bevor die Wartezeit erfüllt ist. oder WaitAny, der angibt, dass eines der Objekte einen signalisierten Zustand erreichen muss, bevor die Wartezeit erfüllt ist.
WaitReason
Der Grund für die Wartezeit. Treiber sollten diesen Wert auf "Executive " festlegen oder, wenn der Treiber im Auftrag eines Benutzers arbeitet und im Kontext eines Benutzerthreads ausgeführt wird, auf UserRequest.
WaitMode
Gibt an, ob der Aufrufer in KernelMode oder UserMode wartet. Treiber auf mittlerer und niedrigster Ebene sollten KernelMode angeben. Wenn der Satz von Objekten, auf die gewartet wurde, einen Mutex enthält, muss der Aufrufer KernelMode angeben.
Altertable
Ein boolescher Wert, der angibt, ob der Thread benachrichtigt werden kann, während er sich im Wartezustand befindet.
HasTimeout
Ein boolescher Wert, der angibt, ob ein Timeoutwert angegeben wird. Wenn TRUE, enthält das Timeout-Feld einen gültigen Timeoutwert. Wenn FALSE, wartet der Wartevorgang auf unbestimmte Zeit.
Timeout
Ein Zeiger auf einen Timeoutwert, der die absolute oder relative Zeit in 100-Nanosekundeneinheiten angibt, bei denen die Wartezeit abgeschlossen werden soll.
Ein positiver Wert gibt eine absolute Zeit im Verhältnis zum 1. Januar 1601 an. Ein negativer Wert gibt ein Intervall relativ zur aktuellen Uhrzeit an. Absolute Ablaufzeiten verfolgen alle Änderungen der Systemzeit; Relative Ablaufzeiten sind von Systemzeitänderungen nicht betroffen.
Wenn *Timeout = 0, wird die Routine ohne Warten zurückgegeben. Wenn der Aufrufer einen NULL-Zeiger bereitstellt, wartet die Routine auf unbestimmte Zeit, bis ein oder alle Dispatcherobjekte auf den signalierten Zustand festgelegt sind.
EventCount
Die Anzahl der Ereignisse im Ereignisarray . Dieser Wert bestimmt, wie viele Kernelobjekte der Workerthread wartet.
Events[ANYSIZE_ARRAY]
Ein Array von Zeigern auf KEVENT-Objekte , auf die der Workerthread wartet. Die Arraygröße wird durch das Feld "EventCount " bestimmt. Der Workerthread wartet gemäß der WaitType-Spezifikation auf diese Ereignisse.
Bemerkungen
Diese Struktur konfiguriert, wie der Workerthread auf Kernelobjekte wartet und definiert die Rückrufroutine, die beim Abschluss der Wartezeit aufgerufen wird.
Diese Struktur wird verwendet, um einen Hot-Swappable-Workerthread zu konfigurieren, der während der Hot-Swap-Vorgänge des Treibers sicher beendet und neu erstellt werden kann. Die Struktur stellt alle erforderlichen Parameter für die zugrunde liegenden Kernel-Wartevorgänge bereit.
Der mit dieser Struktur erstellte Arbeitsthread wartet wiederholt auf die angegebenen Ereignisse und ruft den WorkerRoutine-Rückruf jedes Mal auf, wenn die Wartezeit abgeschlossen ist. Der Rückruf kann dann entscheiden, ob der Thread weiterhin ausgeführt oder beendet werden soll.
Der Hot-Swappable-Charakter des Workerthreads bedeutet, dass er im Rahmen von Treiberaktualisierungsvorgängen sicher beendet und neu gestartet werden kann, wobei die Systemstabilität während der Laufzeittreiberersatz beibehalten wird.
Anforderungen
| Anforderung | Wert |
|---|---|
| Header | wdm.h |
Siehe auch
IoDriverProxyCreateHotSwappableWorkerThread