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