Ostrzeżenie C28107

Zasób musi być przechowywany podczas wywoływania funkcji

Zasób, który program musi uzyskać przed wywołaniem funkcji, nie został uzyskany podczas wywoływania funkcji. W związku z tym wywołanie funkcji zakończy się niepowodzeniem. To ostrzeżenie jest zgłaszane tylko wtedy, gdy zasoby są pozyskiwane i zwalniane w tej samej funkcji.

Przykład

Poniższy przykład kodu generuje to ostrzeżenie:

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

Poniższy przykład kodu pozwala uniknąć tego ostrzeżenia:

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