static void do_initialisation()

in source/win32/ntapi.cpp [35:58]


  static void do_initialisation() noexcept {
    HMODULE ntdll = ::GetModuleHandleW(L"ntdll.dll");
    if (ntdll == NULL) {
      std::terminate();
    }

    auto init = [&](auto& fnPtr, const char* name) noexcept {
      FARPROC p = ::GetProcAddress(ntdll, name);
      if (p == NULL) {
        std::terminate();
      }
      fnPtr = reinterpret_cast<std::remove_reference_t<decltype(fnPtr)>>(
        reinterpret_cast<void(*)()>(p));
    };

    init(NtCreateFile, "NtCreateFile");
    init(NtCancelIoFileEx, "NtCancelIoFileEx");
    init(NtReadFile, "NtReadFile");
    init(NtWriteFile, "NtWriteFile");
    init(NtSetIoCompletion, "NtSetIoCompletion");
    init(NtRemoveIoCompletion, "NtRemoveIoCompletion");
    init(NtRemoveIoCompletionEx, "NtRemoveIoCompletionEx");
    init(RtlNtStatusToDosError, "RtlNtStatusToDosError");
  }