27{
38
39
40
41
43 ListHead = &LoaderBlock->MemoryDescriptorListHead;
44 NextEntry = ListHead->
Flink;
45 while (NextEntry != ListHead)
46 {
47
48
49
52 ListEntry);
53
54
55
56
58
59
60
61
62 NextEntry = NextEntry->
Flink;
63 }
64
65
66
67
68 if (NextEntry == ListHead)
69 {
70
71
72
76 0,
77 0);
78 }
79
80
81
82
84 RamdiskCreate.
Version =
sizeof(RamdiskCreate);
89 RamdiskCreate.
DiskGuid = RAMDISK_BOOTDISK_GUID;
92
93
94
95
96 CommandLine = LoaderBlock->LoadOptions;
97 if (CommandLine)
98 {
99
100
101
103
104
105
106
109 {
110
111
112
114 if (OffsetValue)
115 {
116
117
118
120 }
121 }
122
123
124
125
127
128
129
130
133 {
134
135
136
138 if (LengthValue)
139 {
140
141
142
144 }
145 }
146 }
147
148
149
150
157
158
159
160
168 {
169
170
171
175 0,
176 0);
177 }
178
179
180
181
188 &RamdiskCreate,
189 sizeof(RamdiskCreate),
191 0);
194 {
195
196
197
201 0,
202 0);
203 }
204
205
206
207
210 {
211
212
213
217 0,
218 0);
219 }
220
221
222
223
226 L"\\Device\\Ramdisk%wZ",
231
232
233
234
239 {
240
241
242
246 0,
247 0);
248 }
249
250
251
252
253 {
258
267 {
271 0,
272 0);
273 }
275 }
276
277
278
279
280
282
283
284
285
287}
static NDIS_HANDLE DriverHandle
char * strstr(char *String1, char *String2)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define FILE_SYNCHRONOUS_IO_NONALERT
_Check_return_ long __cdecl atol(_In_z_ const char *_Str)
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID, PUNICODE_STRING)
_Check_return_ _ACRTIMP __int64 __cdecl _atoi64(_In_z_ char const *_String)
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
#define sprintf(buf, format,...)
static OUT PIO_STATUS_BLOCK IoStatusBlock
#define InitializeObjectAttributes(p, n, a, r, s)
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)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define RAMDISK_BOOT_DISK
#define FSCTL_CREATE_RAM_DISK
NTSYSAPI NTSTATUS NTAPI ZwDeviceIoControlFile(IN HANDLE DeviceHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE UserApcRoutine OPTIONAL, IN PVOID UserApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG IoControlCode, IN PVOID InputBuffer, IN ULONG InputBufferSize, OUT PVOID OutputBuffer, IN ULONG OutputBufferSize)
UNICODE_STRING NtSystemRoot
#define RD_NO_RAMDISK_DRIVER
#define RD_NO_XIPROM_DESCRIPTOR
#define RD_SYSROOT_INIT_FAILED
#define RD_GUID_CONVERT_FAILED
#define RD_SYMLINK_CREATE_FAILED
KEVENT PiEnumerationFinished
NTSTATUS NTAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
VOID NTAPI KeBugCheckEx(_In_ ULONG BugCheckCode, _In_ ULONG_PTR BugCheckParameter1, _In_ ULONG_PTR BugCheckParameter2, _In_ ULONG_PTR BugCheckParameter3, _In_ ULONG_PTR BugCheckParameter4)
struct _LIST_ENTRY * Flink
#define RTL_CONSTANT_STRING(s)
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING SymbolicLinkName
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _In_ PWDF_USB_CONTROL_SETUP_PACKET _In_opt_ PWDF_MEMORY_DESCRIPTOR MemoryDescriptor
_In_ PVOID _Out_opt_ PULONG_PTR _Outptr_opt_ PCUNICODE_STRING * ObjectName