//\r
// Tiano Implementation specific Device Path definition.\r
//\r
+#pragma pack(1)\r
typedef struct {\r
VENDOR_DEVICE_PATH VendorDevicePath;\r
- UINT32 MonotonicCount;\r
+ UINT32 Reserved;\r
+ UINT64 UniqueId;\r
} HII_VENDOR_DEVICE_PATH_NODE;\r
+#pragma pack()\r
\r
typedef struct {\r
HII_VENDOR_DEVICE_PATH_NODE Node;\r
},\r
EFI_IFR_TIANO_GUID\r
},\r
+ 0,\r
0\r
},\r
{\r
{\r
EFI_STATUS Status;\r
HII_VENDOR_DEVICE_PATH_NODE *VendorDevicePath;\r
- UINT64 MonotonicCount;\r
\r
VendorDevicePath = AllocateCopyPool (sizeof (HII_VENDOR_DEVICE_PATH), &mHiiVendorDevicePathTemplate);\r
if (VendorDevicePath == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- gBS->GetNextMonotonicCount (&MonotonicCount);\r
- VendorDevicePath->MonotonicCount = (UINT32) MonotonicCount;\r
+ //\r
+ // Use memory address as unique ID to distinguish from different device paths\r
+ //\r
+ VendorDevicePath->UniqueId = (UINT64) ((UINTN) VendorDevicePath);\r
\r
*DriverHandle = NULL;\r
- Status = gBS->InstallProtocolInterface (\r
+ Status = gBS->InstallMultipleProtocolInterfaces (\r
DriverHandle,\r
&gEfiDevicePathProtocolGuid,\r
- EFI_NATIVE_INTERFACE,\r
- VendorDevicePath\r
+ VendorDevicePath,\r
+ NULL\r
);\r
if (EFI_ERROR (Status)) {\r
return Status;\r