-/** @file
-
-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.
-
-Module Name:
-
- SnpNt32.h
-
-Abstract:
-
--**/
-
-#ifndef _SNP_NT32_H_
-#define _SNP_NT32_H_
-\r
-#include <PiDxe.h>\r
+/** @file\r
+\r
+Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution. The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+Module Name:\r
+\r
+ SnpNt32.h\r
+\r
+Abstract:\r
+\r
+-**/\r
+\r
+#ifndef _SNP_NT32_H_\r
+#define _SNP_NT32_H_\r
+\r
+#include <Uefi.h>\r
\r
#include <Protocol/SimpleNetwork.h>\r
-#include <Protocol/DevicePath.h>
+#include <Protocol/DevicePath.h>\r
#include <Protocol/WinNtThunk.h>\r
-
+\r
#include <Library/BaseLib.h>\r
#include <Library/DebugLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
#include <Library/UefiLib.h>\r
-#include <Library/DevicePathLib.h>
-#include <Library/NetLib.h>
-#include <Library/MemoryAllocationLib.h>
-
-typedef struct _SNPNT32_GLOBAL_DATA SNPNT32_GLOBAL_DATA;
-typedef struct _SNPNT32_INSTANCE_DATA SNPNT32_INSTANCE_DATA;
-
-#define NETWORK_LIBRARY_NAME_U L"SnpNt32Io.dll"
-
-#define NETWORK_LIBRARY_INITIALIZE "SnpInitialize"
-#define NETWORK_LIBRARY_FINALIZE "SnpFinalize"
-#define NETWORK_LIBRARY_SET_RCV_FILTER "SnpSetReceiveFilter"
-#define NETWORK_LIBRARY_RECEIVE "SnpReceive"
-#define NETWORK_LIBRARY_TRANSMIT "SnpTransmit"
-
-#pragma pack(1)
-typedef struct _NT_NET_INTERFACE_INFO {
- UINT32 InterfaceIndex;
- EFI_MAC_ADDRESS MacAddr;
-} NT_NET_INTERFACE_INFO;
-#pragma pack()
-
-#define NET_ETHER_HEADER_SIZE 14
-
-#define MAX_INTERFACE_INFO_NUMBER 16
-#define MAX_FILE_NAME_LENGTH 280
-
-//
-// Functions in Net Library
-//
-typedef
-INT32
-(*NT_NET_INITIALIZE) (
- IN OUT UINT32 *InterfaceCount,
- IN OUT NT_NET_INTERFACE_INFO * InterfaceInfoBuffer
- );
-
-typedef
-INT32
-(*NT_NET_FINALIZE) (
- VOID
- );
-
-typedef
-INT32
-(*NT_NET_SET_RECEIVE_FILTER) (
- IN UINT32 Index,
- IN UINT32 EnableFilter,
- IN UINT32 MCastFilterCnt,
- IN EFI_MAC_ADDRESS * MCastFilter
- );
-
-typedef
-INT32
-(*NT_NET_RECEIVE) (
- IN UINT32 Index,
- IN OUT UINT32 *BufferSize,
- OUT VOID *Buffer
- );
-
-typedef
-INT32
-(*NT_NET_TRANSMIT) (
- IN UINT32 Index,
- IN UINT32 HeaderSize,
- IN UINT32 BufferSize,
- IN VOID *Buffer,
- IN EFI_MAC_ADDRESS * SrcAddr,
- IN EFI_MAC_ADDRESS * DestAddr,
- IN UINT16 *Protocol
- );
-
-typedef struct _NT_NET_UTILITY_TABLE {
- NT_NET_INITIALIZE Initialize;
- NT_NET_FINALIZE Finalize;
- NT_NET_SET_RECEIVE_FILTER SetReceiveFilter;
- NT_NET_RECEIVE Receive;
- NT_NET_TRANSMIT Transmit;
-} NT_NET_UTILITY_TABLE;
-
-//
-// Private functions
-//
-typedef
-EFI_STATUS
-(*SNPNT32_INITIALIZE_GLOBAL_DATA) (
- IN SNPNT32_GLOBAL_DATA * This
- );
-
-typedef
-EFI_STATUS
-(*SNPNT32_INITIALIZE_INSTANCE_DATA) (
- IN SNPNT32_GLOBAL_DATA * This,
- IN SNPNT32_INSTANCE_DATA * Instance
- );
-
-typedef
-EFI_STATUS
-(*SNPNT32_CLOSE_INSTANCE) (
- IN SNPNT32_GLOBAL_DATA * This,
- IN SNPNT32_INSTANCE_DATA * Instance
- );
-
-//
-// Global data for this driver
-//
-#define SNP_NT32_DRIVER_SIGNATURE EFI_SIGNATURE_32 ('W', 'S', 'N', 'P')
-
-typedef struct _SNPNT32_GLOBAL_DATA {
- UINT32 Signature;
-
- //
- // List for all the fake SNP instance
- //
- NET_LIST_ENTRY InstanceList;
-
- EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk;
- HMODULE NetworkLibraryHandle;
-
- NT_NET_UTILITY_TABLE NtNetUtilityTable;
-
- NET_LOCK Lock;
-
- //
- // Private functions
- //
- SNPNT32_INITIALIZE_GLOBAL_DATA InitializeGlobalData;
- SNPNT32_INITIALIZE_INSTANCE_DATA InitializeInstanceData;
- SNPNT32_CLOSE_INSTANCE CloseInstance;
-} SNPNT32_GLOBAL_DATA;
-
-//
-// Instance data for each fake SNP instance
-//
-#define SNP_NT32_INSTANCE_SIGNATURE EFI_SIGNATURE_32 ('w', 'S', 'N', 'P')
-
-typedef struct _SNPNT32_INSTANCE_DATA {
- UINT32 Signature;
-
- //
- // List entry use for linking with other instance
- //
- NET_LIST_ENTRY Entry;
-
- SNPNT32_GLOBAL_DATA *GlobalData;
-
- EFI_HANDLE DeviceHandle;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
-
- EFI_SIMPLE_NETWORK_PROTOCOL Snp;
- EFI_SIMPLE_NETWORK_MODE Mode;
-
- NT_NET_INTERFACE_INFO InterfaceInfo;
-
- //
- // Private functions
- //
-} SNPNT32_INSTANCE_DATA;
-
-#define SNP_NT32_INSTANCE_DATA_FROM_SNP_THIS(a) \
- CR ( \
- a, \
- SNPNT32_INSTANCE_DATA, \
- Snp, \
- SNP_NT32_INSTANCE_SIGNATURE \
- )
-
-extern EFI_DRIVER_BINDING_PROTOCOL gSnpNt32DriverBinding;
-extern EFI_COMPONENT_NAME_PROTOCOL gSnpNt32DriverComponentName;
-
-EFI_STATUS
-EFIAPI
-SnpNt32DriverBindingSupported (
- IN EFI_DRIVER_BINDING_PROTOCOL * This,
- IN EFI_HANDLE ControllerHandle,
- IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
- );
-
-EFI_STATUS
-EFIAPI
-SnpNt32DriverBindingStart (
- IN EFI_DRIVER_BINDING_PROTOCOL * This,
- IN EFI_HANDLE ControllerHandle,
- IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL
- );
-
-EFI_STATUS
-EFIAPI
-SnpNt32DriverBindingStop (
- IN EFI_DRIVER_BINDING_PROTOCOL *This,
- IN EFI_HANDLE ControllerHandle,
- IN UINTN NumberOfChildren,
- IN EFI_HANDLE *ChildHandleBuffer
- );
-
-EFI_STATUS
-SnpNt32InitializeGlobalData (
- IN SNPNT32_GLOBAL_DATA *This
- );
-
-EFI_STATUS
-SnpNt32InitializeInstanceData (
- IN SNPNT32_GLOBAL_DATA *This,
- IN SNPNT32_INSTANCE_DATA *Instance
- );
-
-EFI_STATUS
-SnpNt32CloseInstance (
- IN SNPNT32_GLOBAL_DATA *This,
- IN SNPNT32_INSTANCE_DATA *Instance
- );
-
-#endif
+#include <Library/DevicePathLib.h>\r
+#include <Library/NetLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
+\r
+typedef struct _SNPNT32_GLOBAL_DATA SNPNT32_GLOBAL_DATA;\r
+typedef struct _SNPNT32_INSTANCE_DATA SNPNT32_INSTANCE_DATA;\r
+\r
+#define NETWORK_LIBRARY_NAME_U L"SnpNt32Io.dll"\r
+\r
+#define NETWORK_LIBRARY_INITIALIZE "SnpInitialize"\r
+#define NETWORK_LIBRARY_FINALIZE "SnpFinalize"\r
+#define NETWORK_LIBRARY_SET_RCV_FILTER "SnpSetReceiveFilter"\r
+#define NETWORK_LIBRARY_RECEIVE "SnpReceive"\r
+#define NETWORK_LIBRARY_TRANSMIT "SnpTransmit"\r
+\r
+#pragma pack(1)\r
+typedef struct _NT_NET_INTERFACE_INFO {\r
+ UINT32 InterfaceIndex;\r
+ EFI_MAC_ADDRESS MacAddr;\r
+} NT_NET_INTERFACE_INFO;\r
+#pragma pack()\r
+\r
+#define NET_ETHER_HEADER_SIZE 14\r
+\r
+#define MAX_INTERFACE_INFO_NUMBER 16\r
+#define MAX_FILE_NAME_LENGTH 280\r
+\r
+//\r
+// Functions in Net Library\r
+//\r
+typedef\r
+INT32\r
+(*NT_NET_INITIALIZE) (\r
+ IN OUT UINT32 *InterfaceCount,\r
+ IN OUT NT_NET_INTERFACE_INFO * InterfaceInfoBuffer\r
+ );\r
+\r
+typedef\r
+INT32\r
+(*NT_NET_FINALIZE) (\r
+ VOID\r
+ );\r
+\r
+typedef\r
+INT32\r
+(*NT_NET_SET_RECEIVE_FILTER) (\r
+ IN UINT32 Index,\r
+ IN UINT32 EnableFilter,\r
+ IN UINT32 MCastFilterCnt,\r
+ IN EFI_MAC_ADDRESS * MCastFilter\r
+ );\r
+\r
+typedef\r
+INT32\r
+(*NT_NET_RECEIVE) (\r
+ IN UINT32 Index,\r
+ IN OUT UINT32 *BufferSize,\r
+ OUT VOID *Buffer\r
+ );\r
+\r
+typedef\r
+INT32\r
+(*NT_NET_TRANSMIT) (\r
+ IN UINT32 Index,\r
+ IN UINT32 HeaderSize,\r
+ IN UINT32 BufferSize,\r
+ IN VOID *Buffer,\r
+ IN EFI_MAC_ADDRESS * SrcAddr,\r
+ IN EFI_MAC_ADDRESS * DestAddr,\r
+ IN UINT16 *Protocol\r
+ );\r
+\r
+typedef struct _NT_NET_UTILITY_TABLE {\r
+ NT_NET_INITIALIZE Initialize;\r
+ NT_NET_FINALIZE Finalize;\r
+ NT_NET_SET_RECEIVE_FILTER SetReceiveFilter;\r
+ NT_NET_RECEIVE Receive;\r
+ NT_NET_TRANSMIT Transmit;\r
+} NT_NET_UTILITY_TABLE;\r
+\r
+//\r
+// Private functions\r
+//\r
+typedef\r
+EFI_STATUS\r
+(*SNPNT32_INITIALIZE_GLOBAL_DATA) (\r
+ IN SNPNT32_GLOBAL_DATA * This\r
+ );\r
+\r
+typedef\r
+EFI_STATUS\r
+(*SNPNT32_INITIALIZE_INSTANCE_DATA) (\r
+ IN SNPNT32_GLOBAL_DATA * This,\r
+ IN SNPNT32_INSTANCE_DATA * Instance\r
+ );\r
+\r
+typedef\r
+EFI_STATUS\r
+(*SNPNT32_CLOSE_INSTANCE) (\r
+ IN SNPNT32_GLOBAL_DATA * This,\r
+ IN SNPNT32_INSTANCE_DATA * Instance\r
+ );\r
+\r
+//\r
+// Global data for this driver\r
+//\r
+#define SNP_NT32_DRIVER_SIGNATURE SIGNATURE_32 ('W', 'S', 'N', 'P')\r
+\r
+struct _SNPNT32_GLOBAL_DATA {\r
+ UINT32 Signature;\r
+\r
+ //\r
+ // List for all the fake SNP instance\r
+ //\r
+ LIST_ENTRY InstanceList;\r
+\r
+ EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk;\r
+ HMODULE NetworkLibraryHandle;\r
+\r
+ NT_NET_UTILITY_TABLE NtNetUtilityTable;\r
+\r
+ EFI_LOCK Lock;\r
+\r
+ //\r
+ // Private functions\r
+ //\r
+ SNPNT32_INITIALIZE_GLOBAL_DATA InitializeGlobalData;\r
+ SNPNT32_INITIALIZE_INSTANCE_DATA InitializeInstanceData;\r
+ SNPNT32_CLOSE_INSTANCE CloseInstance;\r
+};\r
+\r
+//\r
+// Instance data for each fake SNP instance\r
+//\r
+#define SNP_NT32_INSTANCE_SIGNATURE SIGNATURE_32 ('w', 'S', 'N', 'P')\r
+\r
+struct _SNPNT32_INSTANCE_DATA {\r
+ UINT32 Signature;\r
+\r
+ //\r
+ // List entry use for linking with other instance\r
+ //\r
+ LIST_ENTRY Entry;\r
+\r
+ SNPNT32_GLOBAL_DATA *GlobalData;\r
+\r
+ EFI_HANDLE DeviceHandle;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+\r
+ EFI_SIMPLE_NETWORK_PROTOCOL Snp;\r
+ EFI_SIMPLE_NETWORK_MODE Mode;\r
+\r
+ NT_NET_INTERFACE_INFO InterfaceInfo;\r
+\r
+ //\r
+ // Private functions\r
+ //\r
+};\r
+\r
+#define SNP_NT32_INSTANCE_DATA_FROM_SNP_THIS(a) \\r
+ CR ( \\r
+ a, \\r
+ SNPNT32_INSTANCE_DATA, \\r
+ Snp, \\r
+ SNP_NT32_INSTANCE_SIGNATURE \\r
+ )\r
+\r
+extern EFI_DRIVER_BINDING_PROTOCOL gSnpNt32DriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL gSnpNt32DriverComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL gSnpNt32DriverComponentName2;\r
+\r
+/**\r
+ Test to see if this driver supports ControllerHandle. This service\r
+ is called by the EFI boot service ConnectController(). In\r
+ order to make drivers as small as possible, there are a few calling\r
+ restrictions for this service. ConnectController() must\r
+ follow these calling restrictions. If any other agent wishes to call\r
+ Supported() it must also follow these calling restrictions.\r
+\r
+ @param This Protocol instance pointer.\r
+ @param ControllerHandle Handle of device to test\r
+ @param RemainingDevicePath Optional parameter use to pick a specific child\r
+ device to start.\r
+\r
+ @retval EFI_SUCCESS This driver supports this device\r
+ @retval EFI_UNSUPPORTED This driver does not support this device\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SnpNt32DriverBindingSupported (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL * This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL\r
+ );\r
+\r
+/**\r
+ Start this driver on ControllerHandle. This service is called by the\r
+ EFI boot service ConnectController(). In order to make\r
+ drivers as small as possible, there are a few calling restrictions for\r
+ this service. ConnectController() must follow these\r
+ calling restrictions. If any other agent wishes to call Start() it\r
+ must also follow these calling restrictions.\r
+\r
+ @param This Protocol instance pointer.\r
+ @param ControllerHandle Handle of device to bind driver to\r
+ @param RemainingDevicePath Optional parameter use to pick a specific child\r
+ device to start.\r
+\r
+ @retval EFI_SUCCESS Always succeeds.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SnpNt32DriverBindingStart (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL * This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL\r
+ );\r
+\r
+/**\r
+ Stop this driver on ControllerHandle. This service is called by the\r
+ EFI boot service DisconnectController(). In order to\r
+ make drivers as small as possible, there are a few calling\r
+ restrictions for this service. DisconnectController()\r
+ must follow these calling restrictions. If any other agent wishes\r
+ to call Stop() it must also follow these calling restrictions.\r
+ \r
+ @param This Protocol instance pointer.\r
+ @param ControllerHandle Handle of device to stop driver on\r
+ @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
+ children is zero stop the entire bus driver.\r
+ @param ChildHandleBuffer List of Child Handles to Stop.\r
+\r
+ @retval EFI_SUCCESS Always succeeds.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+SnpNt32DriverBindingStop (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN UINTN NumberOfChildren,\r
+ IN EFI_HANDLE *ChildHandleBuffer\r
+ );\r
+\r
+/**\r
+ Initialize the driver's global data.\r
+\r
+ @param This Pointer to the global context data.\r
+\r
+ @retval EFI_SUCCESS The global data is initialized.\r
+ @retval EFI_NOT_FOUND The required DLL is not found.\r
+ @retval EFI_DEVICE_ERROR Error initialize network utility library.\r
+ @retval EFI_OUT_OF_RESOURCES Out of resource.\r
+ @retval other Other errors.\r
+\r
+**/\r
+EFI_STATUS\r
+SnpNt32InitializeGlobalData (\r
+ IN OUT SNPNT32_GLOBAL_DATA *This\r
+ );\r
+\r
+/**\r
+ Initialize the snpnt32 driver instance.\r
+\r
+ @param This Pointer to the SnpNt32 global data.\r
+ @param Instance Pointer to the instance context data.\r
+\r
+ @retval EFI_SUCCESS The driver instance is initialized.\r
+ @retval other Initialization errors.\r
+\r
+**/\r
+EFI_STATUS\r
+SnpNt32InitializeInstanceData (\r
+ IN SNPNT32_GLOBAL_DATA *This,\r
+ IN OUT SNPNT32_INSTANCE_DATA *Instance\r
+ );\r
+\r
+/**\r
+ Close the SnpNt32 driver instance.\r
+\r
+ @param This Pointer to the SnpNt32 global data.\r
+ @param Instance Pointer to the instance context data.\r
+\r
+ @retval EFI_SUCCESS The instance is closed.\r
+\r
+**/\r
+EFI_STATUS\r
+SnpNt32CloseInstance (\r
+ IN SNPNT32_GLOBAL_DATA *This,\r
+ IN OUT SNPNT32_INSTANCE_DATA *Instance\r
+ );\r
+\r
+#endif\r