\r
@param DevicePath Points to the start of the EFI device path.\r
\r
- @retval Size Size of the specified device path, in bytes, including the end-of-path tag.\r
+ @return Size Size of the specified device path, in bytes, including the end-of-path tag.\r
+ @retval 0 DevicePath is NULL \r
\r
**/\r
typedef\r
UINTN\r
(EFIAPI *EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE)(\r
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-; \r
+ ); \r
\r
\r
/**\r
@param DevicePath Points to the source EFI device path.\r
\r
@retval Pointer A pointer to the duplicate device path.\r
- @retval NULL insufficient memory\r
+ @retval NULL insufficient memory or DevicePath is NULL\r
\r
**/\r
typedef\r
EFI_DEVICE_PATH_PROTOCOL*\r
(EFIAPI *EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH)(\r
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-; \r
+ ); \r
\r
/**\r
Create a new path by appending the second device path to the first.\r
+ If Src1 is NULL and Src2 is non-NULL, then a duplicate of Src2 is returned. \r
+ If Src1 is non-NULL and Src2 is NULL, then a duplicate of Src1 is returned.\r
+ If Src1 and Src2 are both NULL, then a copy of an end-of-device-path is returned.\r
\r
- @param Src1 Points to the first device path. If NULL, then it is ignored.\r
- @param Src2 Points to the second device path. If NULL, then it is ignored.\r
+ @param Src1 Points to the first device path.\r
+ @param Src2 Points to the second device path.\r
\r
@retval Pointer A pointer to the newly created device path.\r
@retval NULL Memory could not be allocated\r
- or either DevicePath or DeviceNode is NULL.\r
\r
**/\r
typedef\r
(EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_PATH)(\r
IN CONST EFI_DEVICE_PATH_PROTOCOL *Src1,\r
IN CONST EFI_DEVICE_PATH_PROTOCOL *Src2\r
- )\r
-; \r
+ ); \r
\r
/**\r
Creates a new path by appending the device node to the device path.\r
+ If DeviceNode is NULL then a copy of DevicePath is returned. \r
+ If DevicePath is NULL then a copy of DeviceNode, followed by an end-of-device path device node is returned.\r
+ If both DeviceNode and DevicePath are NULL then a copy of an end-of-device-path device node is returned.\r
\r
@param DevicePath Points to the device path.\r
@param DeviceNode Points to the device node.\r
\r
@retval Pointer A pointer to the allocated device node.\r
- @retval NULL Memory could not be allocated\r
- or either DevicePath or DeviceNode is NULL.\r
+ @retval NULL There was insufficient memory.\r
\r
**/\r
typedef\r
(EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_NODE)(\r
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode\r
- )\r
-;\r
+ );\r
\r
/**\r
Creates a new path by appending the specified device path instance to the specified device path.\r
(EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_INSTANCE)(\r
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance\r
- )\r
-; \r
+ ); \r
\r
/**\r
Creates a copy of the current device path instance and returns a pointer to the next device path\r
device path instance or NULL if there are no more device\r
path instances in the device path. \r
@param DevicePathInstanceSize On output, this holds the size of the device path instance,\r
- in bytes or zero, if DevicePathInstance is zero.\r
+ in bytes or zero, if DevicePathInstance is NULL.\r
+ If NULL, then the instance size is not output.\r
\r
@retval Pointer A pointer to the copy of the current device path instance.\r
@retval NULL DevicePathInstace was NULL on entry or there was insufficient memory.\r
(EFIAPI *EFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE)(\r
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathInstance,\r
OUT UINTN *DevicePathInstanceSize\r
- )\r
-; \r
+ ); \r
\r
/**\r
Creates a device node\r
IN UINT8 NodeType,\r
IN UINT8 NodeSubType,\r
IN UINT16 NodeLength\r
-)\r
-; \r
+); \r
\r
/**\r
Returns whether a device path is multi-instance.\r
BOOLEAN\r
(EFIAPI *EFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE)(\r
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-; \r
+ ); \r
\r
-/**\r
- @par Protocol Description:\r
- This protocol is used to creates and manipulates device paths and device nodes.\r
-\r
- @param GetDevicePathSize \r
- Returns the size of the specified device path, in bytes.\r
-\r
- @param DuplicateDevicePath\r
- Duplicates a device path structure.\r
- \r
- @param AppendDeviceNode \r
- Appends the device node to the specified device path.\r
-\r
- @param AppendDevicePath \r
- Appends the device path to the specified device path.\r
-\r
- @param AppendDevicePathInstance\r
- Appends a device path instance to another device path.\r
-\r
- @param GetNextDevicePathInstance\r
- Retrieves the next device path instance from a device path data structure.\r
-\r
- @param IsDevicePathMultiInstance\r
- Returns TRUE if this is a multi-instance device path.\r
-\r
- @param CreateDeviceNode \r
- Allocates memory for a device node with the specified type and sub-type.\r
-**/ \r
+///\r
+/// This protocol is used to creates and manipulates device paths and device nodes.\r
+/// \r
typedef struct {\r
EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE GetDevicePathSize;\r
EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH DuplicateDevicePath;\r