Función ExAcquireRundownProtection (wdm.h)
La rutina ExAcquireRundownProtection intenta adquirir protección de ejecución en un objeto compartido para que el autor de la llamada pueda acceder de forma segura al objeto.
Sintaxis
BOOLEAN ExAcquireRundownProtection(
[in, out] PEX_RUNDOWN_REF RunRef
);
Parámetros
[in, out] RunRef
Puntero a una estructura de EX_RUNDOWN_REF inicializada por una llamada anterior a la rutina ExInitializeRundownProtection. Las rutinas de protección de ejecución usan esta estructura para realizar un seguimiento del estado de ejecución del objeto compartido asociado. Esta estructura es opaca para los controladores.
Valor devuelto
ExAcquireRundownProtection devuelve TRUE si la rutina adquiere correctamente la protección de degradación para el autor de la llamada. De lo contrario, devuelve FALSE. Un valor devuelto de FALSE indica que se ha iniciado la ejecución del objeto y que el objeto debe tratarse como no válido.
Observaciones
Para acceder de forma segura a un objeto compartido, un controlador llama a ExAcquireRundownProtection para adquirir protección de ejecución en el objeto. La rutina devuelve TRUE para indicar que la protección de desaprotección está en vigor. Cuando la protección contra la ejecución está en vigor, el controlador puede acceder de forma segura al objeto sin riesgo de que el objeto se elimine antes de que se complete el acceso.
Siempre que el propio bloque de ejecución no esté paginado, se puede llamar a esta función en DISPATCH_LEVEL.
Después de completar el acceso, el controlador llama a ExReleaseRundownProtection para liberar la protección de ejecución adquirida anteriormente.
Si exAcquireRundownProtection devuelve FALSE, el objeto ya no es accesible. Por ejemplo, si el objeto se va a reemplazar por uno nuevo, el autor de la llamada debe esperar a que el propietario del objeto cree el nuevo objeto y, a continuación, negociar el acceso al nuevo objeto.
Para obtener más información, vea Run-Down Protection.