TianoCore EDK2 master
Loading...
Searching...
No Matches
HttpDriver.c
Go to the documentation of this file.
1
12#include "HttpDriver.h"
13
14EFI_HTTP_UTILITIES_PROTOCOL *mHttpUtilities = NULL;
15
23 HTTP_DRIVER_VERSION,
24 NULL,
25 NULL
26};
27
28EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp6DriverBinding = {
32 HTTP_DRIVER_VERSION,
33 NULL,
34 NULL
35};
36
50 IN EFI_HANDLE Controller,
51 OUT HTTP_SERVICE **ServiceData
52 )
53{
54 HTTP_SERVICE *HttpService;
55
56 ASSERT (ServiceData != NULL);
57 *ServiceData = NULL;
58
59 HttpService = AllocateZeroPool (sizeof (HTTP_SERVICE));
60 if (HttpService == NULL) {
61 return EFI_OUT_OF_RESOURCES;
62 }
63
64 HttpService->Signature = HTTP_SERVICE_SIGNATURE;
65 HttpService->ServiceBinding.CreateChild = HttpServiceBindingCreateChild;
66 HttpService->ServiceBinding.DestroyChild = HttpServiceBindingDestroyChild;
67 HttpService->ControllerHandle = Controller;
68 HttpService->ChildrenNumber = 0;
69 InitializeListHead (&HttpService->ChildrenList);
70
71 *ServiceData = HttpService;
72 return EFI_SUCCESS;
73}
74
83VOID
85 IN HTTP_SERVICE *HttpService,
86 IN BOOLEAN UsingIpv6
87 )
88{
89 if (HttpService == NULL) {
90 return;
91 }
92
93 if (!UsingIpv6) {
94 if (HttpService->Tcp4ChildHandle != NULL) {
95 gBS->CloseProtocol (
96 HttpService->Tcp4ChildHandle,
97 &gEfiTcp4ProtocolGuid,
98 HttpService->Ip4DriverBindingHandle,
99 HttpService->ControllerHandle
100 );
101
103 HttpService->ControllerHandle,
104 HttpService->Ip4DriverBindingHandle,
105 &gEfiTcp4ServiceBindingProtocolGuid,
106 HttpService->Tcp4ChildHandle
107 );
108
109 HttpService->Tcp4ChildHandle = NULL;
110 }
111 } else {
112 if (HttpService->Tcp6ChildHandle != NULL) {
113 gBS->CloseProtocol (
114 HttpService->Tcp6ChildHandle,
115 &gEfiTcp6ProtocolGuid,
116 HttpService->Ip6DriverBindingHandle,
117 HttpService->ControllerHandle
118 );
119
121 HttpService->ControllerHandle,
122 HttpService->Ip6DriverBindingHandle,
123 &gEfiTcp6ServiceBindingProtocolGuid,
124 HttpService->Tcp6ChildHandle
125 );
126
127 HttpService->Tcp6ChildHandle = NULL;
128 }
129 }
130}
131
140VOID
141EFIAPI
143 IN EFI_EVENT Event,
144 IN VOID *Context
145 )
146{
147 gBS->LocateProtocol (
148 &gEfiHttpUtilitiesProtocolGuid,
149 NULL,
150 (VOID **)&mHttpUtilities
151 );
152
153 //
154 // Close the event if Http utilities protocol is located.
155 //
156 if ((mHttpUtilities != NULL) && (Event != NULL)) {
157 gBS->CloseEvent (Event);
158 }
159}
160
174EFIAPI
176 IN EFI_HANDLE ImageHandle,
177 IN EFI_SYSTEM_TABLE *SystemTable
178 )
179{
180 EFI_STATUS Status;
181 VOID *Registration;
182
183 gBS->LocateProtocol (
184 &gEfiHttpUtilitiesProtocolGuid,
185 NULL,
186 (VOID **)&mHttpUtilities
187 );
188
189 if (mHttpUtilities == NULL) {
190 //
191 // No Http utilities protocol, register a notify.
192 //
194 &gEfiHttpUtilitiesProtocolGuid,
195 TPL_CALLBACK,
197 NULL,
198 &Registration
199 );
200 }
201
202 //
203 // Install UEFI Driver Model protocol(s).
204 //
206 ImageHandle,
207 SystemTable,
209 ImageHandle,
212 );
213 if (EFI_ERROR (Status)) {
214 return Status;
215 }
216
218 ImageHandle,
219 SystemTable,
220 &gHttpDxeIp6DriverBinding,
221 NULL,
224 );
225 if (EFI_ERROR (Status)) {
230 );
231 }
232
233 return Status;
234}
235
248EFIAPI
250 IN LIST_ENTRY *Entry,
251 IN VOID *Context
252 )
253{
254 HTTP_PROTOCOL *HttpInstance;
255 EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding;
256 UINTN NumberOfChildren;
257 EFI_HANDLE *ChildHandleBuffer;
258
259 if ((Entry == NULL) || (Context == NULL)) {
260 return EFI_INVALID_PARAMETER;
261 }
262
263 HttpInstance = NET_LIST_USER_STRUCT_S (Entry, HTTP_PROTOCOL, Link, HTTP_PROTOCOL_SIGNATURE);
264 ServiceBinding = ((HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding;
265 NumberOfChildren = ((HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren;
266 ChildHandleBuffer = ((HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer;
267
268 if (!NetIsInHandleBuffer (HttpInstance->Handle, NumberOfChildren, ChildHandleBuffer)) {
269 return EFI_SUCCESS;
270 }
271
272 return ServiceBinding->DestroyChild (ServiceBinding, HttpInstance->Handle);
273}
274
290EFIAPI
293 IN EFI_HANDLE ControllerHandle,
294 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL,
295 IN UINT8 IpVersion
296 )
297{
298 EFI_STATUS Status;
299 EFI_GUID *TcpServiceBindingProtocolGuid;
300
301 if (IpVersion == IP_VERSION_4) {
302 TcpServiceBindingProtocolGuid = &gEfiTcp4ServiceBindingProtocolGuid;
303 } else {
304 TcpServiceBindingProtocolGuid = &gEfiTcp6ServiceBindingProtocolGuid;
305 }
306
307 Status = gBS->OpenProtocol (
308 ControllerHandle,
309 TcpServiceBindingProtocolGuid,
310 NULL,
311 This->DriverBindingHandle,
312 ControllerHandle,
313 EFI_OPEN_PROTOCOL_TEST_PROTOCOL
314 );
315
316 if (EFI_ERROR (Status)) {
317 return EFI_UNSUPPORTED;
318 }
319
320 return EFI_SUCCESS;
321}
322
340EFIAPI
343 IN EFI_HANDLE ControllerHandle,
344 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL,
345 IN UINT8 IpVersion
346 )
347{
348 EFI_STATUS Status;
349 EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding;
350 HTTP_SERVICE *HttpService;
351 VOID *Interface;
352 BOOLEAN UsingIpv6;
353
354 UsingIpv6 = FALSE;
355
356 //
357 // Test for the Http service binding protocol
358 //
359 Status = gBS->OpenProtocol (
360 ControllerHandle,
361 &gEfiHttpServiceBindingProtocolGuid,
362 (VOID **)&ServiceBinding,
363 This->DriverBindingHandle,
364 ControllerHandle,
365 EFI_OPEN_PROTOCOL_GET_PROTOCOL
366 );
367
368 if (!EFI_ERROR (Status)) {
369 HttpService = HTTP_SERVICE_FROM_PROTOCOL (ServiceBinding);
370 } else {
371 Status = HttpCreateService (ControllerHandle, &HttpService);
372 if (EFI_ERROR (Status)) {
373 return Status;
374 }
375
376 ASSERT (HttpService != NULL);
377
378 //
379 // Install the HttpServiceBinding Protocol onto Controller
380 //
381 Status = gBS->InstallMultipleProtocolInterfaces (
382 &ControllerHandle,
383 &gEfiHttpServiceBindingProtocolGuid,
384 &HttpService->ServiceBinding,
385 NULL
386 );
387
388 if (EFI_ERROR (Status)) {
389 goto ON_ERROR;
390 }
391 }
392
393 if (IpVersion == IP_VERSION_4) {
394 HttpService->Ip4DriverBindingHandle = This->DriverBindingHandle;
395
396 if (HttpService->Tcp4ChildHandle == NULL) {
397 //
398 // Create a TCP4 child instance, but do not configure it. This will establish the parent-child relationship.
399 //
400 Status = NetLibCreateServiceChild (
401 ControllerHandle,
402 This->DriverBindingHandle,
403 &gEfiTcp4ServiceBindingProtocolGuid,
404 &HttpService->Tcp4ChildHandle
405 );
406
407 if (EFI_ERROR (Status)) {
408 goto ON_ERROR;
409 }
410
411 Status = gBS->OpenProtocol (
412 HttpService->Tcp4ChildHandle,
413 &gEfiTcp4ProtocolGuid,
414 &Interface,
415 This->DriverBindingHandle,
416 ControllerHandle,
417 EFI_OPEN_PROTOCOL_BY_DRIVER
418 );
419
420 if (EFI_ERROR (Status)) {
421 goto ON_ERROR;
422 }
423 } else {
424 return EFI_ALREADY_STARTED;
425 }
426 } else {
427 UsingIpv6 = TRUE;
428 HttpService->Ip6DriverBindingHandle = This->DriverBindingHandle;
429
430 if (HttpService->Tcp6ChildHandle == NULL) {
431 //
432 // Create a TCP6 child instance, but do not configure it. This will establish the parent-child relationship.
433 //
434 Status = NetLibCreateServiceChild (
435 ControllerHandle,
436 This->DriverBindingHandle,
437 &gEfiTcp6ServiceBindingProtocolGuid,
438 &HttpService->Tcp6ChildHandle
439 );
440
441 if (EFI_ERROR (Status)) {
442 goto ON_ERROR;
443 }
444
445 Status = gBS->OpenProtocol (
446 HttpService->Tcp6ChildHandle,
447 &gEfiTcp6ProtocolGuid,
448 &Interface,
449 This->DriverBindingHandle,
450 ControllerHandle,
451 EFI_OPEN_PROTOCOL_BY_DRIVER
452 );
453
454 if (EFI_ERROR (Status)) {
455 goto ON_ERROR;
456 }
457 } else {
458 return EFI_ALREADY_STARTED;
459 }
460 }
461
462 return EFI_SUCCESS;
463
464ON_ERROR:
465
466 if (HttpService != NULL) {
467 HttpCleanService (HttpService, UsingIpv6);
468 Status = gBS->UninstallMultipleProtocolInterfaces (
469 &ControllerHandle,
470 &gEfiHttpServiceBindingProtocolGuid,
471 &HttpService->ServiceBinding,
472 NULL
473 );
474 if (!EFI_ERROR (Status)) {
475 if ((HttpService->Tcp4ChildHandle == NULL) && (HttpService->Tcp6ChildHandle == NULL)) {
476 FreePool (HttpService);
477 }
478 }
479 }
480
481 return Status;
482}
483
501EFIAPI
504 IN EFI_HANDLE ControllerHandle,
505 IN UINTN NumberOfChildren,
506 IN EFI_HANDLE *ChildHandleBuffer,
507 IN UINT8 IpVersion
508 )
509{
510 EFI_HANDLE NicHandle;
511 EFI_STATUS Status;
512 EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding;
513 HTTP_SERVICE *HttpService;
514 LIST_ENTRY *List;
516 BOOLEAN UsingIpv6;
517
518 //
519 // HTTP driver opens TCP4(6) child, So, Controller is a TCP4(6)
520 // child handle. Locate the Nic handle first. Then get the
521 // HTTP private data back.
522 //
523 if (IpVersion == IP_VERSION_4) {
524 UsingIpv6 = FALSE;
525 NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiTcp4ProtocolGuid);
526 } else {
527 UsingIpv6 = TRUE;
528 NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiTcp6ProtocolGuid);
529 }
530
531 if (NicHandle == NULL) {
532 return EFI_SUCCESS;
533 }
534
535 Status = gBS->OpenProtocol (
536 NicHandle,
537 &gEfiHttpServiceBindingProtocolGuid,
538 (VOID **)&ServiceBinding,
539 This->DriverBindingHandle,
540 NicHandle,
541 EFI_OPEN_PROTOCOL_GET_PROTOCOL
542 );
543
544 if (!EFI_ERROR (Status)) {
545 HttpService = HTTP_SERVICE_FROM_PROTOCOL (ServiceBinding);
546
547 if (NumberOfChildren != 0) {
548 //
549 // Destroy the HTTP child instance in ChildHandleBuffer.
550 //
551 List = &HttpService->ChildrenList;
552 Context.ServiceBinding = ServiceBinding;
553 Context.NumberOfChildren = NumberOfChildren;
554 Context.ChildHandleBuffer = ChildHandleBuffer;
555 Status = NetDestroyLinkList (
556 List,
558 &Context,
559 NULL
560 );
561 } else {
562 HttpCleanService (HttpService, UsingIpv6);
563
564 if ((HttpService->Tcp4ChildHandle == NULL) && (HttpService->Tcp6ChildHandle == NULL)) {
565 gBS->UninstallProtocolInterface (
566 NicHandle,
567 &gEfiHttpServiceBindingProtocolGuid,
568 ServiceBinding
569 );
570 FreePool (HttpService);
571 }
572
573 Status = EFI_SUCCESS;
574 }
575 }
576
577 return Status;
578}
579
623EFIAPI
626 IN EFI_HANDLE ControllerHandle,
627 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
628 )
629{
630 return HttpDxeSupported (
631 This,
632 ControllerHandle,
633 RemainingDevicePath,
634 IP_VERSION_4
635 );
636}
637
675EFIAPI
678 IN EFI_HANDLE ControllerHandle,
679 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
680 )
681{
682 return HttpDxeStart (
683 This,
684 ControllerHandle,
685 RemainingDevicePath,
686 IP_VERSION_4
687 );
688}
689
717EFIAPI
720 IN EFI_HANDLE ControllerHandle,
721 IN UINTN NumberOfChildren,
722 IN EFI_HANDLE *ChildHandleBuffer OPTIONAL
723 )
724{
725 return HttpDxeStop (
726 This,
727 ControllerHandle,
728 NumberOfChildren,
729 ChildHandleBuffer,
730 IP_VERSION_4
731 );
732}
733
777EFIAPI
780 IN EFI_HANDLE ControllerHandle,
781 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
782 )
783{
784 return HttpDxeSupported (
785 This,
786 ControllerHandle,
787 RemainingDevicePath,
788 IP_VERSION_6
789 );
790}
791
829EFIAPI
832 IN EFI_HANDLE ControllerHandle,
833 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
834 )
835{
836 return HttpDxeStart (
837 This,
838 ControllerHandle,
839 RemainingDevicePath,
840 IP_VERSION_6
841 );
842}
843
871EFIAPI
874 IN EFI_HANDLE ControllerHandle,
875 IN UINTN NumberOfChildren,
876 IN EFI_HANDLE *ChildHandleBuffer OPTIONAL
877 )
878{
879 return HttpDxeStop (
880 This,
881 ControllerHandle,
882 NumberOfChildren,
883 ChildHandleBuffer,
884 IP_VERSION_6
885 );
886}
887
908EFIAPI
911 IN OUT EFI_HANDLE *ChildHandle
912 )
913{
914 HTTP_SERVICE *HttpService;
915 HTTP_PROTOCOL *HttpInstance;
916 EFI_STATUS Status;
917 EFI_TPL OldTpl;
918
919 if ((This == NULL) || (ChildHandle == NULL)) {
920 return EFI_INVALID_PARAMETER;
921 }
922
923 HttpService = HTTP_SERVICE_FROM_PROTOCOL (This);
924 HttpInstance = AllocateZeroPool (sizeof (HTTP_PROTOCOL));
925 if (HttpInstance == NULL) {
926 return EFI_OUT_OF_RESOURCES;
927 }
928
929 HttpInstance->Signature = HTTP_PROTOCOL_SIGNATURE;
930 HttpInstance->Service = HttpService;
931 HttpInstance->Method = HttpMethodMax;
932
933 CopyMem (&HttpInstance->Http, &mEfiHttpTemplate, sizeof (HttpInstance->Http));
934 NetMapInit (&HttpInstance->TxTokens);
935 NetMapInit (&HttpInstance->RxTokens);
936
937 //
938 // Install HTTP protocol onto ChildHandle
939 //
940 Status = gBS->InstallMultipleProtocolInterfaces (
941 ChildHandle,
942 &gEfiHttpProtocolGuid,
943 &HttpInstance->Http,
944 NULL
945 );
946
947 if (EFI_ERROR (Status)) {
948 goto ON_ERROR;
949 }
950
951 HttpInstance->Handle = *ChildHandle;
952
953 //
954 // Add it to the HTTP service's child list.
955 //
956 OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
957
958 InsertTailList (&HttpService->ChildrenList, &HttpInstance->Link);
959 HttpService->ChildrenNumber++;
960
961 gBS->RestoreTPL (OldTpl);
962
963 return EFI_SUCCESS;
964
965ON_ERROR:
966
967 NetMapClean (&HttpInstance->TxTokens);
968 NetMapClean (&HttpInstance->RxTokens);
969 FreePool (HttpInstance);
970
971 return Status;
972}
973
991EFIAPI
994 IN EFI_HANDLE ChildHandle
995 )
996{
997 HTTP_SERVICE *HttpService;
998 HTTP_PROTOCOL *HttpInstance;
999 EFI_HTTP_PROTOCOL *Http;
1000 EFI_STATUS Status;
1001 EFI_TPL OldTpl;
1002
1003 if ((This == NULL) || (ChildHandle == NULL)) {
1004 return EFI_INVALID_PARAMETER;
1005 }
1006
1007 HttpService = HTTP_SERVICE_FROM_PROTOCOL (This);
1008 Status = gBS->OpenProtocol (
1009 ChildHandle,
1010 &gEfiHttpProtocolGuid,
1011 (VOID **)&Http,
1012 NULL,
1013 NULL,
1014 EFI_OPEN_PROTOCOL_GET_PROTOCOL
1015 );
1016 if (EFI_ERROR (Status)) {
1017 return EFI_UNSUPPORTED;
1018 }
1019
1020 HttpInstance = HTTP_INSTANCE_FROM_PROTOCOL (Http);
1021 if (HttpInstance->Service != HttpService) {
1022 return EFI_INVALID_PARAMETER;
1023 }
1024
1025 if (HttpInstance->InDestroy) {
1026 return EFI_SUCCESS;
1027 }
1028
1029 HttpInstance->InDestroy = TRUE;
1030
1031 //
1032 // Uninstall the HTTP protocol.
1033 //
1034 Status = gBS->UninstallProtocolInterface (
1035 ChildHandle,
1036 &gEfiHttpProtocolGuid,
1037 Http
1038 );
1039
1040 if (EFI_ERROR (Status)) {
1041 HttpInstance->InDestroy = FALSE;
1042 return Status;
1043 }
1044
1045 HttpCleanProtocol (HttpInstance);
1046
1047 OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
1048
1049 RemoveEntryList (&HttpInstance->Link);
1050 HttpService->ChildrenNumber--;
1051
1052 gBS->RestoreTPL (OldTpl);
1053
1054 FreePool (HttpInstance);
1055 return EFI_SUCCESS;
1056}
UINT64 UINTN
LIST_ENTRY *EFIAPI RemoveEntryList(IN CONST LIST_ENTRY *Entry)
Definition: LinkedList.c:590
LIST_ENTRY *EFIAPI InitializeListHead(IN OUT LIST_ENTRY *ListHead)
Definition: LinkedList.c:182
LIST_ENTRY *EFIAPI InsertTailList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
Definition: LinkedList.c:259
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
EFI_STATUS EFIAPI HttpDxeSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL, IN UINT8 IpVersion)
Definition: HttpDriver.c:291
EFI_STATUS EFIAPI HttpDxeStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer, IN UINT8 IpVersion)
Definition: HttpDriver.c:502
EFI_STATUS EFIAPI HttpDxeIp4DriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer OPTIONAL)
Definition: HttpDriver.c:718
EFI_STATUS EFIAPI HttpDxeStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL, IN UINT8 IpVersion)
Definition: HttpDriver.c:341
VOID EFIAPI HttpUtilitiesInstalledCallback(IN EFI_EVENT Event, IN VOID *Context)
Definition: HttpDriver.c:142
EFI_STATUS EFIAPI HttpDxeIp6DriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer OPTIONAL)
Definition: HttpDriver.c:872
EFI_STATUS EFIAPI HttpDestroyChildEntryInHandleBuffer(IN LIST_ENTRY *Entry, IN VOID *Context)
Definition: HttpDriver.c:249
EFI_STATUS EFIAPI HttpServiceBindingCreateChild(IN EFI_SERVICE_BINDING_PROTOCOL *This, IN OUT EFI_HANDLE *ChildHandle)
Definition: HttpDriver.c:909
VOID HttpCleanService(IN HTTP_SERVICE *HttpService, IN BOOLEAN UsingIpv6)
Definition: HttpDriver.c:84
EFI_STATUS HttpCreateService(IN EFI_HANDLE Controller, OUT HTTP_SERVICE **ServiceData)
Definition: HttpDriver.c:49
EFI_STATUS EFIAPI HttpDxeDriverEntryPoint(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
Definition: HttpDriver.c:175
EFI_STATUS EFIAPI HttpDxeIp4DriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
Definition: HttpDriver.c:676
EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp4DriverBinding
Definition: HttpDriver.c:19
EFI_STATUS EFIAPI HttpDxeIp6DriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
Definition: HttpDriver.c:778
EFI_STATUS EFIAPI HttpDxeIp6DriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
Definition: HttpDriver.c:830
EFI_STATUS EFIAPI HttpServiceBindingDestroyChild(IN EFI_SERVICE_BINDING_PROTOCOL *This, IN EFI_HANDLE ChildHandle)
Definition: HttpDriver.c:992
EFI_STATUS EFIAPI HttpDxeIp4DriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
Definition: HttpDriver.c:624
VOID HttpCleanProtocol(IN HTTP_PROTOCOL *HttpInstance)
Definition: HttpProto.c:820
#define NULL
Definition: Base.h:319
#define TRUE
Definition: Base.h:301
#define FALSE
Definition: Base.h:307
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
VOID EFIAPI NetMapClean(IN OUT NET_MAP *Map)
Definition: DxeNetLib.c:1368
EFI_STATUS EFIAPI NetLibCreateServiceChild(IN EFI_HANDLE Controller, IN EFI_HANDLE Image, IN EFI_GUID *ServiceBindingGuid, IN OUT EFI_HANDLE *ChildHandle)
Definition: DxeNetLib.c:1967
EFI_STATUS EFIAPI NetLibDestroyServiceChild(IN EFI_HANDLE Controller, IN EFI_HANDLE Image, IN EFI_GUID *ServiceBindingGuid, IN EFI_HANDLE ChildHandle)
Definition: DxeNetLib.c:2020
VOID EFIAPI NetMapInit(IN OUT NET_MAP *Map)
Definition: DxeNetLib.c:1343
BOOLEAN EFIAPI NetIsInHandleBuffer(IN EFI_HANDLE Handle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer OPTIONAL)
Definition: DxeNetLib.c:1306
EFI_HANDLE EFIAPI NetLibGetNicHandle(IN EFI_HANDLE Controller, IN EFI_GUID *ProtocolGuid)
Definition: DxeNetLib.c:3019
EFI_STATUS EFIAPI NetDestroyLinkList(IN LIST_ENTRY *List, IN NET_DESTROY_LINK_LIST_CALLBACK CallBack, IN VOID *Context OPTIONAL, OUT UINTN *ListLength OPTIONAL)
Definition: DxeNetLib.c:1236
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gHttpDxeComponentName
Definition: ComponentName.c:17
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gHttpDxeComponentName2
Definition: ComponentName.c:27
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
VOID * EFI_EVENT
Definition: UefiBaseType.h:37
UINTN EFI_TPL
Definition: UefiBaseType.h:41
VOID * EFI_HANDLE
Definition: UefiBaseType.h:33
#define EFI_SUCCESS
Definition: UefiBaseType.h:112
EFI_BOOT_SERVICES * gBS
EFI_STATUS EFIAPI EfiLibUninstallDriverBindingComponentName2(IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName OPTIONAL, IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL)
EFI_EVENT EFIAPI EfiCreateProtocolNotifyEvent(IN EFI_GUID *ProtocolGuid, IN EFI_TPL NotifyTpl, IN EFI_EVENT_NOTIFY NotifyFunction, IN VOID *NotifyContext OPTIONAL, OUT VOID **Registration)
Definition: UefiLib.c:134
EFI_STATUS EFIAPI EfiLibInstallDriverBindingComponentName2(IN CONST EFI_HANDLE ImageHandle, IN CONST EFI_SYSTEM_TABLE *SystemTable, IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, IN EFI_HANDLE DriverBindingHandle, IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName OPTIONAL, IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL)
Definition: Base.h:213