C28164
Ostrzeżenie C28164: argument jest przekazywany do funkcji, która oczekuje wskaźnika do obiektu (nie wskaźnika do wskaźnika)
To ostrzeżenie jest raportowane, gdy użyty wskaźnik do wskaźnika w wywołaniu funkcji, w której oczekiwany jest wskaźnik do obiektu.
Funkcja przyjmuje PVOID w tym przypadku.Zazwyczaj wskazuje to, że &pXXX zostało użyte podczas gdy pXXX jest wymagane.
Niektóre funkcje polimorficzne (funkcje, które mogą wyznaczać i być stosowane do wartości różnych typów) są realizowane w języku C za pomocą argumentu PVOID, który pobiera dowolny typ wskaźnika.Jednakże, zezwala to programiście zaprogramować wskaźnik do wskaźnika nie powodując błędu kompilatora, nawet jeśli ten typ nie jest właściwy.
Przykład
Poniższy kod przykładowy generuje to ostrzeżenie:
PFAST_MUTEX pFm;
...
KeWaitForSingleObject(&pFm, UserRequest, UserMode, false, NULL);
Poniższy przykład kodu pozwala uniknąć ostrzeżenia:
PFAST_MUTEX pFm;
...
KeWaitForSingleObject(pFm, UserRequest, UserMode, false, NULL);