ReactOS  0.4.15-dev-3203-gacde1e0
kdb_symbols.c
Go to the documentation of this file.
1 /*
2  * COPYRIGHT: See COPYING in the top level directory
3  * PROJECT: ReactOS kernel
4  * FILE: ntoskrnl/kdbg/kdb_symbols.c
5  * PURPOSE: Getting symbol information...
6  *
7  * PROGRAMMERS: David Welch (welch@cwcom.net)
8  * Colin Finck (colin@reactos.org)
9  */
10 
11 /* INCLUDES *****************************************************************/
12 
13 #include <ntoskrnl.h>
14 
15 #define NDEBUG
16 #include <debug.h>
17 
18 /* GLOBALS ******************************************************************/
19 
21 {
26 }
28 
33 
34 /* FUNCTIONS ****************************************************************/
35 
36 static
37 BOOLEAN
39  IN PLIST_ENTRY current_entry,
40  IN PLIST_ENTRY end_entry,
41  IN PLONG Count,
43  IN INT Index,
44  OUT PLDR_DATA_TABLE_ENTRY* pLdrEntry)
45 {
46  while (current_entry && current_entry != end_entry)
47  {
48  *pLdrEntry = CONTAINING_RECORD(current_entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
49 
50  if ((Address && Address >= (PVOID)(*pLdrEntry)->DllBase && Address < (PVOID)((ULONG_PTR)(*pLdrEntry)->DllBase + (*pLdrEntry)->SizeOfImage)) ||
51  (Index >= 0 && (*Count)++ == Index))
52  {
53  return TRUE;
54  }
55 
56  current_entry = current_entry->Flink;
57  }
58 
59  return FALSE;
60 }
61 
74 BOOLEAN
78  OUT PLDR_DATA_TABLE_ENTRY* pLdrEntry)
79 {
80  LONG Count = 0;
82 
83  /* First try to look up the module in the kernel module list. */
87  &Count,
88  Address,
89  Index,
90  pLdrEntry))
91  {
93  return TRUE;
94  }
96 
97  /* That didn't succeed. Try the module list of the current process now. */
99 
100  if(!CurrentProcess || !CurrentProcess->Peb || !CurrentProcess->Peb->Ldr)
101  return FALSE;
102 
103  return KdbpSymSearchModuleList(CurrentProcess->Peb->Ldr->InLoadOrderModuleList.Flink,
104  &CurrentProcess->Peb->Ldr->InLoadOrderModuleList,
105  &Count,
106  Address,
107  Index,
108  pLdrEntry);
109 }
110 
111 static
112 PCHAR
113 NTAPI
115  OUT PCHAR Ansi,
116  IN ULONG Length)
117 {
118  PCHAR p;
119  PWCHAR pw;
120  ULONG i;
121 
122  /* Set length and normalize it */
123  i = Unicode->Length / sizeof(WCHAR);
124  i = min(i, Length - 1);
125 
126  /* Set source and destination, and copy */
127  pw = Unicode->Buffer;
128  p = Ansi;
129  while (i--) *p++ = (CHAR)*pw++;
130 
131  /* Null terminate and return */
132  *p = ANSI_NULL;
133  return Ansi;
134 }
135 
147 BOOLEAN
149  IN PVOID Address,
151 {
152  PLDR_DATA_TABLE_ENTRY LdrEntry;
153  ULONG_PTR RelativeAddress;
154  BOOLEAN Printed = FALSE;
155  CHAR ModuleNameAnsi[64];
156 
157  if (!KdbpSymFindModule(Address, -1, &LdrEntry))
158  return FALSE;
159 
160  RelativeAddress = (ULONG_PTR)Address - (ULONG_PTR)LdrEntry->DllBase;
161 
163  ModuleNameAnsi,
164  sizeof(ModuleNameAnsi));
165 
166  if (LdrEntry->PatchInformation)
167  {
169  CHAR FileName[256];
170  CHAR FunctionName[256];
171 
173  {
174  STRING str;
175  /* Use KdpPrintString because KdpDprintf is limited wrt string size */
176  KdpDprintf("<%s:%x (", ModuleNameAnsi, RelativeAddress);
177  str.Buffer = FileName;
178  str.Length = strnlen(FileName, sizeof(FileName));
179  str.MaximumLength = sizeof(FileName);
181  KdpDprintf(":%d (%s))>", LineNumber, FunctionName);
182 
183  Printed = TRUE;
184  }
185  }
186 
187  if (!Printed)
188  {
189  /* Just print module & address */
190  KdpDprintf("<%s:%x>", ModuleNameAnsi, RelativeAddress);
191  }
192 
193  return TRUE;
194 }
195 
196 static KSTART_ROUTINE LoadSymbolsRoutine;
207 VOID
208 NTAPI
211 {
213 
214  while (TRUE)
215  {
216  PLIST_ENTRY ListEntry;
218  if (!NT_SUCCESS(Status))
219  {
220  DPRINT1("KeWaitForSingleObject failed?! 0x%08x\n", Status);
221  LoadSymbols = FALSE;
222  return;
223  }
224 
226  {
227  PLDR_DATA_TABLE_ENTRY LdrEntry = CONTAINING_RECORD(ListEntry, LDR_DATA_TABLE_ENTRY, InInitializationOrderLinks);
229  OBJECT_ATTRIBUTES Attrib;
232  DPRINT1("Trying %wZ\n", &LdrEntry->FullDllName);
235  &Attrib,
236  &Iosb,
239  if (!NT_SUCCESS(Status))
240  {
241  /* Try system paths */
242  static const UNICODE_STRING System32Dir = RTL_CONSTANT_STRING(L"\\SystemRoot\\system32\\");
243  UNICODE_STRING ImagePath;
244  WCHAR ImagePathBuffer[256];
245  RtlInitEmptyUnicodeString(&ImagePath, ImagePathBuffer, sizeof(ImagePathBuffer));
246  RtlCopyUnicodeString(&ImagePath, &System32Dir);
247  RtlAppendUnicodeStringToString(&ImagePath, &LdrEntry->BaseDllName);
249  DPRINT1("Trying %wZ\n", &ImagePath);
252  &Attrib,
253  &Iosb,
256  if (!NT_SUCCESS(Status))
257  {
258  static const UNICODE_STRING DriversDir= RTL_CONSTANT_STRING(L"\\SystemRoot\\system32\\drivers\\");
259 
260  RtlInitEmptyUnicodeString(&ImagePath, ImagePathBuffer, sizeof(ImagePathBuffer));
261  RtlCopyUnicodeString(&ImagePath, &DriversDir);
262  RtlAppendUnicodeStringToString(&ImagePath, &LdrEntry->BaseDllName);
264  DPRINT1("Trying %wZ\n", &ImagePath);
267  &Attrib,
268  &Iosb,
271  }
272  }
273 
274  if (!NT_SUCCESS(Status))
275  {
276  DPRINT1("Failed opening file %wZ (%wZ) for reading symbols (0x%08x)\n", &LdrEntry->FullDllName, &LdrEntry->BaseDllName, Status);
277  /* We took a ref previously */
278  MmUnloadSystemImage(LdrEntry);
279  continue;
280  }
281 
282  /* Hand it to Rossym */
284  LdrEntry->PatchInformation = NULL;
285 
286  /* We're done for this one. */
288  MmUnloadSystemImage(LdrEntry);
289  }
290  }
291 }
292 
297 VOID
300  _In_ BOOLEAN Load)
301 {
302  if (!LoadSymbols)
303  return;
304 
305  /* Check if this is unload */
306  if (!Load)
307  {
308  /* Did we process it */
309  if (LdrEntry->PatchInformation)
310  {
311  RosSymDelete(LdrEntry->PatchInformation);
312  LdrEntry->PatchInformation = NULL;
313  }
314  return;
315  }
316 
317  if (RosSymCreateFromMem(LdrEntry->DllBase, LdrEntry->SizeOfImage, (PROSSYM_INFO*)&LdrEntry->PatchInformation))
318  {
319  return;
320  }
321 
322  /* Add a ref until we really process it */
323  LdrEntry->LoadCount++;
324 
325  /* Tell our worker thread to read from it */
327  InsertTailList(&SymbolsToLoad, &LdrEntry->InInitializationOrderLinks);
329 
331 }
332 
333 VOID
334 NTAPI
336  PCH Message,
337  ULONG Length)
338 {
339  /* Nothing here */
340 }
341 
342 
348 VOID
349 NTAPI
351  PKD_DISPATCH_TABLE DispatchTable,
352  ULONG BootPhase)
353 {
354  PCHAR p1, p2;
355  SHORT Found = FALSE;
356  CHAR YesNo;
357 
358  DPRINT("KdbSymInit() BootPhase=%d\n", BootPhase);
359 
360  LoadSymbols = FALSE;
361 
362 #if DBG
363  /* Load symbols only if we have 96Mb of RAM or more */
364  if (MmNumberOfPhysicalPages >= 0x6000)
365  LoadSymbols = TRUE;
366 #endif
367 
368  if (BootPhase == 0)
369  {
370  /* Write out the functions that we support for now */
371  DispatchTable->KdpInitRoutine = KdpKdbgInit;
372  DispatchTable->KdpPrintRoutine = KdbDebugPrint;
373 
374  /* Register as a Provider */
375  InsertTailList(&KdProviders, &DispatchTable->KdProvidersList);
376 
377  /* Perform actual initialization of symbol module */
378  //NtoskrnlModuleObject->PatchInformation = NULL;
379  //LdrHalModuleObject->PatchInformation = NULL;
380 
381  /* Check the command line for /LOADSYMBOLS, /NOLOADSYMBOLS,
382  * /LOADSYMBOLS={YES|NO}, /NOLOADSYMBOLS={YES|NO} */
385  while('\0' != *p1 && NULL != (p2 = strchr(p1, '/')))
386  {
387  p2++;
388  Found = 0;
389  if (0 == _strnicmp(p2, "LOADSYMBOLS", 11))
390  {
391  Found = +1;
392  p2 += 11;
393  }
394  else if (0 == _strnicmp(p2, "NOLOADSYMBOLS", 13))
395  {
396  Found = -1;
397  p2 += 13;
398  }
399  if (0 != Found)
400  {
401  while (isspace(*p2))
402  {
403  p2++;
404  }
405  if ('=' == *p2)
406  {
407  p2++;
408  while (isspace(*p2))
409  {
410  p2++;
411  }
412  YesNo = toupper(*p2);
413  if ('N' == YesNo || 'F' == YesNo || '0' == YesNo)
414  {
415  Found = -1 * Found;
416  }
417  }
418  LoadSymbols = (0 < Found);
419  }
420  p1 = p2;
421  }
422  }
423  else if ((BootPhase == 1) && LoadSymbols)
424  {
425  HANDLE Thread;
427  KIRQL OldIrql;
428 
429  /* Launch our worker thread */
433 
435  if (!NT_SUCCESS(Status))
436  {
437  DPRINT1("Failed starting symbols loader thread: 0x%08x\n", Status);
438  LoadSymbols = FALSE;
439  return;
440  }
441 
443 
445 
447  while (ListEntry != &PsLoadedModuleList)
448  {
449  PLDR_DATA_TABLE_ENTRY LdrEntry = CONTAINING_RECORD(ListEntry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
450  KdbSymProcessSymbols(LdrEntry, TRUE);
451  ListEntry = ListEntry->Flink;
452  }
453 
455  }
456 }
457 
458 /* EOF */
#define FILE_READ_ACCESS
Definition: nt_native.h:610
signed char * PCHAR
Definition: retypes.h:7
#define IN
Definition: typedefs.h:39
#define isspace(c)
Definition: acclib.h:69
VOID RosSymInitKernelMode(VOID)
Definition: initkm.c:32
#define THREAD_ALL_ACCESS
Definition: nt_native.h:1339
VOID NTAPI KdpKdbgInit(PKD_DISPATCH_TABLE DispatchTable, ULONG BootPhase)
Definition: kdbg.c:21
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
#define _Inout_
Definition: ms_sal.h:378
struct _IMAGE_SYMBOL_INFO_CACHE * PIMAGE_SYMBOL_INFO_CACHE
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
BOOLEAN NTAPI KdpPrintString(_In_ PSTRING Output)
Definition: kdprint.c:22
VOID NTAPI KdbInitialize(PKD_DISPATCH_TABLE DispatchTable, ULONG BootPhase)
Initializes the KDB symbols implementation.
Definition: kdb_symbols.c:350
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
char CHAR
Definition: xmlstorage.h:175
BOOLEAN RosSymCreateFromMem(PVOID ImageStart, ULONG_PTR ImageSize, PROSSYM_INFO *RosSymInfo)
Definition: frommem.c:20
VOID NTAPI KeAcquireSpinLockAtDpcLevel(IN PKSPIN_LOCK SpinLock)
Definition: spinlock.c:198
VOID RosSymDelete(PROSSYM_INFO RosSymInfo)
Definition: delete.c:16
LONG NTSTATUS
Definition: precomp.h:26
BOOLEAN RosSymCreateFromFile(PVOID FileContext, PROSSYM_INFO *RosSymInfo)
Definition: fromfile.c:20
VOID NTAPI KeAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL OldIrql)
Definition: spinlock.c:50
static LIST_ENTRY SymbolsToLoad
Definition: kdb_symbols.c:30
static KSTART_ROUTINE LoadSymbolsRoutine
Definition: kdb_symbols.c:196
BOOLEAN KdbSymPrintAddress(IN PVOID Address, IN PCONTEXT Context)
Print address...
Definition: kdb_symbols.c:148
uint16_t * PWCHAR
Definition: typedefs.h:56
#define InsertTailList(ListHead, Entry)
LONG NTAPI KeSetEvent(IN PKEVENT Event, IN KPRIORITY Increment, IN BOOLEAN Wait)
Definition: eventobj.c:159
NTSTATUS NTAPI KeWaitForSingleObject(IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL)
Definition: wait.c:416
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
int32_t INT
Definition: typedefs.h:58
UNICODE_STRING FileName
Definition: kdb_symbols.c:24
#define FILE_SHARE_READ
Definition: compat.h:136
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
#define _Use_decl_annotations_
Definition: ms_sal.h:275
uint32_t ULONG_PTR
Definition: typedefs.h:65
PVOID DllBase
Definition: btrfs_drv.h:1926
UCHAR KIRQL
Definition: env_spec_w32.h:591
HANDLE FileHandle
Definition: stats.c:38
PLIST_ENTRY NTAPI ExInterlockedRemoveHeadList(IN OUT PLIST_ENTRY ListHead, IN OUT PKSPIN_LOCK Lock)
Definition: interlocked.c:166
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
KSPIN_LOCK PsLoadedModuleSpinLock
Definition: sysldr.c:36
#define FALSE
Definition: types.h:117
#define ANSI_NULL
long LONG
Definition: pedump.c:60
short SHORT
Definition: pedump.c:59
CHAR * PCH
Definition: ntbasedef.h:391
#define PsGetCurrentProcess
Definition: psfuncs.h:17
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
Definition: kefuncs.h:238
const WCHAR * str
struct _IMAGE_SYMBOL_INFO_CACHE IMAGE_SYMBOL_INFO_CACHE
unsigned char BOOLEAN
static WCHAR Address[46]
Definition: ping.c:68
#define _In_
Definition: ms_sal.h:308
VOID KdbSymProcessSymbols(_Inout_ PLDR_DATA_TABLE_ENTRY LdrEntry, _In_ BOOLEAN Load)
Load symbols from image mapping. If this fails,.
Definition: kdb_symbols.c:298
BOOLEAN RosSymGetAddressInformation(PROSSYM_INFO RosSymInfo, ULONG_PTR RelativeAddress, ULONG *LineNumber, char *FileName, char *FunctionName)
Definition: find.c:94
static PCHAR NTAPI KdbpSymUnicodeToAnsi(IN PUNICODE_STRING Unicode, OUT PCHAR Ansi, IN ULONG Length)
Definition: kdb_symbols.c:114
return Found
Definition: dirsup.c:1270
PLOADER_PARAMETER_BLOCK KeLoaderBlock
Definition: krnlinit.c:29
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
VOID NTAPI KdbDebugPrint(PCH Message, ULONG Length)
Definition: kdb_symbols.c:335
KIRQL OldIrql
Definition: mm.h:1502
NTSTATUS NTAPI MmUnloadSystemImage(IN PVOID ImageHandle)
Definition: sysldr.c:911
Status
Definition: gdiplustypes.h:24
PVOID PatchInformation
Definition: ldrtypes.h:164
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
int Count
Definition: noreturn.cpp:7
int toupper(int c)
Definition: utclib.c:881
ULONG CurrentProcess
Definition: shell.c:125
#define ASSERT(a)
Definition: mode.c:44
__wchar_t WCHAR
Definition: xmlstorage.h:180
return Iosb
Definition: create.c:4402
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
_In_ WDFCOLLECTION _In_ ULONG Index
LIST_ENTRY PsLoadedModuleList
Definition: sysldr.c:34
static KSPIN_LOCK SymbolsToLoadLock
Definition: kdb_symbols.c:31
VOID NTAPI KeReleaseSpinLockFromDpcLevel(IN PKSPIN_LOCK SpinLock)
Definition: spinlock.c:221
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
Definition: fltkernel.h:2652
#define _strnicmp(_String1, _String2, _MaxCount)
Definition: compat.h:23
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3398
CHAR Message[80]
Definition: alive.c:5
std::wstring STRING
Definition: fontsub.cpp:33
NTSYSAPI NTSTATUS NTAPI ZwOpenFile(_Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _Out_ PIO_STATUS_BLOCK IoStatusBlock, _In_ ULONG ShareAccess, _In_ ULONG OpenOptions)
static const WCHAR L[]
Definition: oid.c:1250
Definition: btrfs_drv.h:1922
Definition: typedefs.h:119
#define SYNCHRONIZE
Definition: nt_native.h:61
BOOLEAN KdbpSymFindModule(IN PVOID Address OPTIONAL, IN INT Index OPTIONAL, OUT PLDR_DATA_TABLE_ENTRY *pLdrEntry)
Find a module...
Definition: kdb_symbols.c:75
struct _FileName FileName
Definition: fatprocs.h:893
PFN_COUNT MmNumberOfPhysicalPages
Definition: init.c:48
#define KeInitializeEvent(pEvt, foo, foo2)
Definition: env_spec_w32.h:477
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 LineNumber
Definition: acpixf.h:1216
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
Definition: glfuncs.h:248
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
NTSTATUS NTAPI PsCreateSystemThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle, IN PCLIENT_ID ClientId, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext)
Definition: thread.c:602
UNICODE_STRING FullDllName
Definition: btrfs_drv.h:1928
UNICODE_STRING BaseDllName
Definition: ldrtypes.h:145
static BOOLEAN KdbpSymSearchModuleList(IN PLIST_ENTRY current_entry, IN PLIST_ENTRY end_entry, IN PLONG Count, IN PVOID Address, IN INT Index, OUT PLDR_DATA_TABLE_ENTRY *pLdrEntry)
Definition: kdb_symbols.c:38
#define min(a, b)
Definition: monoChain.cc:55
#define NULL
Definition: types.h:112
#define KeReleaseSpinLock(sl, irql)
Definition: env_spec_w32.h:627
PROSSYM_INFO RosSymInfo
Definition: kdb_symbols.c:25
char * strchr(const char *String, int ch)
Definition: utclib.c:501
#define DPRINT1
Definition: precomp.h:8
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char * FunctionName
Definition: acpixf.h:1274
#define FILE_SYNCHRONOUS_IO_NONALERT
Definition: from_kernel.h:31
#define OUT
Definition: typedefs.h:40
unsigned int ULONG
Definition: retypes.h:1
#define IO_NO_INCREMENT
Definition: iotypes.h:598
#define ULONG_PTR
Definition: config.h:101
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
static BOOLEAN LoadSymbols
Definition: kdb_symbols.c:29
GLfloat GLfloat p
Definition: glext.h:8902
#define DPRINT
Definition: sndvol32.h:71
static KEVENT SymbolsToLoadEvent
Definition: kdb_symbols.c:32
_In_ PWDFDEVICE_INIT _In_ PWDF_PDO_EVENT_CALLBACKS DispatchTable
Definition: wdfpdo.h:245
signed int * PLONG
Definition: retypes.h:5
#define CHAR(Char)
LIST_ENTRY KdProviders
Definition: kdio.c:49
#define KdpDprintf(...)
Definition: mmdbg.c:19
#define RTL_CONSTANT_STRING(s)
Definition: tunneltest.c:14
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68