| Index: third_party/crashpad/crashpad/util/win/nt_internals.cc
|
| diff --git a/third_party/crashpad/crashpad/util/win/nt_internals.cc b/third_party/crashpad/crashpad/util/win/nt_internals.cc
|
| index 46192b353c6432240f4ca847e00e86289e73460c..6fc0999d9e1d0febcf5e048d1e668e6c34e98adb 100644
|
| --- a/third_party/crashpad/crashpad/util/win/nt_internals.cc
|
| +++ b/third_party/crashpad/crashpad/util/win/nt_internals.cc
|
| @@ -26,6 +26,8 @@ NTSTATUS NTAPI NtOpenThread(HANDLE* ThreadHandle,
|
| OBJECT_ATTRIBUTES* ObjectAttributes,
|
| CLIENT_ID* ClientId);
|
|
|
| +void* NTAPI RtlGetUnloadEventTrace();
|
| +
|
| namespace crashpad {
|
|
|
| NTSTATUS NtQuerySystemInformation(
|
| @@ -83,6 +85,14 @@ NTSTATUS NtQueryObject(HANDLE handle,
|
| return_length);
|
| }
|
|
|
| +template <class Traits>
|
| +RTL_UNLOAD_EVENT_TRACE<Traits>* RtlGetUnloadEventTrace() {
|
| + static const auto rtl_get_unload_event_trace =
|
| + GET_FUNCTION_REQUIRED(L"ntdll.dll", ::RtlGetUnloadEventTrace);
|
| + return reinterpret_cast<RTL_UNLOAD_EVENT_TRACE<Traits>*>(
|
| + rtl_get_unload_event_trace());
|
| +}
|
| +
|
| // Explicit instantiations with the only 2 valid template arguments to avoid
|
| // putting the body of the function in the header.
|
| template NTSTATUS NtOpenThread<process_types::internal::Traits32>(
|
| @@ -99,4 +109,10 @@ template NTSTATUS NtOpenThread<process_types::internal::Traits64>(
|
| const process_types::CLIENT_ID<process_types::internal::Traits64>*
|
| client_id);
|
|
|
| +template RTL_UNLOAD_EVENT_TRACE<process_types::internal::Traits32>*
|
| +RtlGetUnloadEventTrace<process_types::internal::Traits32>();
|
| +
|
| +template RTL_UNLOAD_EVENT_TRACE<process_types::internal::Traits64>*
|
| +RtlGetUnloadEventTrace<process_types::internal::Traits64>();
|
| +
|
| } // namespace crashpad
|
|
|