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