--*/
-#include <Uefi/UefiSpec.h>
-#include <Protocol/DevicePath.h>
#include "DevicePath.h"
-DEVICE_PATH_DRIVER_PRIVATE_DATA mPrivateData;
-
-EFI_GUID mEfiDevicePathMessagingUartFlowControlGuid = DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL;
-EFI_GUID mEfiDevicePathMessagingSASGuid = DEVICE_PATH_MESSAGING_SAS;
-
-STATIC EFI_DEVICE_PATH_UTILITIES_PROTOCOL mDevicePathUtilitiesProtocol = {
- GetDevicePathSize,
- DuplicateDevicePath,
- AppendDevicePath,
- AppendDeviceNode,
- AppendDevicePathInstance,
- GetNextDevicePathInstance,
- IsDevicePathMultiInstance,
- CreateDeviceNode
-};
-
-STATIC EFI_DEVICE_PATH_TO_TEXT_PROTOCOL mDevicePathToTextProtocol = {
+EFI_HANDLE mDevicePathHandle = NULL;
+
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_UTILITIES_PROTOCOL mDevicePathUtilities = {\r
+ GetDevicePathSizeProtocolInterface,
+ DuplicateDevicePathProtocolInterface,
+ AppendDevicePathProtocolInterface,
+ AppendDeviceNodeProtocolInterface,
+ AppendDevicePathInstanceProtocolInterface,
+ GetNextDevicePathInstanceProtocolInterface,
+ IsDevicePathMultiInstanceProtocolInterface,
+ CreateDeviceNodeProtocolInterface
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_TO_TEXT_PROTOCOL mDevicePathToText = {\r
ConvertDeviceNodeToText,
ConvertDevicePathToText
-};
-
-STATIC EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL mDevicePathFromTextProtocol = {
- ConvertTextToDeviceNode,
- ConvertTextToDevicePath
-};
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL mDevicePathFromText = {\r
+ ConvertTextToDeviceNode, \r
+ ConvertTextToDevicePath \r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_GUID mEfiDevicePathMessagingUartFlowControlGuid = DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL;
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_GUID mEfiDevicePathMessagingSASGuid = DEVICE_PATH_MESSAGING_SAS;
EFI_STATUS
EFIAPI
--*/
{
EFI_STATUS Status;
-
- mPrivateData.Signature = DEVICE_PATH_DRIVER_SIGNATURE;
-
- mPrivateData.DevicePathUtilities.GetDevicePathSize = GetDevicePathSize;
- mPrivateData.DevicePathUtilities.DuplicateDevicePath = DuplicateDevicePath;
- mPrivateData.DevicePathUtilities.AppendDevicePath = AppendDevicePath;
- mPrivateData.DevicePathUtilities.AppendDeviceNode = AppendDeviceNode;
- mPrivateData.DevicePathUtilities.AppendDevicePathInstance = AppendDevicePathInstance;
- mPrivateData.DevicePathUtilities.GetNextDevicePathInstance = GetNextDevicePathInstance;
- mPrivateData.DevicePathUtilities.IsDevicePathMultiInstance = IsDevicePathMultiInstance;
- mPrivateData.DevicePathUtilities.CreateDeviceNode = CreateDeviceNode;
-
- mPrivateData.DevicePathToText.ConvertDeviceNodeToText = ConvertDeviceNodeToText;
- mPrivateData.DevicePathToText.ConvertDevicePathToText = ConvertDevicePathToText;
-
- mPrivateData.DevicePathFromText.ConvertTextToDeviceNode = ConvertTextToDeviceNode;
- mPrivateData.DevicePathFromText.ConvertTextToDevicePath = ConvertTextToDevicePath;
-
- mPrivateData.Handle = NULL;
-
- Status = gBS->InstallMultipleProtocolInterfaces (
- &mPrivateData.Handle,
- &gEfiDevicePathUtilitiesProtocolGuid,
- &mPrivateData.DevicePathUtilities,
- &gEfiDevicePathToTextProtocolGuid,
- &mPrivateData.DevicePathToText,
- &gEfiDevicePathFromTextProtocolGuid,
- &mPrivateData.DevicePathFromText,
- NULL
- );
-
+
+ Status = EFI_UNSUPPORTED;
+ if (FeaturePcdGet (PcdDevicePathSupportDevicePathToText)) {\r
+ if (FeaturePcdGet (PcdDevicePathSupportDevicePathFromText)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (
+ &mDevicePathHandle,
+ &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,
+ &gEfiDevicePathToTextProtocolGuid, &mDevicePathToText,
+ &gEfiDevicePathFromTextProtocolGuid, &mDevicePathFromText,
+ NULL
+ );
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (
+ &mDevicePathHandle,
+ &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,
+ &gEfiDevicePathToTextProtocolGuid, &mDevicePathToText,
+ NULL
+ );
+ }\r
+ } else {\r
+ if (FeaturePcdGet (PcdDevicePathSupportDevicePathFromText)) {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (
+ &mDevicePathHandle,
+ &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,
+ &gEfiDevicePathFromTextProtocolGuid, &mDevicePathFromText,
+ NULL
+ );
+ } else {\r
+ Status = gBS->InstallMultipleProtocolInterfaces (
+ &mDevicePathHandle,
+ &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,
+ NULL
+ );
+ }\r
+ }\r
return Status;
}