2016-12-19 6 views
-2
#include "stdafx.h" 
#include <stdio.h> 
#include <stdlib.h> 
#include <windows.h> 
#include <string.h> 
#include <process.h> 
#include <WinIoCtl.h> 
#include <Winbase.h> 

typedef struct _MEDIA_SERIAL_NUMBER_DATA { 
     ULONG SerialNumberLength; 
     ULONG Result; 
     ULONG Retreived; 
     DWORD SerialNumberData[]; 
} MEDIA_SERIAL_NUMBER_DATA, *PMEDIA_SERIAL_NUMBER_DATA; // the structure of IOCTL_MEDIA_SERIAL_NUMBER_DATA 

int main() { 
    HANDLE hard; 
    bool result; 
    MEDIA_SERIAL_NUMBER_DATA val; 
    char buf[sizeof(MEDIA_SERIAL_NUMBER_DATA)]; 
    MEDIA_SERIAL_NUMBER_DATA * p = (MEDIA_SERIAL_NUMBER_DATA *) buf; 

    hard = CreateFile(L"\\\\.\\C:", 0, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0); 
    result = DeviceIoControl(hard, IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER, NULL, 0, buf, sizeof buf, 0, NULL); 

    if (hard == INVALID_HANDLE_VALUE) 
     printf("Terminal error : invalid handle value \n"); 

    printf("valeur Handle : %c \n", hard); 
    printf("valeur retour : %d \n", result); 
    printf("valeur serial : %d \n", p->SerialNumberData);  
    printf("valeur longeur num serie : %d \n", p->SerialNumberLength); 

    CloseHandle(hard); // free the Handle  
    system("pause"); 
    return 0; 
} 

を取得しようとしている:私がコンパイルしたコードのこの部分を実行すると、私は結果を以下の取得ハードドライブのシリアル番号やバッテリータグ

valeur Handle : D 
valeur retour : 0 
valeur serial : 15530164  
valeur longeur num serie : -858993460 
+4

1)コードを正しくインデントします。現在、それは判読不能です。 2)取得した出力を、画像に提供するのではなく、質問にコピーします。 3)私たちはあなたの出力をとにかく理解できず、英語で提供します。 4)あなたは質問プレビューを見ていませんでしたか?それは理由があります。 –

+2

C++ストリームI/Oを使用すると、型の問題が少なくなります。 – molbdnilo

+0

@molbdnilo:C++ I/Oストリームを使用してデバイスIO制御コードを送信することはできません。しばしば良い提案ですが、確かにこの場合はそうではありません。 – IInspectable

答えて

0

を考えてみましょういくつかのドキュメントを読んでください。

  1. ほとんどすべてのprintfが間違ったフォーマット文字列を使用しています。
  2. あなたの構造はIOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBERのためにDeviceIoControlが返す構造ではありません。
  3. lpOverlappedNULLの場合、lpBytesReturnedNULLにはなりません。
  4. IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBERは、USBデバイスのシリアル番号を取得します。
  5. DeviceIoControlからの戻り値ゼロは失敗を示します。
+0

hhmmm okk、答えはthnxです – JuJi

関連する問題