PDA

View Full Version : سوال: روش برگرداندن نام کارت ريدرACR38U-SPC-Rبادلفي7



khanboloky
یک شنبه 29 اردیبهشت 1392, 03:58 صبح
باسلام يک پروژه براي رابطه برقرارکردن با کارت ريدرACR38U-SPC-R دارم براي انجام کدنويسي نيازبه خواندن نام کارت ريدردارم خواهشمند است راهنمايي فرماييددرضمن شرکت فروشنده هيچ اطلاعاتي دراختيارم نگذاشته فقط درايور دراختيارم گذاشته.

بهروز عباسی
یک شنبه 29 اردیبهشت 1392, 11:18 صبح
مشخصات کامل درایوها (HDD,USB,...) (http://barnamenevis.org/showthread.php?190417-%D9%85%D8%B1%D8%AC%D8%B9-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%D8%AF%D9%84%D9%81%DB%8C&p=1730760&viewfull=1#post1730760)

khanboloky
دوشنبه 30 اردیبهشت 1392, 00:23 صبح
باسلام ودرود فراوان من کدنویسی شما رادر یک unit نوشتم ومی خاهم نتیجه رادر ListBox1 ببینم که error می دهد می خواستم کدنویسی مرا کنترل فرمایید و آنرا اصلاح کنید باتشکر
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
query: array [0 .. 11] of byte = (
00,
00,
00,
00,
00,
00,
00,
00,
00,
08,
00,
00
);
type
TStorage_Bus_Type = (BusTypeUnknown, BusTypeScsi, BusTypeAtapi, BusTypeAta,
BusType1394, BusTypeSsa, BusTypeFibre, BusTypeUsb, BusTypeRAID);
type
TSTORAGE_DEVICE_DESCRIPTOR = record
Version: dword;
Size: dword;
DeviceType: UCHAR;
DeviceTypeModifier: UCHAR;
RemovableMedia: BOOLEAN;
CommandQueueing: BOOLEAN;
VendorIdOffset: dword;
ProductIdOffset: dword;
ProductRevisionOffset: dword;
SerialNumberOffset: dword;
BusType: TStorage_Bus_Type;
RawPropertiesLength: dword;
RawDeviceProperties: array [1 .. 500] of AnsiChar;
end;

implementation
function Translate_Value(buf: TSTORAGE_DEVICE_DESCRIPTOR; offs: dword): string;
var
_Result: array [0 .. 255] of AnsiChar;
begin
if offs = 0 then
exit;
asm
pusha
pushf
xor edi,edi
xor esi,esi
mov esi,offs
lea edx,buf
lea ebx,_Result
@m1:
mov al,[edx+esi]
mov [ebx+edi],al
inc edi
inc esi
cmp al,0
jne @m1
popf
popa
end;
Result := string(_Result);
end;


{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
hDevice: NativeInt;
Status: BOOLEAN;
ReturnedLength: ULONG;
DevDesc: TSTORAGE_DEVICE_DESCRIPTOR;
begin
hDevice := CreateFile(PChar('\\.\H:'), GENERIC_READ + GENERIC_WRITE,
FILE_SHARE_READ + FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
Status := DeviceIoControl(hDevice, $002D1400, @query, sizeof(query), @DevDesc,
512, cardinal(ReturnedLength), nil);
if Status then
begin
with lst_1.Items do
begin
Add(Translate_Value(DevDesc, DevDesc.VendorIdOffset));
Add(Translate_Value(DevDesc, DevDesc.ProductIdOffset));
Add(Translate_Value(DevDesc, DevDesc.SerialNumberOffset));
end;
end;
end;