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