You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Raymond Chen edited this page Aug 24, 2020
·
1 revision
The wil::last_error_context class is defined in wil/resource.h
as part of the RAII resource wrappers library.
It captures the value of GetLastError
when it is constructed and restores it when it is destructed.
This is useful in library code that runs during a value's destructor. If
the library code could inadvertently change the value of GetLastError
(by calling a Win32 API or similar), it should instantiate a value of
this type before calling the library function in order to preserve the
GetLastError value the user would expect.
In kernel mode, this class does nothing, but the class remains defined
so that the wil library is insulated from differences between kernel
mode and user mode.
Constructor: last_error_context() takes no parameters.
Move-assignable and move-copyable. Any obligation to restore the
error code is transferred to the moved-to object.
The release method removes the obligation to restore the
error code.
voidLogMessage(...)
{
// Logging a message should not change GetLastError.auto preserveLastError = wil::last_error_context();
// The logging code might allocate memory or write to files,// and those calls may change GetLastError. But that's okay,// because the preserveLastError will restore the error code// for us.
... logging code...
}