Udostępnij za pośrednictwem


C28107

Ostrzeżenie C28107: zasób musi być wstrzymany podczas wywoływania funkcji

Zasób, który program musi nabyć przed wywołaniem funkcji nie została przejęta, gdy funkcja została wywołana.W rezultacie wywołanie funkcji zakończy się niepowodzeniem.To ostrzeżenie jest zgłaszane tylko wtedy, gdy zasoby są nabyte i wydany w tej samej funkcji.

Przykład

Poniższy kod przykładowy generuje to ostrzeżenie:

ExAcquireResourceLite(resource, true);
ExReleaseResourceLite(resource);

Poniższy kod przykładowy pozwala uniknąć tego ostrzeżenia:

KeEnterCriticalRegion();
ExAcquireResourceLite(resource, true);
ExReleaseResourceLite(resource);
KeLeaveCriticalRegion();
KeEnterCriticalRegion();
ExAcquireResourceLite(resource, true);
ExReleaseResourceLite(resource);
KeLeaveCriticalRegion();