DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE 콜백은 IoDriverProxyCreateHotSwappableWorkerThread에서 만든 핫 스왑 가능한 작업자 스레드에서 실행되는 루틴을 정의합니다.
Syntax
DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE DriverProxyHotswapWorkerRoutine;
BOOLEAN DriverProxyHotswapWorkerRoutine(
PVOID WorkerContext,
NTSTATUS WaitStatus
)
{...}
매개 변수
WorkerContext
[in] 작업자 스레드를 만들 때 지정된 드라이버 정의 컨텍스트 정보에 대한 포인터입니다. 이 컨텍스트는 DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT 구조체의 컨텍스트 필드에서 전달됩니다.
WaitStatus
[in] 대기 작업에서 반환된 상태입니다. 작업자 스레드가 각성된 이유를 나타냅니다. 가능한 대기 상태 값은 KeWaitForMultipleObjects 를 참조하세요.
반환 값
DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE 다음 값 중 하나를 반환합니다.
| 반환 값 | Description |
|---|---|
| TRUE | 작업자 스레드는 계속 실행되고 지정된 개체에서 다시 기다려야 합니다. |
| FALSE | 작업자 스레드가 종료되어야 합니다. |
비고
이 콜백은 작업자 스레드가 커널 개체를 기다리지 못하게 되면 호출됩니다. 루틴은 스레드가 계속 실행되어야 하는지 또는 종료해야 하는지를 결정합니다.
이 콜백 루틴은 핫 스왑 가능한 작업을 위해 특별히 만들어진 시스템 작업자 스레드의 컨텍스트에서 PASSIVE_LEVEL 실행됩니다. 스레드는 실행(IRQL_requires_same) 전체에서 동일한 IRQL을 유지 관리합니다.
작업자 루틴은 스레드가 DRIVER_PROXY_HOTSWAP_WORKER_ROUTINE_START_CONTEXT 구조에 지정된 커널 개체를 대기할 때마다 호출됩니다. WaitStatus 및 드라이버의 현재 상태에 따라 루틴은 처리를 계속할지(TRUE 반환) 작업자 스레드를 종료할지(FALSE 반환)를 결정해야 합니다.
작업자 스레드 인프라는 스레드를 안전하게 종료하고 드라이버 핫 스왑 작업의 일부로 다시 만들 수 있도록 하여 런타임 드라이버 업데이트 중에 시스템 안정성을 유지합니다.
요구 사항
| 요구 사항 | 가치 |
|---|---|
| 대상 플랫폼 | 보편적 |
| Header | wdm.h |
| IRQL | PASSIVE_LEVEL |