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