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