From 869f8e34d23c1e197d1da3407aab966634d4f7ae Mon Sep 17 00:00:00 2001 From: klu2 Date: Tue, 26 Jun 2007 09:35:19 +0000 Subject: Success to build first Nt32 module. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2753 6f19259b-4bc3-4df7-8a09-765794883524 --- Nt32Pkg/WinNtThunkDxe/CommonHeader.h | 37 ++++++++++++++ Nt32Pkg/WinNtThunkDxe/WinNtThunk.c | 92 +++++++++++++++++++++++++++++++++ Nt32Pkg/WinNtThunkDxe/WinNtThunk.dxs | 31 ++++++++++++ Nt32Pkg/WinNtThunkDxe/WinNtThunk.h | 38 ++++++++++++++ Nt32Pkg/WinNtThunkDxe/WinNtThunk.inf | 98 ++++++++++++++++++++++++++++++++++++ Nt32Pkg/WinNtThunkDxe/WinNtThunk.msa | 62 +++++++++++++++++++++++ 6 files changed, 358 insertions(+) create mode 100644 Nt32Pkg/WinNtThunkDxe/CommonHeader.h create mode 100644 Nt32Pkg/WinNtThunkDxe/WinNtThunk.c create mode 100644 Nt32Pkg/WinNtThunkDxe/WinNtThunk.dxs create mode 100644 Nt32Pkg/WinNtThunkDxe/WinNtThunk.h create mode 100644 Nt32Pkg/WinNtThunkDxe/WinNtThunk.inf create mode 100644 Nt32Pkg/WinNtThunkDxe/WinNtThunk.msa (limited to 'Nt32Pkg/WinNtThunkDxe') diff --git a/Nt32Pkg/WinNtThunkDxe/CommonHeader.h b/Nt32Pkg/WinNtThunkDxe/CommonHeader.h new file mode 100644 index 0000000000..4faebd7ce6 --- /dev/null +++ b/Nt32Pkg/WinNtThunkDxe/CommonHeader.h @@ -0,0 +1,37 @@ +/**@file + Common header file shared by all source files. + + This file includes package header files, library classes and protocol, PPI & GUID definitions. + + Copyright (c) 2006 - 2007, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +**/ + +#ifndef __COMMON_HEADER_H_ +#define __COMMON_HEADER_H_ + + +// +// The package level header files this module uses +// +#include +#include +// +// The protocols, PPI and GUID defintions for this module +// +#include +#include +// +// The Library classes this module consumes +// +#include +#include +#include +#include + +#endif diff --git a/Nt32Pkg/WinNtThunkDxe/WinNtThunk.c b/Nt32Pkg/WinNtThunkDxe/WinNtThunk.c new file mode 100644 index 0000000000..b803e41d5a --- /dev/null +++ b/Nt32Pkg/WinNtThunkDxe/WinNtThunk.c @@ -0,0 +1,92 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + WinNtThunk.c + +Abstract: + + Produce WinNtThunk protocol and it's associated device path and controller + state protocols. WinNtThunk is to the NT emulation environment as + PCI_ROOT_BRIGE is to real hardware. The WinNtBusDriver is the child of this + driver. + + Since we are a root hardware abstraction we do not install a Driver Binding + protocol on this handle. This driver can only support one one WinNtThunk protocol + in the system, since the device path is hard coded. + +--*/ + +// +// Include common header file for this module. +// +#include "CommonHeader.h" + +#include "WinNtThunk.h" + +// +// WinNtThunk Device Path Protocol Instance +// +static WIN_NT_THUNK_DEVICE_PATH mWinNtThunkDevicePath = { + { + HARDWARE_DEVICE_PATH, + HW_VENDOR_DP, + (UINT8) (sizeof (VENDOR_DEVICE_PATH)), + (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8), + EFI_WIN_NT_THUNK_PROTOCOL_GUID, + }, + { + END_DEVICE_PATH_TYPE, + END_ENTIRE_DEVICE_PATH_SUBTYPE, + END_DEVICE_PATH_LENGTH, + 0 + } +}; + + +EFI_STATUS +EFIAPI +InitializeWinNtThunk ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +/*++ + +Routine Description: + Install WinNtThunk Protocol and it's associated Device Path protocol + +Arguments: + (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT) + +Returns: + EFI_SUCEESS - WinNtThunk protocol is added or error status from + gBS->InstallMultiProtocolInterfaces(). + +--*/ +// TODO: ImageHandle - add argument and description to function comment +// TODO: SystemTable - add argument and description to function comment +{ + EFI_STATUS Status; + EFI_HANDLE ControllerHandle; + + ControllerHandle = NULL; + Status = gBS->InstallMultipleProtocolInterfaces ( + &ControllerHandle, + &gEfiWinNtThunkProtocolGuid, + gWinNt, + &gEfiDevicePathProtocolGuid, + &mWinNtThunkDevicePath, + NULL + ); + + return Status; +} diff --git a/Nt32Pkg/WinNtThunkDxe/WinNtThunk.dxs b/Nt32Pkg/WinNtThunkDxe/WinNtThunk.dxs new file mode 100644 index 0000000000..162c341612 --- /dev/null +++ b/Nt32Pkg/WinNtThunkDxe/WinNtThunk.dxs @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + WinNtThunk.dxs + +Abstract: + + Dependency expression source file. + +--*/ + +// +// Include common header file for this module. +// +#include "CommonHeader.h" + +#include + +DEPENDENCY_START + TRUE +DEPENDENCY_END diff --git a/Nt32Pkg/WinNtThunkDxe/WinNtThunk.h b/Nt32Pkg/WinNtThunkDxe/WinNtThunk.h new file mode 100644 index 0000000000..e52e0e12a1 --- /dev/null +++ b/Nt32Pkg/WinNtThunkDxe/WinNtThunk.h @@ -0,0 +1,38 @@ +/*++ + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + WinNtThunk.h + +Abstract: + +--*/ + +// +// Include common header file for this module. +// +#include "CommonHeader.h" +#ifndef _WIN_NT_THUNK_H_ +#define _WIN_NT_THUNK_H_ + +// TODO: add protective #ifndef + + +// +// WinNtThunk Device Path Protocol Instance Type +// +typedef struct { + VENDOR_DEVICE_PATH Vendor; + EFI_DEVICE_PATH_PROTOCOL EndDevicePath; +} WIN_NT_THUNK_DEVICE_PATH; + +#endif \ No newline at end of file diff --git a/Nt32Pkg/WinNtThunkDxe/WinNtThunk.inf b/Nt32Pkg/WinNtThunkDxe/WinNtThunk.inf new file mode 100644 index 0000000000..a194d66293 --- /dev/null +++ b/Nt32Pkg/WinNtThunkDxe/WinNtThunk.inf @@ -0,0 +1,98 @@ +#/** @file +# A DXE driver to produce EFI_WIN_NT_THUNK_PROTOCOL +# +# EFI_WIN_NT_THUNK_PROTOCOL is a table of pointers to various Windows APIs used by various drivers to accomplish certain task in an NT32 emulator. +# Copyright (c) 2006 - 2007, Intel Corporation +# +# All rights reserved. This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# +#**/ + +################################################################################ +# +# Defines Section - statements that will be processed to create a Makefile. +# +################################################################################ +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = WinNtThunk + FILE_GUID = 0C95A916-A006-11d4-BCFA-0080C73C8881 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + EDK_RELEASE_VERSION = 0x00020000 + EFI_SPECIFICATION_VERSION = 0x00020000 + + ENTRY_POINT = InitializeWinNtThunk + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 +# + +################################################################################ +# +# Sources Section - list of files that are required for the build to succeed. +# +################################################################################ + +[Sources.common] + WinNtThunk.dxs + WinNtThunk.c + WinNtThunk.h + CommonHeader.h + + +################################################################################ +# +# Includes Section - list of Include locations that are required for +# this module. +# +################################################################################ + +[Includes] + $(WORKSPACE)/MdePkg/Include/Library + $(WORKSPACE)/Nt32Pkg/Include/Library + +################################################################################ +# +# Package Dependency Section - list of Package files that are required for +# this module. +# +################################################################################ + +[Packages] + MdePkg/MdePkg.dec + Nt32Pkg/Nt32Pkg.dec + +################################################################################ +# +# Library Class Section - list of Library Classes that are required for +# this module. +# +################################################################################ + +[LibraryClasses] + UefiBootServicesTableLib + WinNtLib + UefiDriverEntryPoint + DebugLib + + +################################################################################ +# +# Protocol C Name Section - list of Protocol and Protocol Notify C Names +# that this module uses or produces. +# +################################################################################ + +[Protocols] + gEfiDevicePathProtocolGuid # PROTOCOL ALWAYS_PRODUCED + gEfiWinNtThunkProtocolGuid # PROTOCOL ALWAYS_PRODUCED + diff --git a/Nt32Pkg/WinNtThunkDxe/WinNtThunk.msa b/Nt32Pkg/WinNtThunkDxe/WinNtThunk.msa new file mode 100644 index 0000000000..223f4e69d8 --- /dev/null +++ b/Nt32Pkg/WinNtThunkDxe/WinNtThunk.msa @@ -0,0 +1,62 @@ + + + + WinNtThunk + DXE_DRIVER + 0C95A916-A006-11d4-BCFA-0080C73C8881 + 1.0 + A DXE driver to produce EFI_WIN_NT_THUNK_PROTOCOL + EFI_WIN_NT_THUNK_PROTOCOL is a table of pointers to various Windows APIs used by various drivers to accomplish certain task in an NT32 emulator. + Copyright (c) 2006 - 2007, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052 + + + IA32 + false + WinNtThunk + + + + DebugLib + + + UefiDriverEntryPoint + + + WinNtLib + + + UefiBootServicesTableLib + + + + WinNtThunk.h + WinNtThunk.c + WinNtThunk.dxs + + + + + + + + gEfiWinNtThunkProtocolGuid + + + gEfiDevicePathProtocolGuid + + + + EFI_SPECIFICATION_VERSION 0x00020000 + EDK_RELEASE_VERSION 0x00020000 + + InitializeWinNtThunk + + + \ No newline at end of file -- cgit v1.2.3