Respuesta

16

De http://blogs.msdn.com/oldnewthing/archive/2004/03/02/82639.aspx:

En cuarto lugar, hay que tener especial cuidado con el valor INVALID_HANDLE_VALUE: Por coincidencia, el valor INVALID_HANDLE_VALUE pasa a ser numéricamente igual a la pseudohandle devuelto por GetCurrentProcess(). Muchas funciones del kernel aceptan pseudohandles, por lo que si se equivoca y accidentalmente llama, por ejemplo, al WaitForSingleObject en un identificador INVALID_HANDLE_VALUE que falló, en realidad terminará esperando su propio proceso. Esta espera, por supuesto, nunca se completará, porque un proceso se señala cuando sale, por lo que terminó esperando por usted mismo.

+1

Creo que ahora me siento enfermo ... Así que tengo que mantener el viejo mango y la validez de la señal con una bandera por separado. ¿Por qué la documentación no lo dice ... – EricSchaefer

+3

Me gustaría envolver 'WaitForSingleObject' y devolver' WAIT_FAILED' para 'INVALID_HANDLE_VALUE', probablemente requerirá menos codificación. –

Cuestiones relacionadas