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