]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/SnpNt32Dxe/SnpNt32.h
remove member context from _EFI_MTFTP4_TOKEN structure.
[mirror_edk2.git] / Nt32Pkg / SnpNt32Dxe / SnpNt32.h
CommitLineData
057d744e 1/** @file\r
2\r
3Copyright (c) 2006 - 2007, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11\r
12Module Name:\r
13\r
14 SnpNt32.h\r
15\r
16Abstract:\r
17\r
18-**/\r
19\r
20#ifndef _SNP_NT32_H_\r
21#define _SNP_NT32_H_\r
593a8308 22\r
23#include <PiDxe.h>\r
24\r
25#include <Protocol/SimpleNetwork.h>\r
057d744e 26#include <Protocol/DevicePath.h>\r
593a8308 27#include <Protocol/WinNtThunk.h>\r
057d744e 28\r
593a8308 29#include <Library/BaseLib.h>\r
30#include <Library/DebugLib.h>\r
31#include <Library/BaseMemoryLib.h>\r
32#include <Library/UefiBootServicesTableLib.h>\r
33#include <Library/UefiLib.h>\r
057d744e 34#include <Library/DevicePathLib.h>\r
35#include <Library/NetLib.h>\r
36#include <Library/MemoryAllocationLib.h>\r
37\r
38typedef struct _SNPNT32_GLOBAL_DATA SNPNT32_GLOBAL_DATA;\r
39typedef struct _SNPNT32_INSTANCE_DATA SNPNT32_INSTANCE_DATA;\r
40\r
41#define NETWORK_LIBRARY_NAME_U L"SnpNt32Io.dll"\r
42\r
43#define NETWORK_LIBRARY_INITIALIZE "SnpInitialize"\r
44#define NETWORK_LIBRARY_FINALIZE "SnpFinalize"\r
45#define NETWORK_LIBRARY_SET_RCV_FILTER "SnpSetReceiveFilter"\r
46#define NETWORK_LIBRARY_RECEIVE "SnpReceive"\r
47#define NETWORK_LIBRARY_TRANSMIT "SnpTransmit"\r
48\r
49#pragma pack(1)\r
50typedef struct _NT_NET_INTERFACE_INFO {\r
51 UINT32 InterfaceIndex;\r
52 EFI_MAC_ADDRESS MacAddr;\r
53} NT_NET_INTERFACE_INFO;\r
54#pragma pack()\r
55\r
56#define NET_ETHER_HEADER_SIZE 14\r
57\r
58#define MAX_INTERFACE_INFO_NUMBER 16\r
59#define MAX_FILE_NAME_LENGTH 280\r
60\r
61//\r
62// Functions in Net Library\r
63//\r
64typedef\r
65INT32\r
66(*NT_NET_INITIALIZE) (\r
67 IN OUT UINT32 *InterfaceCount,\r
68 IN OUT NT_NET_INTERFACE_INFO * InterfaceInfoBuffer\r
69 );\r
70\r
71typedef\r
72INT32\r
73(*NT_NET_FINALIZE) (\r
74 VOID\r
75 );\r
76\r
77typedef\r
78INT32\r
79(*NT_NET_SET_RECEIVE_FILTER) (\r
80 IN UINT32 Index,\r
81 IN UINT32 EnableFilter,\r
82 IN UINT32 MCastFilterCnt,\r
83 IN EFI_MAC_ADDRESS * MCastFilter\r
84 );\r
85\r
86typedef\r
87INT32\r
88(*NT_NET_RECEIVE) (\r
89 IN UINT32 Index,\r
90 IN OUT UINT32 *BufferSize,\r
91 OUT VOID *Buffer\r
92 );\r
93\r
94typedef\r
95INT32\r
96(*NT_NET_TRANSMIT) (\r
97 IN UINT32 Index,\r
98 IN UINT32 HeaderSize,\r
99 IN UINT32 BufferSize,\r
100 IN VOID *Buffer,\r
101 IN EFI_MAC_ADDRESS * SrcAddr,\r
102 IN EFI_MAC_ADDRESS * DestAddr,\r
103 IN UINT16 *Protocol\r
104 );\r
105\r
106typedef struct _NT_NET_UTILITY_TABLE {\r
107 NT_NET_INITIALIZE Initialize;\r
108 NT_NET_FINALIZE Finalize;\r
109 NT_NET_SET_RECEIVE_FILTER SetReceiveFilter;\r
110 NT_NET_RECEIVE Receive;\r
111 NT_NET_TRANSMIT Transmit;\r
112} NT_NET_UTILITY_TABLE;\r
113\r
114//\r
115// Private functions\r
116//\r
117typedef\r
118EFI_STATUS\r
119(*SNPNT32_INITIALIZE_GLOBAL_DATA) (\r
120 IN SNPNT32_GLOBAL_DATA * This\r
121 );\r
122\r
123typedef\r
124EFI_STATUS\r
125(*SNPNT32_INITIALIZE_INSTANCE_DATA) (\r
126 IN SNPNT32_GLOBAL_DATA * This,\r
127 IN SNPNT32_INSTANCE_DATA * Instance\r
128 );\r
129\r
130typedef\r
131EFI_STATUS\r
132(*SNPNT32_CLOSE_INSTANCE) (\r
133 IN SNPNT32_GLOBAL_DATA * This,\r
134 IN SNPNT32_INSTANCE_DATA * Instance\r
135 );\r
136\r
137//\r
138// Global data for this driver\r
139//\r
140#define SNP_NT32_DRIVER_SIGNATURE EFI_SIGNATURE_32 ('W', 'S', 'N', 'P')\r
141\r
142typedef struct _SNPNT32_GLOBAL_DATA {\r
143 UINT32 Signature;\r
144\r
145 //\r
146 // List for all the fake SNP instance\r
147 //\r
148 NET_LIST_ENTRY InstanceList;\r
149\r
150 EFI_WIN_NT_THUNK_PROTOCOL *WinNtThunk;\r
151 HMODULE NetworkLibraryHandle;\r
152\r
153 NT_NET_UTILITY_TABLE NtNetUtilityTable;\r
154\r
155 NET_LOCK Lock;\r
156\r
157 //\r
158 // Private functions\r
159 //\r
160 SNPNT32_INITIALIZE_GLOBAL_DATA InitializeGlobalData;\r
161 SNPNT32_INITIALIZE_INSTANCE_DATA InitializeInstanceData;\r
162 SNPNT32_CLOSE_INSTANCE CloseInstance;\r
163} SNPNT32_GLOBAL_DATA;\r
164\r
165//\r
166// Instance data for each fake SNP instance\r
167//\r
168#define SNP_NT32_INSTANCE_SIGNATURE EFI_SIGNATURE_32 ('w', 'S', 'N', 'P')\r
169\r
170typedef struct _SNPNT32_INSTANCE_DATA {\r
171 UINT32 Signature;\r
172\r
173 //\r
174 // List entry use for linking with other instance\r
175 //\r
176 NET_LIST_ENTRY Entry;\r
177\r
178 SNPNT32_GLOBAL_DATA *GlobalData;\r
179\r
180 EFI_HANDLE DeviceHandle;\r
181 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
182\r
183 EFI_SIMPLE_NETWORK_PROTOCOL Snp;\r
184 EFI_SIMPLE_NETWORK_MODE Mode;\r
185\r
186 NT_NET_INTERFACE_INFO InterfaceInfo;\r
187\r
188 //\r
189 // Private functions\r
190 //\r
191} SNPNT32_INSTANCE_DATA;\r
192\r
193#define SNP_NT32_INSTANCE_DATA_FROM_SNP_THIS(a) \\r
194 CR ( \\r
195 a, \\r
196 SNPNT32_INSTANCE_DATA, \\r
197 Snp, \\r
198 SNP_NT32_INSTANCE_SIGNATURE \\r
199 )\r
200\r
201extern EFI_DRIVER_BINDING_PROTOCOL gSnpNt32DriverBinding;\r
202extern EFI_COMPONENT_NAME_PROTOCOL gSnpNt32DriverComponentName;\r
203extern EFI_COMPONENT_NAME2_PROTOCOL gSnpNt32DriverComponentName2;\r
204\r
205EFI_STATUS\r
206EFIAPI\r
207SnpNt32DriverBindingSupported (\r
208 IN EFI_DRIVER_BINDING_PROTOCOL * This,\r
209 IN EFI_HANDLE ControllerHandle,\r
210 IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL\r
211 );\r
212\r
213EFI_STATUS\r
214EFIAPI\r
215SnpNt32DriverBindingStart (\r
216 IN EFI_DRIVER_BINDING_PROTOCOL * This,\r
217 IN EFI_HANDLE ControllerHandle,\r
218 IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL\r
219 );\r
220\r
221EFI_STATUS\r
222EFIAPI\r
223SnpNt32DriverBindingStop (\r
224 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
225 IN EFI_HANDLE ControllerHandle,\r
226 IN UINTN NumberOfChildren,\r
227 IN EFI_HANDLE *ChildHandleBuffer\r
228 );\r
229\r
230EFI_STATUS\r
231SnpNt32InitializeGlobalData (\r
232 IN SNPNT32_GLOBAL_DATA *This\r
233 );\r
234\r
235EFI_STATUS\r
236SnpNt32InitializeInstanceData (\r
237 IN SNPNT32_GLOBAL_DATA *This,\r
238 IN SNPNT32_INSTANCE_DATA *Instance\r
239 );\r
240\r
241EFI_STATUS\r
242SnpNt32CloseInstance (\r
243 IN SNPNT32_GLOBAL_DATA *This,\r
244 IN SNPNT32_INSTANCE_DATA *Instance\r
245 );\r
246\r
247#endif\r