16ae81428485020dd371eaefa5b97b24f21efe117klu/**@file
245a20a7fd8b12de926a87f6d7b121287354d63afklu
38f2a5f8012e3a6de30f5b12ce3a218efae9eaeddhhtianCopyright (c) 2006, Intel Corporation. All rights reserved.<BR>
48f2a5f8012e3a6de30f5b12ce3a218efae9eaeddhhtianThis program and the accompanying materials
545a20a7fd8b12de926a87f6d7b121287354d63afkluare licensed and made available under the terms and conditions of the BSD License
645a20a7fd8b12de926a87f6d7b121287354d63afkluwhich accompanies this distribution.  The full text of the license may be found at
745a20a7fd8b12de926a87f6d7b121287354d63afkluhttp://opensource.org/licenses/bsd-license.php
845a20a7fd8b12de926a87f6d7b121287354d63afklu
945a20a7fd8b12de926a87f6d7b121287354d63afkluTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
1045a20a7fd8b12de926a87f6d7b121287354d63afkluWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
1145a20a7fd8b12de926a87f6d7b121287354d63afklu
1245a20a7fd8b12de926a87f6d7b121287354d63afkluModule Name:
1345a20a7fd8b12de926a87f6d7b121287354d63afklu
1445a20a7fd8b12de926a87f6d7b121287354d63afklu  NtAutoscan.h
1545a20a7fd8b12de926a87f6d7b121287354d63afklu
1645a20a7fd8b12de926a87f6d7b121287354d63afkluAbstract:
1745a20a7fd8b12de926a87f6d7b121287354d63afklu
1845a20a7fd8b12de926a87f6d7b121287354d63afkluNt Autoscan PPI
1945a20a7fd8b12de926a87f6d7b121287354d63afklu
206ae81428485020dd371eaefa5b97b24f21efe117klu**/
2145a20a7fd8b12de926a87f6d7b121287354d63afklu
2245a20a7fd8b12de926a87f6d7b121287354d63afklu#ifndef __NT_PEI_AUTOSCAN_H__
2345a20a7fd8b12de926a87f6d7b121287354d63afklu#define __NT_PEI_AUTOSCAN_H__
2445a20a7fd8b12de926a87f6d7b121287354d63afklu
2545a20a7fd8b12de926a87f6d7b121287354d63afklu#include <WinNtDxe.h>
2645a20a7fd8b12de926a87f6d7b121287354d63afklu
2745a20a7fd8b12de926a87f6d7b121287354d63afklu#define PEI_NT_AUTOSCAN_PPI_GUID \
2845a20a7fd8b12de926a87f6d7b121287354d63afklu  { \
2945a20a7fd8b12de926a87f6d7b121287354d63afklu    0xdce384d, 0x7c, 0x4ba5, {0x94, 0xbd, 0xf, 0x6e, 0xb6, 0x4d, 0x2a, 0xa9 } \
3045a20a7fd8b12de926a87f6d7b121287354d63afklu  }
3145a20a7fd8b12de926a87f6d7b121287354d63afklu
3245a20a7fd8b12de926a87f6d7b121287354d63afklutypedef
3345a20a7fd8b12de926a87f6d7b121287354d63afkluEFI_STATUS
3445a20a7fd8b12de926a87f6d7b121287354d63afklu(EFIAPI *PEI_NT_AUTOSCAN) (
3545a20a7fd8b12de926a87f6d7b121287354d63afklu  IN  UINTN                 Index,
3645a20a7fd8b12de926a87f6d7b121287354d63afklu  OUT EFI_PHYSICAL_ADDRESS  * MemoryBase,
3745a20a7fd8b12de926a87f6d7b121287354d63afklu  OUT UINT64                *MemorySize
3845a20a7fd8b12de926a87f6d7b121287354d63afklu  );
3945a20a7fd8b12de926a87f6d7b121287354d63afklu
4045a20a7fd8b12de926a87f6d7b121287354d63afklu/*++
4145a20a7fd8b12de926a87f6d7b121287354d63afklu
4245a20a7fd8b12de926a87f6d7b121287354d63afkluRoutine Description:
4345a20a7fd8b12de926a87f6d7b121287354d63afklu  This service is called from Index == 0 until it returns EFI_UNSUPPORTED.
448aa9d680329cb9fa5c8e517727dd14eb4bebc408Gary Lin  It allows discontinuous memory regions to be supported by the emulator.
4545a20a7fd8b12de926a87f6d7b121287354d63afklu  It uses gSystemMemory[] and gSystemMemoryCount that were created by
4645a20a7fd8b12de926a87f6d7b121287354d63afklu  parsing the Windows environment variable EFI_MEMORY_SIZE.
4745a20a7fd8b12de926a87f6d7b121287354d63afklu  The size comes from the varaible and the address comes from the call to
4845a20a7fd8b12de926a87f6d7b121287354d63afklu  WinNtOpenFile.
4945a20a7fd8b12de926a87f6d7b121287354d63afklu
5045a20a7fd8b12de926a87f6d7b121287354d63afkluArguments:
5145a20a7fd8b12de926a87f6d7b121287354d63afklu  Index      - Which memory region to use
5245a20a7fd8b12de926a87f6d7b121287354d63afklu  MemoryBase - Return Base address of memory region
5345a20a7fd8b12de926a87f6d7b121287354d63afklu  MemorySize - Return size in bytes of the memory region
5445a20a7fd8b12de926a87f6d7b121287354d63afklu
5545a20a7fd8b12de926a87f6d7b121287354d63afkluReturns:
5645a20a7fd8b12de926a87f6d7b121287354d63afklu  EFI_SUCCESS - If memory region was mapped
5745a20a7fd8b12de926a87f6d7b121287354d63afklu  EFI_UNSUPPORTED - If Index is not supported
5845a20a7fd8b12de926a87f6d7b121287354d63afklu
5945a20a7fd8b12de926a87f6d7b121287354d63afklu--*/
6045a20a7fd8b12de926a87f6d7b121287354d63afklutypedef struct {
6145a20a7fd8b12de926a87f6d7b121287354d63afklu  PEI_NT_AUTOSCAN NtAutoScan;
6245a20a7fd8b12de926a87f6d7b121287354d63afklu} PEI_NT_AUTOSCAN_PPI;
6345a20a7fd8b12de926a87f6d7b121287354d63afklu
6445a20a7fd8b12de926a87f6d7b121287354d63afkluextern EFI_GUID gPeiNtAutoScanPpiGuid;
6545a20a7fd8b12de926a87f6d7b121287354d63afklu
6645a20a7fd8b12de926a87f6d7b121287354d63afklu#endif
67