Для большинства сетевых протоколов сначала необходимо использовать соответствующий «Протокол привязки службы», чтобы получить дескриптор, содержащий искомый протокол.
Используйте эти шаги для доступа к Tcp4Protocol:
gBS->LocateHandleBuffer(ByProtovol,gEfiTcp4ServiceBindingProtocolGuid, NULL, &HandleCount, &HandleBuffer);
// Loop over the HandleBuffer Array and pick the one you need
gBS->HandleProtocol(HandleBuffer[YourIndex], &gEfiTcp4ServiceBindingProtocolGuid, &Tcp4SBProtocol);
Tcp4SBProtocol->CreateChild(Tcp4SBProtocol, &Tcp4Handle);
gBS->HandleProtocol(Tcp4Handle, &gEfiTcp4ProtocolGuid, &Tcp4Protocol);
Чтобы проверить, доступен ли NI C, вы можете использовать:
// This should return EFI_SUCCESS
gBS->LocateProtocol(&gEfiSimpleNetworkProtocolGuid, NULL, &SimpleNetworkProtocol);
Существует полный пример кода для протокола HttpProtocol в спецификации Uefi (начиная на странице 1548) протокол Tcp4Protocol не сильно отличается.