#include <rtl.h>
#include <debug.h>
Go to the source code of this file.
◆ NDEBUG
◆ TAG_RTLDYNFNTBL
#define TAG_RTLDYNFNTBL 'tfDP' |
◆ DYNAMIC_FUNCTION_TABLE
◆ PDYNAMIC_FUNCTION_TABLE
◆ _Function_class_()
typedef _Function_class_ |
( |
GET_RUNTIME_FUNCTION_CALLBACK |
| ) |
|
Definition at line 16 of file dynfntbl.c.
34{
35 RF_SORTED = 0x0,
36 RF_UNSORTED = 0x1,
37 RF_CALLBACK = 0x2,
38 RF_KERNEL_DYNAMIC = 0x3,
◆ AcquireDynamicFunctionTableLockExclusive()
static __inline VOID AcquireDynamicFunctionTableLockExclusive |
( |
| ) |
|
|
static |
◆ AcquireDynamicFunctionTableLockShared()
static __inline VOID AcquireDynamicFunctionTableLockShared |
( |
| ) |
|
|
static |
◆ ReleaseDynamicFunctionTableLockExclusive()
static __inline VOID ReleaseDynamicFunctionTableLockExclusive |
( |
| ) |
|
|
static |
◆ ReleaseDynamicFunctionTableLockShared()
static __inline VOID ReleaseDynamicFunctionTableLockShared |
( |
| ) |
|
|
static |
◆ RtlAddFunctionTable()
Definition at line 122 of file dynfntbl.c.
126{
129
130
132 if (dynamicTable ==
NULL)
133 {
134 DPRINT1(
"Failed to allocate dynamic function table\n");
136 }
137
138
144 dynamicTable->
Type = RF_UNSORTED;
145
146
149 for (
i = 0;
i < EntryCount;
i++)
150 {
155 }
156
157
159
161}
static VOID RtlpInsertDynamicFunctionTable(PDYNAMIC_FUNCTION_TABLE DynamicTable)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
PVOID NTAPI RtlpAllocateMemory(_In_ ULONG Bytes, _In_ ULONG Tag)
PGET_RUNTIME_FUNCTION_CALLBACK Callback
PRUNTIME_FUNCTION FunctionTable
static WLX_DISPATCH_VERSION_1_4 FunctionTable
◆ RtlDeleteFunctionTable()
Definition at line 234 of file dynfntbl.c.
236{
240
242
243
246 listLink = listLink->
Flink)
247 {
249
251 {
254 break;
255 }
256 }
257
259
260
261 if (removed)
262 {
264 }
265
266 return removed;
267}
static __inline VOID ReleaseDynamicFunctionTableLockExclusive()
static __inline VOID AcquireDynamicFunctionTableLockExclusive()
LIST_ENTRY RtlpDynamicFunctionTableList
#define RemoveEntryList(Entry)
VOID NTAPI RtlpFreeMemory(_In_ PVOID Mem, _In_ ULONG Tag)
struct _LIST_ENTRY * Flink
#define CONTAINING_RECORD(address, type, field)
◆ RtlGetFunctionTableListHead()
◆ RtlInstallFunctionTableCallback()
Definition at line 165 of file dynfntbl.c.
172{
174 SIZE_T stringLength, allocationSize;
175
176
177 if ((TableIdentifier & 3) != 3)
178 {
180 }
181
182
183 if (OutOfProcessCallbackDll !=
NULL)
184 {
185 stringLength =
wcslen(OutOfProcessCallbackDll) + 1;
186 }
187 else
188 {
189 stringLength = 0;
190 }
191
192
194
195
197 if (dynamicTable ==
NULL)
198 {
199 DPRINT1(
"Failed to allocate dynamic function table\n");
201 }
202
203
209 dynamicTable->
Type = RF_CALLBACK;
212
213
214 if (OutOfProcessCallbackDll !=
NULL)
215 {
218 OutOfProcessCallbackDll,
219 stringLength *
sizeof(
WCHAR));
220 }
221 else
222 {
224 }
225
226
228
230}
struct _DYNAMIC_FUNCTION_TABLE DYNAMIC_FUNCTION_TABLE
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
_In_ ULONG _In_ ULONG _In_ ULONG Length
struct _RUNTIME_FUNCTION * PRUNTIME_FUNCTION
PWCHAR OutOfProcessCallbackDll
#define RtlCopyMemory(Destination, Source, Length)
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
◆ RtlpInsertDynamicFunctionTable()
◆ RtlpLookupDynamicFunctionEntry()
Definition at line 271 of file dynfntbl.c.
275{
279 PGET_RUNTIME_FUNCTION_CALLBACK
callback;
281
283
284
287 listLink = listLink->
Flink)
288 {
290
292 (ControlPc < dynamicTable->MaximumAddress))
293 {
294
297 {
299
303 }
304
305
308 {
309
310 if ((ControlPc >= functionTable[
i].BeginAddress) &&
311 (ControlPc < functionTable[
i].EndAddress))
312 {
313 foundEntry = &functionTable[
i];
316 }
317 }
318 }
319 }
320
322
324
325 return foundEntry;
326}
static __inline VOID AcquireDynamicFunctionTableLockShared()
static __inline VOID ReleaseDynamicFunctionTableLockShared()
static IPrintDialogCallback callback
Referenced by RtlLookupFunctionEntry().
◆ FUNCTION_TABLE_TYPE
◆ RtlpDynamicFunctionTableList
LIST_ENTRY RtlpDynamicFunctionTableList = { &RtlpDynamicFunctionTableList, &RtlpDynamicFunctionTableList } |
◆ RtlpDynamicFunctionTableLock