Advertencia C28164

El argumento se está pasando a una función que espera un puntero a un objeto (no un puntero a un puntero)

Esta advertencia se notifica cuando se usa un puntero a un puntero en una llamada a una función que espera un puntero a un objeto.

La función toma un elemento PVOID en esta posición. Normalmente, indica que &pXXX se usó cuando pXXX se requiere.

Algunas funciones polimórficas (funciones que se pueden evaluar como valores de diferentes tipos y que se pueden aplicar a diferentes tipos) se implementan en C mediante un argumento PVOID que toma cualquier tipo de puntero. Sin embargo, esto permite al programador codificar un puntero a un puntero sin provocar un error del compilador, incluso cuando este tipo no es adecuado.

Ejemplo

El siguiente código de ejemplo genera esta advertencia:

PFAST_MUTEX pFm;
//...
KeWaitForSingleObject(&pFm, UserRequest, UserMode, false, NULL);

El siguiente código de ejemplo evita esta advertencia:

PFAST_MUTEX pFm;
//...
KeWaitForSingleObject(pFm, UserRequest, UserMode, false, NULL);