20#define DUID_VERSION_1 1
22#define DUID_HARDWARE_IDS_ONLY 0
23#define DUID_INCLUDE_SOFTWARE_IDS 1
25#define DUID_MATCH_ERROR(_duid_status) ((_duid_status) >= DuidErrorGeneral ? TRUE : FALSE)
26#define DUID_MATCH_SUCCESS(_duid_status) ((_duid_status) < DuidErrorGeneral ? TRUE : FALSE)
76 if (Duid1->StorageDeviceIdOffset == 0 && Duid1->StorageDeviceOffset == 0 &&
77 Duid1->DriveLayoutSignatureOffset == 0)
82 if (Duid2->StorageDeviceIdOffset == 0 && Duid2->StorageDeviceOffset == 0 &&
83 Duid2->DriveLayoutSignatureOffset == 0)
88 if (Duid1->Size == Duid2->Size)
90 if (
memcmp(Duid1, Duid2, Duid1->Size) == 0)
96 if (Duid1->StorageDeviceIdOffset && Duid2->StorageDeviceIdOffset)
116 if (idDesc1->Size == idDesc2->Size)
118 if (
memcmp(idDesc1, idDesc2, idDesc1->Size) == 0)
126 for (idx1 = 0; idx1 < idDesc1->NumberOfIdentifiers; idx1++)
136 for (idx2 = 0; idx2 < idDesc2->NumberOfIdentifiers; idx2++)
154 if (Duid1->StorageDeviceOffset && Duid2->StorageDeviceOffset)
168 if (desc1->Size == desc2->Size)
170 if (
memcmp(desc1, desc2, desc1->Size) == 0)
176 if (desc1->SerialNumberOffset && desc2->SerialNumberOffset)
181 string1 = (
const char *)((
PUCHAR)desc1 + desc1->SerialNumberOffset);
182 string2 = (
const char *)((
PUCHAR)desc2 + desc2->SerialNumberOffset);
186 if (desc1->VendorIdOffset && desc2->VendorIdOffset)
188 string1 = (
const char *)((
PUCHAR)desc1 + desc1->VendorIdOffset);
189 string2 = (
const char *)((
PUCHAR)desc2 + desc2->VendorIdOffset);
197 if (desc1->ProductIdOffset && desc2->ProductIdOffset)
199 string1 = (
const char *)((
PUCHAR)desc1 + desc1->ProductIdOffset);
200 string2 = (
const char *)((
PUCHAR)desc2 + desc2->ProductIdOffset);
213 if (Duid1->DriveLayoutSignatureOffset && Duid2->DriveLayoutSignatureOffset)
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
static CHAR string1[MAX_PATH]
static CHAR string2[MAX_PATH]
struct _STORAGE_IDENTIFIER * PSTORAGE_IDENTIFIER
* PSTORAGE_DEVICE_DESCRIPTOR
STORAGE_DEVICE_DESCRIPTOR
STORAGE_DEVICE_ID_DESCRIPTOR
@ StorageIdTypeScsiNameString
* PSTORAGE_DEVICE_ID_DESCRIPTOR
struct _STORAGE_DEVICE_LAYOUT_SIGNATURE STORAGE_DEVICE_LAYOUT_SIGNATURE
FORCEINLINE DUID_MATCH_STATUS CompareStorageDuids(_In_ PSTORAGE_DEVICE_UNIQUE_IDENTIFIER Duid1, _In_ PSTORAGE_DEVICE_UNIQUE_IDENTIFIER Duid2)
struct _STORAGE_DEVICE_UNIQUE_IDENTIFIER STORAGE_DEVICE_UNIQUE_IDENTIFIER
@ DuidErrorVersionMismatch
@ DuidErrorInvalidDeviceIdDescSize
@ DuidErrorInvalidLayoutSigSize
@ DuidErrorInvalidLayoutSigVersion
@ DuidErrorInvalidDeviceDescSize
struct _STORAGE_DEVICE_LAYOUT_SIGNATURE * PSTORAGE_DEVICE_LAYOUT_SIGNATURE
enum _DUID_MATCH_STATUS DUID_MATCH_STATUS
struct _STORAGE_DEVICE_UNIQUE_IDENTIFIER * PSTORAGE_DEVICE_UNIQUE_IDENTIFIER
union _STORAGE_DEVICE_LAYOUT_SIGNATURE::@2229 DeviceSpecific
ULONG StorageDeviceIdOffset
ULONG DriveLayoutSignatureOffset
ULONG StorageDeviceOffset
STORAGE_IDENTIFIER_CODE_SET CodeSet
STORAGE_ASSOCIATION_TYPE Association
STORAGE_IDENTIFIER_TYPE Type