tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

LoaderPrivateAPI.h (2096B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
      6 
      7 #ifndef mozilla_freestanding_LoaderPrivateAPI_h
      8 #define mozilla_freestanding_LoaderPrivateAPI_h
      9 
     10 #include "mozilla/LoaderAPIInterfaces.h"
     11 
     12 namespace mozilla {
     13 namespace freestanding {
     14 
     15 /**
     16 * This part of the API is available only to the launcher process.
     17 */
     18 class NS_NO_VTABLE LoaderPrivateAPI : public nt::LoaderAPI {
     19 public:
     20  /**
     21   * Notify the nt::LoaderObserver that a module load is beginning
     22   */
     23  virtual void NotifyBeginDllLoad(void** aContext,
     24                                  PCUNICODE_STRING aRequestedDllName) = 0;
     25  /**
     26   * Notify the nt::LoaderObserver that a module load is beginning and set the
     27   * begin load timestamp on |aModuleLoadInfo|.
     28   */
     29  virtual void NotifyBeginDllLoad(ModuleLoadInfo& aModuleLoadInfo,
     30                                  void** aContext,
     31                                  PCUNICODE_STRING aRequestedDllName) = 0;
     32 
     33  /**
     34   * Set a new nt::LoaderObserver to be used by the launcher process. NB: This
     35   * should only happen while the current process is still single-threaded!
     36   */
     37  virtual void SetObserver(nt::LoaderObserver* aNewObserver) = 0;
     38 
     39  /**
     40   * Returns true if the current nt::LoaderObserver is the launcher process's
     41   * built-in observer.
     42   */
     43  virtual bool IsDefaultObserver() const = 0;
     44 
     45  /**
     46   * Returns the name of a given mapped section address as a local instance of
     47   * nt::MemorySectionNameBuf.  This does not involve heap allocation.
     48   */
     49  virtual nt::MemorySectionNameBuf GetSectionNameBuffer(void* aSectionAddr) = 0;
     50 };
     51 
     52 /**
     53 * Ensures that any statics in the freestanding library are initialized.
     54 */
     55 void EnsureInitialized();
     56 
     57 extern LoaderPrivateAPI& gLoaderPrivateAPI;
     58 
     59 }  // namespace freestanding
     60 }  // namespace mozilla
     61 
     62 #endif  // mozilla_freestanding_LoaderPrivateAPI_h