HDDシリアル取得(WMI/GetVolumeInformation)の値は一致しないのでしょうか?

質問内容

wmic diskdrive get SerialNumber
コマンドによる結果と
C++にて「GetVolumeInformation」を実行した結果が異なります。

GetVolumeInformationで同じ値を取得できないでしょうか?

前提

wmicにてシリアルを取得する方法とは別に
シリアルを取得したいと考えています。
GetVolumeInformation以外でも可能であれば、
別の方法をご享受したいです。

該当のソースコード

C++

1#include <iostream>2#include <stdio.h>3#include <string.h>4#include <windows.h>5 6int main()7{8 TCHAR szRoot[16] = TEXT("E:\\");9 TCHAR szVolume[256];10 TCHAR szSystem[256];11 DWORD dwSerial;12 DWORD dwLength;13 DWORD dwFlags;14 15 // ボリューム情報の取得16 GetVolumeInformation(szRoot,17 szVolume, sizeof(szVolume),18 &dwSerial, &dwLength, &dwFlags,19 szSystem, sizeof(szSystem));20 21 printf("シリアル:%x\n", dwSerial);22 printf("シリアル:%08x\n", dwSerial);23 printf("シリアル:%d\n", dwSerial);24}

補足情報(FW/ツールのバージョンなど)

VS2022 C++
Windows 10

CrystalDiskinfo 9.2.3で確認した所
HDDはWMICと同じ結果になりましたが、NVMEのSSDは
どれとも一致しないので少し?です。

またGetVolumeInformationで取得する際、D:とE:は同じドライブの分割ですが
異なるシリアルナンバーを返します。

コメントを投稿

0 コメント