1057d744eee56782c476d91593b4db47305339094qhuang/** @file 2057d744eee56782c476d91593b4db47305339094qhuang 38f2a5f8012e3a6de30f5b12ce3a218efae9eaeddhhtianCopyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR> 48f2a5f8012e3a6de30f5b12ce3a218efae9eaeddhhtianThis program and the accompanying materials 5057d744eee56782c476d91593b4db47305339094qhuangare licensed and made available under the terms and conditions of the BSD License 6057d744eee56782c476d91593b4db47305339094qhuangwhich accompanies this distribution. The full text of the license may be found at 7057d744eee56782c476d91593b4db47305339094qhuanghttp://opensource.org/licenses/bsd-license.php 8057d744eee56782c476d91593b4db47305339094qhuang 9057d744eee56782c476d91593b4db47305339094qhuangTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10057d744eee56782c476d91593b4db47305339094qhuangWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11057d744eee56782c476d91593b4db47305339094qhuang 12057d744eee56782c476d91593b4db47305339094qhuangModule Name: 13057d744eee56782c476d91593b4db47305339094qhuang 14057d744eee56782c476d91593b4db47305339094qhuang SnpNt32.h 15057d744eee56782c476d91593b4db47305339094qhuang 16057d744eee56782c476d91593b4db47305339094qhuangAbstract: 17057d744eee56782c476d91593b4db47305339094qhuang 18057d744eee56782c476d91593b4db47305339094qhuang-**/ 19057d744eee56782c476d91593b4db47305339094qhuang 20057d744eee56782c476d91593b4db47305339094qhuang#ifndef _SNP_NT32_H_ 21057d744eee56782c476d91593b4db47305339094qhuang#define _SNP_NT32_H_ 22593a8308cc95cfff7d23f2c5e5a2ab8b8712e823vanjeff 2360c93673b3189b7a48acdb5c300f4ee3546ffb85lgao#include <Uefi.h> 24593a8308cc95cfff7d23f2c5e5a2ab8b8712e823vanjeff 25593a8308cc95cfff7d23f2c5e5a2ab8b8712e823vanjeff#include <Protocol/SimpleNetwork.h> 26057d744eee56782c476d91593b4db47305339094qhuang#include <Protocol/DevicePath.h> 27593a8308cc95cfff7d23f2c5e5a2ab8b8712e823vanjeff#include <Protocol/WinNtThunk.h> 28057d744eee56782c476d91593b4db47305339094qhuang 29593a8308cc95cfff7d23f2c5e5a2ab8b8712e823vanjeff#include <Library/BaseLib.h> 30593a8308cc95cfff7d23f2c5e5a2ab8b8712e823vanjeff#include <Library/DebugLib.h> 31593a8308cc95cfff7d23f2c5e5a2ab8b8712e823vanjeff#include <Library/BaseMemoryLib.h> 32593a8308cc95cfff7d23f2c5e5a2ab8b8712e823vanjeff#include <Library/UefiBootServicesTableLib.h> 33593a8308cc95cfff7d23f2c5e5a2ab8b8712e823vanjeff#include <Library/UefiLib.h> 34057d744eee56782c476d91593b4db47305339094qhuang#include <Library/DevicePathLib.h> 35057d744eee56782c476d91593b4db47305339094qhuang#include <Library/NetLib.h> 36057d744eee56782c476d91593b4db47305339094qhuang#include <Library/MemoryAllocationLib.h> 37057d744eee56782c476d91593b4db47305339094qhuang 38057d744eee56782c476d91593b4db47305339094qhuangtypedef struct _SNPNT32_GLOBAL_DATA SNPNT32_GLOBAL_DATA; 39057d744eee56782c476d91593b4db47305339094qhuangtypedef struct _SNPNT32_INSTANCE_DATA SNPNT32_INSTANCE_DATA; 40057d744eee56782c476d91593b4db47305339094qhuang 41057d744eee56782c476d91593b4db47305339094qhuang#define NETWORK_LIBRARY_NAME_U L"SnpNt32Io.dll" 42057d744eee56782c476d91593b4db47305339094qhuang 43057d744eee56782c476d91593b4db47305339094qhuang#define NETWORK_LIBRARY_INITIALIZE "SnpInitialize" 44057d744eee56782c476d91593b4db47305339094qhuang#define NETWORK_LIBRARY_FINALIZE "SnpFinalize" 45057d744eee56782c476d91593b4db47305339094qhuang#define NETWORK_LIBRARY_SET_RCV_FILTER "SnpSetReceiveFilter" 46057d744eee56782c476d91593b4db47305339094qhuang#define NETWORK_LIBRARY_RECEIVE "SnpReceive" 47057d744eee56782c476d91593b4db47305339094qhuang#define NETWORK_LIBRARY_TRANSMIT "SnpTransmit" 48057d744eee56782c476d91593b4db47305339094qhuang 49057d744eee56782c476d91593b4db47305339094qhuang#pragma pack(1) 50057d744eee56782c476d91593b4db47305339094qhuangtypedef struct _NT_NET_INTERFACE_INFO { 51057d744eee56782c476d91593b4db47305339094qhuang UINT32 InterfaceIndex; 52057d744eee56782c476d91593b4db47305339094qhuang EFI_MAC_ADDRESS MacAddr; 53057d744eee56782c476d91593b4db47305339094qhuang} NT_NET_INTERFACE_INFO; 54057d744eee56782c476d91593b4db47305339094qhuang#pragma pack() 55057d744eee56782c476d91593b4db47305339094qhuang 56057d744eee56782c476d91593b4db47305339094qhuang#define NET_ETHER_HEADER_SIZE 14 57057d744eee56782c476d91593b4db47305339094qhuang 58057d744eee56782c476d91593b4db47305339094qhuang#define MAX_INTERFACE_INFO_NUMBER 16 59057d744eee56782c476d91593b4db47305339094qhuang#define MAX_FILE_NAME_LENGTH 280 60057d744eee56782c476d91593b4db47305339094qhuang 61057d744eee56782c476d91593b4db47305339094qhuang// 62057d744eee56782c476d91593b4db47305339094qhuang// Functions in Net Library 63057d744eee56782c476d91593b4db47305339094qhuang// 64057d744eee56782c476d91593b4db47305339094qhuangtypedef 65057d744eee56782c476d91593b4db47305339094qhuangINT32 66057d744eee56782c476d91593b4db47305339094qhuang(*NT_NET_INITIALIZE) ( 67057d744eee56782c476d91593b4db47305339094qhuang IN OUT UINT32 *InterfaceCount, 68057d744eee56782c476d91593b4db47305339094qhuang IN OUT NT_NET_INTERFACE_INFO * InterfaceInfoBuffer 69057d744eee56782c476d91593b4db47305339094qhuang ); 70057d744eee56782c476d91593b4db47305339094qhuang 71057d744eee56782c476d91593b4db47305339094qhuangtypedef 72057d744eee56782c476d91593b4db47305339094qhuangINT32 73057d744eee56782c476d91593b4db47305339094qhuang(*NT_NET_FINALIZE) ( 74057d744eee56782c476d91593b4db47305339094qhuang VOID 75057d744eee56782c476d91593b4db47305339094qhuang ); 76057d744eee56782c476d91593b4db47305339094qhuang 77057d744eee56782c476d91593b4db47305339094qhuangtypedef 78057d744eee56782c476d91593b4db47305339094qhuangINT32 79057d744eee56782c476d91593b4db47305339094qhuang(*NT_NET_SET_RECEIVE_FILTER) ( 80057d744eee56782c476d91593b4db47305339094qhuang IN UINT32 Index, 81057d744eee56782c476d91593b4db47305339094qhuang IN UINT32 EnableFilter, 82057d744eee56782c476d91593b4db47305339094qhuang IN UINT32 MCastFilterCnt, 83057d744eee56782c476d91593b4db47305339094qhuang IN EFI_MAC_ADDRESS * MCastFilter 84057d744eee56782c476d91593b4db47305339094qhuang ); 85057d744eee56782c476d91593b4db47305339094qhuang 86057d744eee56782c476d91593b4db47305339094qhuangtypedef 87057d744eee56782c476d91593b4db47305339094qhuangINT32 88057d744eee56782c476d91593b4db47305339094qhuang(*NT_NET_RECEIVE) ( 89057d744eee56782c476d91593b4db47305339094qhuang IN UINT32 Index, 90057d744eee56782c476d91593b4db47305339094qhuang IN OUT UINT32 *BufferSize, 91057d744eee56782c476d91593b4db47305339094qhuang OUT VOID *Buffer 92057d744eee56782c476d91593b4db47305339094qhuang ); 93057d744eee56782c476d91593b4db47305339094qhuang 94057d744eee56782c476d91593b4db47305339094qhuangtypedef 95057d744eee56782c476d91593b4db47305339094qhuangINT32 96057d744eee56782c476d91593b4db47305339094qhuang(*NT_NET_TRANSMIT) ( 97057d744eee56782c476d91593b4db47305339094qhuang IN UINT32 Index, 98057d744eee56782c476d91593b4db47305339094qhuang IN UINT32 HeaderSize, 99057d744eee56782c476d91593b4db47305339094qhuang IN UINT32 BufferSize, 100057d744eee56782c476d91593b4db47305339094qhuang IN VOID *Buffer, 101057d744eee56782c476d91593b4db47305339094qhuang IN EFI_MAC_ADDRESS * SrcAddr, 102057d744eee56782c476d91593b4db47305339094qhuang IN EFI_MAC_ADDRESS * DestAddr, 103057d744eee56782c476d91593b4db47305339094qhuang IN UINT16 *Protocol 104057d744eee56782c476d91593b4db47305339094qhuang ); 105057d744eee56782c476d91593b4db47305339094qhuang 106057d744eee56782c476d91593b4db47305339094qhuangtypedef struct _NT_NET_UTILITY_TABLE { 107057d744eee56782c476d91593b4db47305339094qhuang NT_NET_INITIALIZE Initialize; 108057d744eee56782c476d91593b4db47305339094qhuang NT_NET_FINALIZE Finalize; 109057d744eee56782c476d91593b4db47305339094qhuang NT_NET_SET_RECEIVE_FILTER SetReceiveFilter; 110057d744eee56782c476d91593b4db47305339094qhuang NT_NET_RECEIVE Receive; 111057d744eee56782c476d91593b4db47305339094qhuang NT_NET_TRANSMIT Transmit; 112057d744eee56782c476d91593b4db47305339094qhuang} NT_NET_UTILITY_TABLE; 113057d744eee56782c476d91593b4db47305339094qhuang 114057d744eee56782c476d91593b4db47305339094qhuang// 115057d744eee56782c476d91593b4db47305339094qhuang// Private functions 116057d744eee56782c476d91593b4db47305339094qhuang// 117057d744eee56782c476d91593b4db47305339094qhuangtypedef 118057d744eee56782c476d91593b4db47305339094qhuangEFI_STATUS 119057d744eee56782c476d91593b4db47305339094qhuang(*SNPNT32_INITIALIZE_GLOBAL_DATA) ( 120057d744eee56782c476d91593b4db47305339094qhuang IN SNPNT32_GLOBAL_DATA * This 121057d744eee56782c476d91593b4db47305339094qhuang ); 122057d744eee56782c476d91593b4db47305339094qhuang 123057d744eee56782c476d91593b4db47305339094qhuangtypedef 124057d744eee56782c476d91593b4db47305339094qhuangEFI_STATUS 125057d744eee56782c476d91593b4db47305339094qhuang(*SNPNT32_INITIALIZE_INSTANCE_DATA) ( 126057d744eee56782c476d91593b4db47305339094qhuang IN SNPNT32_GLOBAL_DATA * This, 127057d744eee56782c476d91593b4db47305339094qhuang IN SNPNT32_INSTANCE_DATA * Instance 128057d744eee56782c476d91593b4db47305339094qhuang ); 129057d744eee56782c476d91593b4db47305339094qhuang 130057d744eee56782c476d91593b4db47305339094qhuangtypedef 131057d744eee56782c476d91593b4db47305339094qhuangEFI_STATUS 132057d744eee56782c476d91593b4db47305339094qhuang(*SNPNT32_CLOSE_INSTANCE) ( 133057d744eee56782c476d91593b4db47305339094qhuang IN SNPNT32_GLOBAL_DATA * This, 134057d744eee56782c476d91593b4db47305339094qhuang IN SNPNT32_INSTANCE_DATA * Instance 135057d744eee56782c476d91593b4db47305339094qhuang ); 136057d744eee56782c476d91593b4db47305339094qhuang 137057d744eee56782c476d91593b4db47305339094qhuang// 138057d744eee56782c476d91593b4db47305339094qhuang// Global data for this driver 139057d744eee56782c476d91593b4db47305339094qhuang// 14099e1dd896a87bc8c8548f4dcd7c1a902825c9c42qhuang#define SNP_NT32_DRIVER_SIGNATURE SIGNATURE_32 ('W', 'S', 'N', 'P') 141057d744eee56782c476d91593b4db47305339094qhuang 142a00ec39b52224a40bf9a0a813b69cb43e14407a8mdkinneystruct _SNPNT32_GLOBAL_DATA { 143057d744eee56782c476d91593b4db47305339094qhuang UINT32 Signature; 144057d744eee56782c476d91593b4db47305339094qhuang 145057d744eee56782c476d91593b4db47305339094qhuang // 146057d744eee56782c476d91593b4db47305339094qhuang // List for all the fake SNP instance 147057d744eee56782c476d91593b4db47305339094qhuang // 148e90e87777cfefa3569b74bcd877ae2a391d96e7fvanjeff LIST_ENTRY InstanceList; 149057d744eee56782c476d91593b4db47305339094qhuang 150057d744eee56782c476d91593b4db47305339094qhuang EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk; 151057d744eee56782c476d91593b4db47305339094qhuang HMODULE NetworkLibraryHandle; 152057d744eee56782c476d91593b4db47305339094qhuang 153057d744eee56782c476d91593b4db47305339094qhuang NT_NET_UTILITY_TABLE NtNetUtilityTable; 154057d744eee56782c476d91593b4db47305339094qhuang 155e90e87777cfefa3569b74bcd877ae2a391d96e7fvanjeff EFI_LOCK Lock; 156057d744eee56782c476d91593b4db47305339094qhuang 157057d744eee56782c476d91593b4db47305339094qhuang // 158057d744eee56782c476d91593b4db47305339094qhuang // Private functions 159057d744eee56782c476d91593b4db47305339094qhuang // 160057d744eee56782c476d91593b4db47305339094qhuang SNPNT32_INITIALIZE_GLOBAL_DATA InitializeGlobalData; 161057d744eee56782c476d91593b4db47305339094qhuang SNPNT32_INITIALIZE_INSTANCE_DATA InitializeInstanceData; 162057d744eee56782c476d91593b4db47305339094qhuang SNPNT32_CLOSE_INSTANCE CloseInstance; 163a00ec39b52224a40bf9a0a813b69cb43e14407a8mdkinney}; 164057d744eee56782c476d91593b4db47305339094qhuang 165057d744eee56782c476d91593b4db47305339094qhuang// 166057d744eee56782c476d91593b4db47305339094qhuang// Instance data for each fake SNP instance 167057d744eee56782c476d91593b4db47305339094qhuang// 16899e1dd896a87bc8c8548f4dcd7c1a902825c9c42qhuang#define SNP_NT32_INSTANCE_SIGNATURE SIGNATURE_32 ('w', 'S', 'N', 'P') 169057d744eee56782c476d91593b4db47305339094qhuang 170a00ec39b52224a40bf9a0a813b69cb43e14407a8mdkinneystruct _SNPNT32_INSTANCE_DATA { 171057d744eee56782c476d91593b4db47305339094qhuang UINT32 Signature; 172057d744eee56782c476d91593b4db47305339094qhuang 173057d744eee56782c476d91593b4db47305339094qhuang // 174057d744eee56782c476d91593b4db47305339094qhuang // List entry use for linking with other instance 175057d744eee56782c476d91593b4db47305339094qhuang // 176e90e87777cfefa3569b74bcd877ae2a391d96e7fvanjeff LIST_ENTRY Entry; 177057d744eee56782c476d91593b4db47305339094qhuang 178057d744eee56782c476d91593b4db47305339094qhuang SNPNT32_GLOBAL_DATA *GlobalData; 179057d744eee56782c476d91593b4db47305339094qhuang 180057d744eee56782c476d91593b4db47305339094qhuang EFI_HANDLE DeviceHandle; 181057d744eee56782c476d91593b4db47305339094qhuang EFI_DEVICE_PATH_PROTOCOL *DevicePath; 182057d744eee56782c476d91593b4db47305339094qhuang 183057d744eee56782c476d91593b4db47305339094qhuang EFI_SIMPLE_NETWORK_PROTOCOL Snp; 184057d744eee56782c476d91593b4db47305339094qhuang EFI_SIMPLE_NETWORK_MODE Mode; 185057d744eee56782c476d91593b4db47305339094qhuang 186057d744eee56782c476d91593b4db47305339094qhuang NT_NET_INTERFACE_INFO InterfaceInfo; 187057d744eee56782c476d91593b4db47305339094qhuang 188057d744eee56782c476d91593b4db47305339094qhuang // 189057d744eee56782c476d91593b4db47305339094qhuang // Private functions 190057d744eee56782c476d91593b4db47305339094qhuang // 191a00ec39b52224a40bf9a0a813b69cb43e14407a8mdkinney}; 192057d744eee56782c476d91593b4db47305339094qhuang 193057d744eee56782c476d91593b4db47305339094qhuang#define SNP_NT32_INSTANCE_DATA_FROM_SNP_THIS(a) \ 194057d744eee56782c476d91593b4db47305339094qhuang CR ( \ 195057d744eee56782c476d91593b4db47305339094qhuang a, \ 196057d744eee56782c476d91593b4db47305339094qhuang SNPNT32_INSTANCE_DATA, \ 197057d744eee56782c476d91593b4db47305339094qhuang Snp, \ 198057d744eee56782c476d91593b4db47305339094qhuang SNP_NT32_INSTANCE_SIGNATURE \ 199057d744eee56782c476d91593b4db47305339094qhuang ) 200057d744eee56782c476d91593b4db47305339094qhuang 201531237a5ef547f77b91721f5538add55bea308c9jgongextern EFI_DRIVER_BINDING_PROTOCOL gSnpNt32DriverBinding; 202057d744eee56782c476d91593b4db47305339094qhuangextern EFI_COMPONENT_NAME_PROTOCOL gSnpNt32DriverComponentName; 203057d744eee56782c476d91593b4db47305339094qhuangextern EFI_COMPONENT_NAME2_PROTOCOL gSnpNt32DriverComponentName2; 204057d744eee56782c476d91593b4db47305339094qhuang 205531237a5ef547f77b91721f5538add55bea308c9jgong/** 206531237a5ef547f77b91721f5538add55bea308c9jgong Test to see if this driver supports ControllerHandle. This service 207531237a5ef547f77b91721f5538add55bea308c9jgong is called by the EFI boot service ConnectController(). In 208531237a5ef547f77b91721f5538add55bea308c9jgong order to make drivers as small as possible, there are a few calling 209531237a5ef547f77b91721f5538add55bea308c9jgong restrictions for this service. ConnectController() must 210531237a5ef547f77b91721f5538add55bea308c9jgong follow these calling restrictions. If any other agent wishes to call 211531237a5ef547f77b91721f5538add55bea308c9jgong Supported() it must also follow these calling restrictions. 212531237a5ef547f77b91721f5538add55bea308c9jgong 213531237a5ef547f77b91721f5538add55bea308c9jgong @param This Protocol instance pointer. 214531237a5ef547f77b91721f5538add55bea308c9jgong @param ControllerHandle Handle of device to test 215531237a5ef547f77b91721f5538add55bea308c9jgong @param RemainingDevicePath Optional parameter use to pick a specific child 216531237a5ef547f77b91721f5538add55bea308c9jgong device to start. 217531237a5ef547f77b91721f5538add55bea308c9jgong 218531237a5ef547f77b91721f5538add55bea308c9jgong @retval EFI_SUCCESS This driver supports this device 219531237a5ef547f77b91721f5538add55bea308c9jgong @retval EFI_UNSUPPORTED This driver does not support this device 220531237a5ef547f77b91721f5538add55bea308c9jgong 221531237a5ef547f77b91721f5538add55bea308c9jgong**/ 222057d744eee56782c476d91593b4db47305339094qhuangEFI_STATUS 223057d744eee56782c476d91593b4db47305339094qhuangEFIAPI 224057d744eee56782c476d91593b4db47305339094qhuangSnpNt32DriverBindingSupported ( 225057d744eee56782c476d91593b4db47305339094qhuang IN EFI_DRIVER_BINDING_PROTOCOL * This, 226057d744eee56782c476d91593b4db47305339094qhuang IN EFI_HANDLE ControllerHandle, 227057d744eee56782c476d91593b4db47305339094qhuang IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL 228057d744eee56782c476d91593b4db47305339094qhuang ); 229057d744eee56782c476d91593b4db47305339094qhuang 230531237a5ef547f77b91721f5538add55bea308c9jgong/** 231531237a5ef547f77b91721f5538add55bea308c9jgong Start this driver on ControllerHandle. This service is called by the 232531237a5ef547f77b91721f5538add55bea308c9jgong EFI boot service ConnectController(). In order to make 233531237a5ef547f77b91721f5538add55bea308c9jgong drivers as small as possible, there are a few calling restrictions for 234531237a5ef547f77b91721f5538add55bea308c9jgong this service. ConnectController() must follow these 235531237a5ef547f77b91721f5538add55bea308c9jgong calling restrictions. If any other agent wishes to call Start() it 236531237a5ef547f77b91721f5538add55bea308c9jgong must also follow these calling restrictions. 237531237a5ef547f77b91721f5538add55bea308c9jgong 238531237a5ef547f77b91721f5538add55bea308c9jgong @param This Protocol instance pointer. 239531237a5ef547f77b91721f5538add55bea308c9jgong @param ControllerHandle Handle of device to bind driver to 240531237a5ef547f77b91721f5538add55bea308c9jgong @param RemainingDevicePath Optional parameter use to pick a specific child 241531237a5ef547f77b91721f5538add55bea308c9jgong device to start. 242531237a5ef547f77b91721f5538add55bea308c9jgong 243531237a5ef547f77b91721f5538add55bea308c9jgong @retval EFI_SUCCESS Always succeeds. 244531237a5ef547f77b91721f5538add55bea308c9jgong 245531237a5ef547f77b91721f5538add55bea308c9jgong**/ 246057d744eee56782c476d91593b4db47305339094qhuangEFI_STATUS 247057d744eee56782c476d91593b4db47305339094qhuangEFIAPI 248057d744eee56782c476d91593b4db47305339094qhuangSnpNt32DriverBindingStart ( 249057d744eee56782c476d91593b4db47305339094qhuang IN EFI_DRIVER_BINDING_PROTOCOL * This, 250057d744eee56782c476d91593b4db47305339094qhuang IN EFI_HANDLE ControllerHandle, 251057d744eee56782c476d91593b4db47305339094qhuang IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL 252057d744eee56782c476d91593b4db47305339094qhuang ); 253057d744eee56782c476d91593b4db47305339094qhuang 254531237a5ef547f77b91721f5538add55bea308c9jgong/** 255531237a5ef547f77b91721f5538add55bea308c9jgong Stop this driver on ControllerHandle. This service is called by the 256531237a5ef547f77b91721f5538add55bea308c9jgong EFI boot service DisconnectController(). In order to 257531237a5ef547f77b91721f5538add55bea308c9jgong make drivers as small as possible, there are a few calling 258531237a5ef547f77b91721f5538add55bea308c9jgong restrictions for this service. DisconnectController() 259531237a5ef547f77b91721f5538add55bea308c9jgong must follow these calling restrictions. If any other agent wishes 260531237a5ef547f77b91721f5538add55bea308c9jgong to call Stop() it must also follow these calling restrictions. 261531237a5ef547f77b91721f5538add55bea308c9jgong 262531237a5ef547f77b91721f5538add55bea308c9jgong @param This Protocol instance pointer. 263531237a5ef547f77b91721f5538add55bea308c9jgong @param ControllerHandle Handle of device to stop driver on 264531237a5ef547f77b91721f5538add55bea308c9jgong @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of 265531237a5ef547f77b91721f5538add55bea308c9jgong children is zero stop the entire bus driver. 266531237a5ef547f77b91721f5538add55bea308c9jgong @param ChildHandleBuffer List of Child Handles to Stop. 267531237a5ef547f77b91721f5538add55bea308c9jgong 268531237a5ef547f77b91721f5538add55bea308c9jgong @retval EFI_SUCCESS Always succeeds. 269531237a5ef547f77b91721f5538add55bea308c9jgong 270531237a5ef547f77b91721f5538add55bea308c9jgong**/ 271057d744eee56782c476d91593b4db47305339094qhuangEFI_STATUS 272057d744eee56782c476d91593b4db47305339094qhuangEFIAPI 273057d744eee56782c476d91593b4db47305339094qhuangSnpNt32DriverBindingStop ( 274057d744eee56782c476d91593b4db47305339094qhuang IN EFI_DRIVER_BINDING_PROTOCOL *This, 275057d744eee56782c476d91593b4db47305339094qhuang IN EFI_HANDLE ControllerHandle, 276057d744eee56782c476d91593b4db47305339094qhuang IN UINTN NumberOfChildren, 277057d744eee56782c476d91593b4db47305339094qhuang IN EFI_HANDLE *ChildHandleBuffer 278057d744eee56782c476d91593b4db47305339094qhuang ); 279057d744eee56782c476d91593b4db47305339094qhuang 280531237a5ef547f77b91721f5538add55bea308c9jgong/** 281531237a5ef547f77b91721f5538add55bea308c9jgong Initialize the driver's global data. 282531237a5ef547f77b91721f5538add55bea308c9jgong 283531237a5ef547f77b91721f5538add55bea308c9jgong @param This Pointer to the global context data. 284531237a5ef547f77b91721f5538add55bea308c9jgong 285531237a5ef547f77b91721f5538add55bea308c9jgong @retval EFI_SUCCESS The global data is initialized. 286531237a5ef547f77b91721f5538add55bea308c9jgong @retval EFI_NOT_FOUND The required DLL is not found. 287531237a5ef547f77b91721f5538add55bea308c9jgong @retval EFI_DEVICE_ERROR Error initialize network utility library. 288531237a5ef547f77b91721f5538add55bea308c9jgong @retval EFI_OUT_OF_RESOURCES Out of resource. 289531237a5ef547f77b91721f5538add55bea308c9jgong @retval other Other errors. 290531237a5ef547f77b91721f5538add55bea308c9jgong 291531237a5ef547f77b91721f5538add55bea308c9jgong**/ 292057d744eee56782c476d91593b4db47305339094qhuangEFI_STATUS 293057d744eee56782c476d91593b4db47305339094qhuangSnpNt32InitializeGlobalData ( 294531237a5ef547f77b91721f5538add55bea308c9jgong IN OUT SNPNT32_GLOBAL_DATA *This 295057d744eee56782c476d91593b4db47305339094qhuang ); 296057d744eee56782c476d91593b4db47305339094qhuang 297531237a5ef547f77b91721f5538add55bea308c9jgong/** 298531237a5ef547f77b91721f5538add55bea308c9jgong Initialize the snpnt32 driver instance. 299531237a5ef547f77b91721f5538add55bea308c9jgong 300531237a5ef547f77b91721f5538add55bea308c9jgong @param This Pointer to the SnpNt32 global data. 301531237a5ef547f77b91721f5538add55bea308c9jgong @param Instance Pointer to the instance context data. 302531237a5ef547f77b91721f5538add55bea308c9jgong 303531237a5ef547f77b91721f5538add55bea308c9jgong @retval EFI_SUCCESS The driver instance is initialized. 304531237a5ef547f77b91721f5538add55bea308c9jgong @retval other Initialization errors. 305531237a5ef547f77b91721f5538add55bea308c9jgong 306531237a5ef547f77b91721f5538add55bea308c9jgong**/ 307057d744eee56782c476d91593b4db47305339094qhuangEFI_STATUS 308057d744eee56782c476d91593b4db47305339094qhuangSnpNt32InitializeInstanceData ( 309531237a5ef547f77b91721f5538add55bea308c9jgong IN SNPNT32_GLOBAL_DATA *This, 310531237a5ef547f77b91721f5538add55bea308c9jgong IN OUT SNPNT32_INSTANCE_DATA *Instance 311057d744eee56782c476d91593b4db47305339094qhuang ); 312057d744eee56782c476d91593b4db47305339094qhuang 313531237a5ef547f77b91721f5538add55bea308c9jgong/** 314531237a5ef547f77b91721f5538add55bea308c9jgong Close the SnpNt32 driver instance. 315531237a5ef547f77b91721f5538add55bea308c9jgong 316531237a5ef547f77b91721f5538add55bea308c9jgong @param This Pointer to the SnpNt32 global data. 317531237a5ef547f77b91721f5538add55bea308c9jgong @param Instance Pointer to the instance context data. 318531237a5ef547f77b91721f5538add55bea308c9jgong 319531237a5ef547f77b91721f5538add55bea308c9jgong @retval EFI_SUCCESS The instance is closed. 320531237a5ef547f77b91721f5538add55bea308c9jgong 321531237a5ef547f77b91721f5538add55bea308c9jgong**/ 322057d744eee56782c476d91593b4db47305339094qhuangEFI_STATUS 323057d744eee56782c476d91593b4db47305339094qhuangSnpNt32CloseInstance ( 324531237a5ef547f77b91721f5538add55bea308c9jgong IN SNPNT32_GLOBAL_DATA *This, 325531237a5ef547f77b91721f5538add55bea308c9jgong IN OUT SNPNT32_INSTANCE_DATA *Instance 326057d744eee56782c476d91593b4db47305339094qhuang ); 327057d744eee56782c476d91593b4db47305339094qhuang 328057d744eee56782c476d91593b4db47305339094qhuang#endif 329