]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/Sec/SecMain.h
Close all compiler's options for debug Sec
[mirror_edk2.git] / Nt32Pkg / Sec / SecMain.h
CommitLineData
2e19fd0f 1/*++\r
2\r
3Copyright (c) 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12\r
13Module Name:\r
14 SecMain.h\r
15\r
16Abstract:\r
17 Include file for Windows API based SEC\r
18\r
19--*/\r
20\r
21#include <stdio.h>\r
22#include <Base.h>\r
23#include <PiPei.h>\r
24#include <FrameworkPei.h>\r
25#include <WinNtPeim.h>\r
26#include <Library/BaseLib.h>\r
27#include <Library/PeCoffLib.h>\r
28#include <Guid/PeiPeCoffLoader.h>\r
29#include <Ppi/NtPeiLoadFile.h>\r
30#include <Ppi/NtAutoscan.h>\r
31#include <Ppi/NtThunk.h>\r
32#include <Ppi/StatusCode.h>\r
33#include <Ppi/NtFwh.h>\r
34#include <Library/PcdLib.h>\r
35#include <Library/DebugLib.h>\r
36#include <Library/PrintLib.h>\r
37#include <Library/BaseMemoryLib.h>\r
38\r
39#define STACK_SIZE 0x20000 \r
40\r
41typedef struct {\r
42 EFI_PHYSICAL_ADDRESS Address;\r
43 UINT64 Size;\r
44} NT_FD_INFO;\r
45\r
46#define NT_SYSTEM_MEMORY_FILENAME_SIZE 40\r
47\r
48typedef struct {\r
49 CHAR16 FileName[NT_SYSTEM_MEMORY_FILENAME_SIZE];\r
50 EFI_PHYSICAL_ADDRESS Memory;\r
51 UINT64 Size;\r
52} NT_SYSTEM_MEMORY;\r
53\r
54\r
55#define MAX_PDB_NAME_TO_MOD_HANDLE_ARRAY_SIZE 0x100\r
56\r
57typedef struct {\r
58 CHAR8 *PdbPointer;\r
59 VOID *ModHandle;\r
60} PDB_NAME_TO_MOD_HANDLE;\r
61\r
62\r
63\r
64\r
65EFI_STATUS\r
66EFIAPI\r
67SecWinNtPeiLoadFile (\r
68 VOID *Pe32Data, // TODO: add IN/OUT modifier to Pe32Data\r
69 EFI_PHYSICAL_ADDRESS *ImageAddress, // TODO: add IN/OUT modifier to ImageAddress\r
70 UINT64 *ImageSize, // TODO: add IN/OUT modifier to ImageSize\r
71 EFI_PHYSICAL_ADDRESS *EntryPoint // TODO: add IN/OUT modifier to EntryPoint\r
72 )\r
73/*++\r
74\r
75Routine Description:\r
76\r
77 TODO: Add function description\r
78\r
79Arguments:\r
80\r
81 Pe32Data - TODO: add argument description\r
82 ImageAddress - TODO: add argument description\r
83 ImageSize - TODO: add argument description\r
84 EntryPoint - TODO: add argument description\r
85\r
86Returns:\r
87\r
88 TODO: add return values\r
89\r
90--*/\r
91;\r
92\r
93EFI_STATUS\r
94EFIAPI\r
95SecWinNtPeiAutoScan (\r
96 IN UINTN Index,\r
97 OUT EFI_PHYSICAL_ADDRESS *MemoryBase,\r
98 OUT UINT64 *MemorySize\r
99 )\r
100/*++\r
101\r
102Routine Description:\r
103\r
104 TODO: Add function description\r
105\r
106Arguments:\r
107\r
108 Index - TODO: add argument description\r
109 MemoryBase - TODO: add argument description\r
110 MemorySize - TODO: add argument description\r
111\r
112Returns:\r
113\r
114 TODO: add return values\r
115\r
116--*/\r
117;\r
118\r
119VOID *\r
120EFIAPI\r
121SecWinNtWinNtThunkAddress (\r
122 VOID\r
123 )\r
124/*++\r
125\r
126Routine Description:\r
127\r
128 TODO: Add function description\r
129\r
130Arguments:\r
131\r
132 InterfaceSize - TODO: add argument description\r
133 InterfaceBase - TODO: add argument description\r
134\r
135Returns:\r
136\r
137 TODO: add return values\r
138\r
139--*/\r
140;\r
141\r
142EFI_STATUS\r
143EFIAPI\r
144SecWinNtWinNtFwhAddress (\r
145 IN OUT UINT64 *FwhSize,\r
146 IN OUT EFI_PHYSICAL_ADDRESS *FwhBase\r
147 )\r
148/*++\r
149\r
150Routine Description:\r
151\r
152 TODO: Add function description\r
153\r
154Arguments:\r
155\r
156 FwhSize - TODO: add argument description\r
157 FwhBase - TODO: add argument description\r
158\r
159Returns:\r
160\r
161 TODO: add return values\r
162\r
163--*/\r
164;\r
165\r
166EFI_STATUS\r
167EFIAPI\r
168SecPeiReportStatusCode (\r
169 IN EFI_PEI_SERVICES **PeiServices,\r
170 IN EFI_STATUS_CODE_TYPE CodeType,\r
171 IN EFI_STATUS_CODE_VALUE Value,\r
172 IN UINT32 Instance,\r
173 IN EFI_GUID * CallerId,\r
174 IN EFI_STATUS_CODE_DATA * Data OPTIONAL\r
175 )\r
176/*++\r
177\r
178Routine Description:\r
179\r
180 TODO: Add function description\r
181\r
182Arguments:\r
183\r
184 PeiServices - TODO: add argument description\r
185 CodeType - TODO: add argument description\r
186 Value - TODO: add argument description\r
187 Instance - TODO: add argument description\r
188 CallerId - TODO: add argument description\r
189 Data - TODO: add argument description\r
190\r
191Returns:\r
192\r
193 TODO: add return values\r
194\r
195--*/\r
196;\r
197\r
198INTN\r
199EFIAPI\r
200main (\r
201 IN INTN Argc,\r
202 IN CHAR8 **Argv,\r
203 IN CHAR8 **Envp\r
204 )\r
205/*++\r
206\r
207Routine Description:\r
208\r
209 TODO: Add function description\r
210\r
211Arguments:\r
212\r
213 Argc - TODO: add argument description\r
214 Argv - TODO: add argument description\r
215 Envp - TODO: add argument description\r
216\r
217Returns:\r
218\r
219 TODO: add return values\r
220\r
221--*/\r
222;\r
223\r
224EFI_STATUS\r
225WinNtOpenFile (\r
226 CHAR16 *FileName,\r
227 UINT32 MapSize,\r
228 DWORD CreationDispostion,\r
229 EFI_PHYSICAL_ADDRESS *BaseAddress,\r
230 UINT64 *Length\r
231 )\r
232/*++\r
233\r
234Routine Description:\r
235\r
236 TODO: Add function description\r
237\r
238Arguments:\r
239\r
240 FileName - TODO: add argument description\r
241 MapSize - TODO: add argument description\r
242 CreationDispostion - TODO: add argument description\r
243 BaseAddress - TODO: add argument description\r
244 Length - TODO: add argument description\r
245\r
246Returns:\r
247\r
248 TODO: add return values\r
249\r
250--*/\r
251;\r
252\r
253VOID\r
254SecLoadFromCore (\r
255 IN UINTN LargestRegion,\r
256 IN UINTN LargestRegionSize,\r
257 IN UINTN BootFirmwareVolumeBase,\r
258 IN VOID *PeiCoreFile\r
259 )\r
260/*++\r
261\r
262Routine Description:\r
263\r
264 TODO: Add function description\r
265\r
266Arguments:\r
267\r
268 LargestRegion - TODO: add argument description\r
269 LargestRegionSize - TODO: add argument description\r
270 BootFirmwareVolumeBase - TODO: add argument description\r
271 PeiCoreFile - TODO: add argument description\r
272\r
273Returns:\r
274\r
275 TODO: add return values\r
276\r
277--*/\r
278;\r
279\r
280EFI_STATUS\r
281SecLoadFile (\r
282 IN VOID *Pe32Data,\r
283 IN EFI_PHYSICAL_ADDRESS *ImageAddress,\r
284 IN UINT64 *ImageSize,\r
285 IN EFI_PHYSICAL_ADDRESS *EntryPoint\r
286 )\r
287/*++\r
288\r
289Routine Description:\r
290\r
291 TODO: Add function description\r
292\r
293Arguments:\r
294\r
295 Pe32Data - TODO: add argument description\r
296 ImageAddress - TODO: add argument description\r
297 ImageSize - TODO: add argument description\r
298 EntryPoint - TODO: add argument description\r
299\r
300Returns:\r
301\r
302 TODO: add return values\r
303\r
304--*/\r
305;\r
306\r
307EFI_STATUS\r
308SecFfsFindPeiCore (\r
309 IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
310 OUT VOID **Pe32Data\r
311 )\r
312/*++\r
313\r
314Routine Description:\r
315\r
316 TODO: Add function description\r
317\r
318Arguments:\r
319\r
320 FwVolHeader - TODO: add argument description\r
321 Pe32Data - TODO: add argument description\r
322\r
323Returns:\r
324\r
325 TODO: add return values\r
326\r
327--*/\r
328;\r
329\r
330EFI_STATUS\r
331SecFfsFindNextFile (\r
332 IN EFI_FV_FILETYPE SearchType,\r
333 IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
334 IN OUT EFI_FFS_FILE_HEADER **FileHeader\r
335 )\r
336/*++\r
337\r
338Routine Description:\r
339\r
340 TODO: Add function description\r
341\r
342Arguments:\r
343\r
344 SearchType - TODO: add argument description\r
345 FwVolHeader - TODO: add argument description\r
346 FileHeader - TODO: add argument description\r
347\r
348Returns:\r
349\r
350 TODO: add return values\r
351\r
352--*/\r
353;\r
354\r
355EFI_STATUS\r
356SecFfsFindSectionData (\r
357 IN EFI_SECTION_TYPE SectionType,\r
358 IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
359 IN OUT VOID **SectionData\r
360 )\r
361/*++\r
362\r
363Routine Description:\r
364\r
365 TODO: Add function description\r
366\r
367Arguments:\r
368\r
369 SectionType - TODO: add argument description\r
370 FfsFileHeader - TODO: add argument description\r
371 SectionData - TODO: add argument description\r
372\r
373Returns:\r
374\r
375 TODO: add return values\r
376\r
377--*/\r
378;\r
379\r
380EFI_STATUS\r
381EFIAPI\r
382SecWinNtPeCoffLoaderLoadAsDll (\r
383 IN CHAR8 *PdbFileName,\r
384 IN VOID **ImageEntryPoint,\r
385 OUT VOID **ModHandle\r
386 )\r
387/*++\r
388\r
389Routine Description:\r
390\r
391 TODO: Add function description\r
392\r
393Arguments:\r
394\r
395 PdbFileName - TODO: add argument description\r
396 ImageEntryPoint - TODO: add argument description\r
397 ModHandle - TODO: add argument description\r
398\r
399Returns:\r
400\r
401 TODO: add return values\r
402\r
403--*/\r
404;\r
405\r
406EFI_STATUS\r
407EFIAPI\r
408SecWinNtPeCoffLoaderFreeLibrary (\r
409 OUT VOID *ModHandle\r
410 )\r
411/*++\r
412\r
413Routine Description:\r
414\r
415 TODO: Add function description\r
416\r
417Arguments:\r
418\r
419 ModHandle - TODO: add argument description\r
420\r
421Returns:\r
422\r
423 TODO: add return values\r
424\r
425--*/\r
426;\r
427\r
428EFI_STATUS\r
429EFIAPI\r
430SecWinNtFdAddress (\r
431 IN UINTN Index,\r
432 IN OUT EFI_PHYSICAL_ADDRESS *FdBase,\r
433 IN OUT UINT64 *FdSize\r
434 )\r
435/*++\r
436\r
437Routine Description:\r
438\r
439 TODO: Add function description\r
440\r
441Arguments:\r
442\r
443 Index - TODO: add argument description\r
444 FdBase - TODO: add argument description\r
445 FdSize - TODO: add argument description\r
446\r
447Returns:\r
448\r
449 TODO: add return values\r
450\r
451--*/\r
452;\r
453\r
454EFI_STATUS\r
455GetImageReadFunction (\r
456 IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
457 IN EFI_PHYSICAL_ADDRESS *TopOfMemory\r
458 )\r
459/*++\r
460\r
461Routine Description:\r
462\r
463 TODO: Add function description\r
464\r
465Arguments:\r
466\r
467 ImageContext - TODO: add argument description\r
468 TopOfMemory - TODO: add argument description\r
469\r
470Returns:\r
471\r
472 TODO: add return values\r
473\r
474--*/\r
475;\r
476\r
477EFI_STATUS\r
478EFIAPI\r
479SecImageRead (\r
480 IN VOID *FileHandle,\r
481 IN UINTN FileOffset,\r
482 IN OUT UINTN *ReadSize,\r
483 OUT VOID *Buffer\r
484 )\r
485/*++\r
486\r
487Routine Description:\r
488\r
489 TODO: Add function description\r
490\r
491Arguments:\r
492\r
493 FileHandle - TODO: add argument description\r
494 FileOffset - TODO: add argument description\r
495 ReadSize - TODO: add argument description\r
496 Buffer - TODO: add argument description\r
497\r
498Returns:\r
499\r
500 TODO: add return values\r
501\r
502--*/\r
503;\r
504\r
505CHAR16 *\r
506AsciiToUnicode (\r
507 IN CHAR8 *Ascii,\r
508 IN UINTN *StrLen OPTIONAL\r
509 )\r
510/*++\r
511\r
512Routine Description:\r
513\r
514 TODO: Add function description\r
515\r
516Arguments:\r
517\r
518 Ascii - TODO: add argument description\r
519 StrLen - TODO: add argument description\r
520\r
521Returns:\r
522\r
523 TODO: add return values\r
524\r
525--*/\r
526;\r
527\r
528UINTN\r
529CountSeperatorsInString (\r
530 IN const CHAR16 *String,\r
531 IN CHAR16 Seperator\r
532 )\r
533/*++\r
534\r
535Routine Description:\r
536\r
537 TODO: Add function description\r
538\r
539Arguments:\r
540\r
541 String - TODO: add argument description\r
542 Seperator - TODO: add argument description\r
543\r
544Returns:\r
545\r
546 TODO: add return values\r
547\r
548--*/\r
549;\r
550\r
551EFI_STATUS\r
552EFIAPI\r
553SecNt32PeCoffGetImageInfo (\r
554 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,\r
555 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
556 );\r
557\r
558EFI_STATUS\r
559EFIAPI\r
560SecNt32PeCoffLoadImage (\r
561 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,\r
562 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
563 );\r
564\r
565EFI_STATUS\r
566EFIAPI\r
567SecNt32PeCoffRelocateImage (\r
568 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,\r
569 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
570 );\r
571\r
572EFI_STATUS\r
573EFIAPI\r
574SecNt32PeCoffUnloadimage (\r
575 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL *This,\r
576 IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
577 );\r
578\r
579\r
580typedef struct {\r
581 EFI_PEI_PE_COFF_LOADER_PROTOCOL PeCoff;\r
582 VOID *ModHandle;\r
583} EFI_PEI_PE_COFF_LOADER_PROTOCOL_INSTANCE;\r
584\r
585extern EFI_WIN_NT_THUNK_PROTOCOL *gWinNt;\r