たとえば、こんな感じ。
元々SCSI用なので、ATAの場合はベンダ名がプロダクト名に入ってきます。
・・・だけど、ダイナミックディスクでは取得できない・・・もっと適切なAPIがあるのだと思います。

#include <devioctl.h>
#include <ntdddisk.h>

HANDLE hFileHandle = CreateFile("\\\\.\\c:", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL) ;
if (INVALID_HANDLE_VALUE != hFileHandle) {
UCHAR buffer[2048] ;
ULONG returned = 0 ;

STORAGE_PROPERTY_QUERY spq ;
spq.PropertyId = StorageDeviceProperty ;
spq.QueryType= PropertyStandardQuery ;

BOOL status = DeviceIoControl(hFileHandle, IOCTL_STORAGE_QUERY_PROPERTY, &spq, sizeof(spq), buffer, sizeof(buffer), &returned, 0) ;
if (status) {
STORAGE_DEVICE_DESCRIPTOR* pSDD = (STORAGE_DEVICE_DESCRIPTOR*)buffer;
char* psz0 = pSDD->VendorIdOffset? &((char*)pSDD)[pSDD->VendorIdOffset] : NULL ;
char* psz1 = pSDD->ProductIdOffset ? &((char*)pSDD)[pSDD->ProductIdOffset] : NULL ;
char* psz2 = pSDD->ProductRevisionOffset ? &((char*)pSDD)[pSDD->ProductRevisionOffset] : NULL ;
char* psz3 = pSDD->SerialNumberOffset ? &((char*)pSDD)[pSDD->SerialNumberOffset] : NULL ;
}
}