33{
35
36
37
39 {
41
42#if 0
44 {
45#endif
46 ListHead = &(
NtCurrentPeb()->Ldr->InLoadOrderModuleList);
47 Current = ListHead->
Flink;
48
49 while(Current != ListHead)
50 {
52
53
55
57 {
58 goto Failure;
59 }
60
62 }
63#if 0
64 }
66 {
68 }
69#endif
70 }
71 else
72 {
77
78
81 &BasicInformation,
82 sizeof(BasicInformation),
84
86 {
88 goto Failure;
89 }
90
91
94 &LoaderData,
95 sizeof(LoaderData),
97
99 {
101 goto Failure;
102 }
103
104
106
107
110 &Current,
111 sizeof(Current),
113
114 while(Current != ListHead)
115 {
116
119 &LoaderModule,
120 sizeof(LoaderModule),
122
124 {
126 goto Failure;
127 }
128
129
131
133 {
134 goto Failure;
135 }
136
137
139 }
140 }
141
143
144Failure:
146}
#define NT_SUCCESS(StatCode)
@ ProcessBasicInformation
#define EXCEPTION_EXECUTE_HANDLER
#define FAILED_WITH_STATUS
_In_ HANDLE ProcessHandle
#define NtCurrentProcess()
NTSTATUS NTAPI NtReadVirtualMemory(IN HANDLE ProcessHandle, IN PVOID BaseAddress, OUT PVOID Buffer, IN SIZE_T NumberOfBytesToRead, OUT PSIZE_T NumberOfBytesRead OPTIONAL)
NTSTATUS NTAPI NtQueryInformationProcess(_In_ HANDLE ProcessHandle, _In_ PROCESSINFOCLASS ProcessInformationClass, _Out_ PVOID ProcessInformation, _In_ ULONG ProcessInformationLength, _Out_opt_ PULONG ReturnLength)
LIST_ENTRY InLoadOrderLinks
struct _LIST_ENTRY * Flink
LIST_ENTRY InLoadOrderModuleList
#define CONTAINING_RECORD(address, type, field)
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR _In_ ULONGLONG _In_ ULONGLONG _In_opt_ PEVENT_FILTER_DESCRIPTOR _Inout_opt_ PVOID CallbackContext