3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. 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
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.
17 Include file for Windows API based SEC
25 #include <WinNtPeim.h>
26 #include <Library/BaseLib.h>
27 #include <Library/PeCoffLib.h>
28 #include <Guid/PeiPeCoffLoader.h>
29 #include <Ppi/NtPeiLoadFile.h>
30 #include <Ppi/NtAutoscan.h>
31 #include <Ppi/NtThunk.h>
32 #include <Ppi/StatusCode.h>
33 #include <Ppi/NtFwh.h>
34 #include <Ppi/TemporaryRamSupport.h>
35 #include <Library/PcdLib.h>
36 #include <Library/DebugLib.h>
37 #include <Library/PrintLib.h>
38 #include <Library/BaseMemoryLib.h>
39 #include <Library/ReportStatusCodeLib.h>
41 #include <IndustryStandard/PeImage.h>
44 #define STACK_SIZE 0x20000
47 EFI_PHYSICAL_ADDRESS Address
;
52 EFI_PHYSICAL_ADDRESS Memory
;
56 #define MAX_PDB_NAME_TO_MOD_HANDLE_ARRAY_SIZE 0x100
61 } PDB_NAME_TO_MOD_HANDLE
;
69 VOID
*Pe32Data
, // TODO: add IN/OUT modifier to Pe32Data
70 EFI_PHYSICAL_ADDRESS
*ImageAddress
, // TODO: add IN/OUT modifier to ImageAddress
71 UINT64
*ImageSize
, // TODO: add IN/OUT modifier to ImageSize
72 EFI_PHYSICAL_ADDRESS
*EntryPoint
// TODO: add IN/OUT modifier to EntryPoint
78 TODO: Add function description
82 Pe32Data - TODO: add argument description
83 ImageAddress - TODO: add argument description
84 ImageSize - TODO: add argument description
85 EntryPoint - TODO: add argument description
89 TODO: add return values
98 OUT EFI_PHYSICAL_ADDRESS
*MemoryBase
,
99 OUT UINT64
*MemorySize
105 TODO: Add function description
109 Index - TODO: add argument description
110 MemoryBase - TODO: add argument description
111 MemorySize - TODO: add argument description
115 TODO: add return values
122 SecWinNtWinNtThunkAddress (
129 TODO: Add function description
133 InterfaceSize - TODO: add argument description
134 InterfaceBase - TODO: add argument description
138 TODO: add return values
145 SecWinNtWinNtFwhAddress (
146 IN OUT UINT64
*FwhSize
,
147 IN OUT EFI_PHYSICAL_ADDRESS
*FwhBase
153 TODO: Add function description
157 FwhSize - TODO: add argument description
158 FwhBase - TODO: add argument description
162 TODO: add return values
169 SecPeiReportStatusCode (
170 IN CONST EFI_PEI_SERVICES
**PeiServices
,
171 IN EFI_STATUS_CODE_TYPE CodeType
,
172 IN EFI_STATUS_CODE_VALUE Value
,
174 IN CONST EFI_GUID
* CallerId
,
175 IN CONST EFI_STATUS_CODE_DATA
* Data OPTIONAL
181 TODO: Add function description
185 PeiServices - TODO: add argument description
186 CodeType - TODO: add argument description
187 Value - TODO: add argument description
188 Instance - TODO: add argument description
189 CallerId - TODO: add argument description
190 Data - TODO: add argument description
194 TODO: add return values
210 TODO: Add function description
214 Argc - TODO: add argument description
215 Argv - TODO: add argument description
216 Envp - TODO: add argument description
220 TODO: add return values
229 DWORD CreationDispostion
,
230 EFI_PHYSICAL_ADDRESS
*BaseAddress
,
237 TODO: Add function description
241 FileName - TODO: add argument description
242 MapSize - TODO: add argument description
243 CreationDispostion - TODO: add argument description
244 BaseAddress - TODO: add argument description
245 Length - TODO: add argument description
249 TODO: add return values
256 IN UINTN LargestRegion
,
257 IN UINTN LargestRegionSize
,
258 IN UINTN BootFirmwareVolumeBase
,
265 TODO: Add function description
269 LargestRegion - TODO: add argument description
270 LargestRegionSize - TODO: add argument description
271 BootFirmwareVolumeBase - TODO: add argument description
272 PeiCoreFile - TODO: add argument description
276 TODO: add return values
284 IN EFI_PHYSICAL_ADDRESS
*ImageAddress
,
285 IN UINT64
*ImageSize
,
286 IN EFI_PHYSICAL_ADDRESS
*EntryPoint
292 TODO: Add function description
296 Pe32Data - TODO: add argument description
297 ImageAddress - TODO: add argument description
298 ImageSize - TODO: add argument description
299 EntryPoint - TODO: add argument description
303 TODO: add return values
310 IN EFI_FIRMWARE_VOLUME_HEADER
*FwVolHeader
,
317 TODO: Add function description
321 FwVolHeader - TODO: add argument description
322 Pe32Data - TODO: add argument description
326 TODO: add return values
333 IN EFI_FV_FILETYPE SearchType
,
334 IN EFI_FIRMWARE_VOLUME_HEADER
*FwVolHeader
,
335 IN OUT EFI_FFS_FILE_HEADER
**FileHeader
341 TODO: Add function description
345 SearchType - TODO: add argument description
346 FwVolHeader - TODO: add argument description
347 FileHeader - TODO: add argument description
351 TODO: add return values
357 SecFfsFindSectionData (
358 IN EFI_SECTION_TYPE SectionType
,
359 IN EFI_FFS_FILE_HEADER
*FfsFileHeader
,
360 IN OUT VOID
**SectionData
366 TODO: Add function description
370 SectionType - TODO: add argument description
371 FfsFileHeader - TODO: add argument description
372 SectionData - TODO: add argument description
376 TODO: add return values
383 SecWinNtPeCoffLoaderLoadAsDll (
384 IN CHAR8
*PdbFileName
,
385 IN VOID
**ImageEntryPoint
,
392 TODO: Add function description
396 PdbFileName - TODO: add argument description
397 ImageEntryPoint - TODO: add argument description
398 ModHandle - TODO: add argument description
402 TODO: add return values
409 SecWinNtPeCoffLoaderFreeLibrary (
416 TODO: Add function description
420 ModHandle - TODO: add argument description
424 TODO: add return values
433 IN OUT EFI_PHYSICAL_ADDRESS
*FdBase
,
434 IN OUT UINT64
*FdSize
440 TODO: Add function description
444 Index - TODO: add argument description
445 FdBase - TODO: add argument description
446 FdSize - TODO: add argument description
450 TODO: add return values
456 GetImageReadFunction (
457 IN PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
,
458 IN EFI_PHYSICAL_ADDRESS
*TopOfMemory
464 TODO: Add function description
468 ImageContext - TODO: add argument description
469 TopOfMemory - TODO: add argument description
473 TODO: add return values
483 IN OUT UINTN
*ReadSize
,
490 TODO: Add function description
494 FileHandle - TODO: add argument description
495 FileOffset - TODO: add argument description
496 ReadSize - TODO: add argument description
497 Buffer - TODO: add argument description
501 TODO: add return values
509 IN UINTN
*StrLen OPTIONAL
515 TODO: Add function description
519 Ascii - TODO: add argument description
520 StrLen - TODO: add argument description
524 TODO: add return values
530 CountSeperatorsInString (
531 IN
const CHAR16
*String
,
538 TODO: Add function description
542 String - TODO: add argument description
543 Seperator - TODO: add argument description
547 TODO: add return values
554 SecNt32PeCoffGetImageInfo (
555 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
556 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
561 SecNt32PeCoffLoadImage (
562 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
563 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
568 SecNt32PeCoffRelocateImage (
569 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
570 IN OUT PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
575 SecNt32PeCoffUnloadimage (
576 IN EFI_PEI_PE_COFF_LOADER_PROTOCOL
*This
,
577 IN PE_COFF_LOADER_IMAGE_CONTEXT
*ImageContext
582 SecTemporaryRamSupport (
583 IN CONST EFI_PEI_SERVICES
**PeiServices
,
584 IN EFI_PHYSICAL_ADDRESS TemporaryMemoryBase
,
585 IN EFI_PHYSICAL_ADDRESS PermanentMemoryBase
,
590 EFI_PEI_PE_COFF_LOADER_PROTOCOL PeCoff
;
592 } EFI_PEI_PE_COFF_LOADER_PROTOCOL_INSTANCE
;
594 extern EFI_WIN_NT_THUNK_PROTOCOL
*gWinNt
;