100分求读SD卡序列号代码,该如何处理

100分求读SD卡序列号代码
100分求读SD卡序列号代码

非常感谢


------解决方案--------------------
应该是硬件附带的驱动才可以吧
------解决方案--------------------
用IOCTL_DISK_GET_STORAGEID ,這應該是手機操作系統的,不知道pc操作系統是否有提供。
參考msdn描述http://msdn.microsoft.com/en-us/library/ms901392.aspx
------解决方案--------------------
你用DeviceIoControl,傳IOCTL_STORAGE_GET_MEDIA_TYPES  看能不能得到
------解决方案--------------------
我有取U盘号的,不知道修改后能不能读到SD卡的号,理论上他们都是移动盘,应该可以.

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Registry;

  function GetUSBDiskID(const DiskID:string; var PID:string):Boolean;

implementation

const
  DIGCF_PRESENT = $00000002;
  DIGCF_DEVICEINTERFACE = $00000010;
  ANYSIZE_ARRAY = 1;
  SetupAPI     = 'SetupAPI.DLL';

type
  HDEVINFO = Pointer;
  ULONG_PTR = DWORD;

  PSPDevInfoData = ^TSPDevInfoData;
  SP_DEVINFO_DATA = packed record
    cbSize:DWORD;
    ClassGuid:TGUID;
    DevInst:DWORD;
    Reserved:ULONG_PTR;
  end;
  {$EXTERNALSYM SP_DEVINFO_DATA}
  TSPDevInfoData = SP_DEVINFO_DATA;

  PSPDeviceInterfaceData = ^TSPDeviceInterfaceData;
  SP_DEVICE_INTERFACE_DATA = packed record
    cbSize:DWORD;
    InterfaceClassGuid:TGUID;
    Flags:DWORD;
    Reserved:ULONG_PTR;
  end;
  {$EXTERNALSYM SP_DEVICE_INTERFACE_DATA}
  TSPDeviceInterfaceData = SP_DEVICE_INTERFACE_DATA;

  PSPDeviceInterfaceDetailDataA = ^TSPDeviceInterfaceDetailDataA;
  SP_DEVICE_INTERFACE_DETAIL_DATA_A = packed record
    cbSize:DWORD;
    DevicePath:array[0..ANYSIZE_ARRAY - 1] of AnsiChar;
  end;
  {$EXTERNALSYM SP_DEVICE_INTERFACE_DETAIL_DATA_A}
  TSPDeviceInterfaceDetailDataA = SP_DEVICE_INTERFACE_DETAIL_DATA_A;

function SetupDiGetClassDevsA(ClassGuid:PGUID; const Enumerator:PAnsiChar;
  hwndParent:HWND; Flags:DWORD):HDEVINFO; Stdcall; External SetupAPI;

function SetupDiEnumDeviceInterfaces(DeviceInfoSet:HDEVINFO;
  DeviceInfoData:PSPDevInfoData; const InterfaceClassGuid:TGUID;
  MemberIndex:DWORD; var DeviceInterfaceData:TSPDeviceInterfaceData):BOOL;
    Stdcall; External SetupAPI;
{$EXTERNALSYM SetupDiEnumDeviceInterfaces}

function SetupDiGetDeviceInterfaceDetailA(DeviceInfoSet:HDEVINFO;
  DeviceInterfaceData:PSPDeviceInterfaceData;
  DeviceInterfaceDetailData:PSPDeviceInterfaceDetailDataA;
  DeviceInterfaceDetailDataSize:DWORD; var RequiredSize:DWORD;
  Device:PSPDevInfoData):BOOL; Stdcall; External SetupAPI;

function SetupDiDestroyDeviceInfoList(DeviceInfoSet:HDEVINFO):BOOL; Stdcall;
  External SetupAPI;