Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-04-2009
jagjag jagjag is offline
Registrado
 
Registrado: nov 2006
Posts: 7
Poder: 0
jagjag Va por buen camino
Obtener el ID hardware (No. de serie) de la memoria USB

Hola a todos y gracias por la ayuda que me puedan proporcionar.

Les quiero preguntar si alguien de ustedes sabe como obtener el ID hardware de las memorias USB.

Se que es con alguna api de Windows, pero no se cual ni como se haria esto.

En los sistemas oprativos como Windows XP o Vista, si uno ve en el administrador de dispositivos, en Controladoras de Bus Serie Universal, nos aparece Dispositivo de Almacenamiento USB (o sea la memoria USB), al darle chick derecho en propiedades, e irnos a DETALLES, en Propiedad si seleccionamos el ID de Hardware nos aparece el ID de fabrica de la memoria USB, quiero saber la manera de poderlo obtener mediante una forma en delphi 6.
Ya me di muchas vueltas en los foros pero no aparece nada de esto que requiero.

Espero sus respuestas y gracias por su amabilidad y atencion
Responder Con Cita
  #2  
Antiguo 18-04-2009
Mav Mav is offline
Miembro
 
Registrado: jun 2007
Posts: 39
Poder: 0
Mav Va por buen camino
Wink Id de hardware

Puede que te sirva esto:
Código Delphi [-]
var
query:array[0..11] of byte = (00, 00, 00, 00, 00, 00, 00, 00, 00, 08, 00, 00);
type
 Storage_Bus_Type = ( BusTypeUnknown, BusTypeScsi, BusTypeAtapi, BusTypeAta,
                     BusType1394, BusTypeSsa, BusTypeFibre, BusTypeUsb, BusTypeRAID );

type
PSTORAGE_DEVICE_DESCRIPTOR=record
Version:dword;
Size:dword;
DeviceType:UCHAR;
DeviceTypeModifier:UCHAR;
RemovableMedia:BOOLEAN;
CommandQueueing:BOOLEAN;
VendorIdOffset:dword;
ProductIdOffset:dword;
ProductRevisionOffset:dword;
SerialNumberOffset:dword;
BusType:STORAGE_BUS_TYPE;
RawPropertiesLength:dword;
RawDeviceProperties:array[1..500]of CHAR;
end;

function getValue(buf:PSTORAGE_DEVICE_DESCRIPTOR;offs:dword  ):string;
var
mas:array[0..255] of char;
begin
if offs=0 then exit;
asm
push eax
push ebx
push edx
push esi
push edi
xor edi,edi
xor esi,esi
mov esi,offs
lea edx,buf
lea ebx,mas
@m1:
mov al,[edx+esi]
mov [ebx+edi],al
inc edi
inc esi
cmp al,0
jne @m1
pop edi
pop esi
pop edx
pop ebx
pop eax
end;
result:=string(mas);
end;

function NUM(s:string):boolean;
begin
result:=true;
case s[1] of
'0'..'9','A'..'F','a'..'f':;
else result:=false;
end;
case s[2] of
'0'..'9','A'..'F','a'..'f':;
else result:=false;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
hDevice:THANDLE;
status:BOOLean;
returnedLength:ULONG;
devDescSTORAGE_DEVICE_DESCRIPTOR;
s,ss:string;
c:char;
x,y:integer;
begin
stringgrid1.Rows[stringgrid1.RowCount].Clear;
stringgrid1.Cells[0,0]:='Disk';
stringgrid1.Cells[1,0]:='VendorId';
stringgrid1.Cells[2,0]:='ProductId';
stringgrid1.Cells[3,0]:='ProductRev';
stringgrid1.Cells[4,0]:='Accommodation';
stringgrid1.Cells[5,0]:='SerialNumber';
x:=1;
for c:='A' to 'Z' do begin
hDevice:=CreateFile(pansichar('\\.\'+c+':'), 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
   stringgrid1.Cells[0,x]:=c;
//   if (devDesc.RemovableMedia) then memo1.Lines.Add('Removable Media');
   stringgrid1.Cells[1,x]:=getValue(devDesc,devDesc.VendorIdOffset);
   stringgrid1.Cells[2,x]:=getValue(devDesc,devDesc.ProductIdOffset);
   stringgrid1.Cells[3,x]:=getValue(devDesc,devDesc.ProductRevisionOffset);  
   case devDesc.BusType of
     BusTypeUnknown:s:='Unknown';
     BusTypeScsi:s:='SCSI';
     BusTypeAtapi:s:='ATAPI';
     BusTypeAta:s:='ATA';
     BusType1394:s:='IEEE 1394';
     BusTypeSsa:s:='SSA';
     BusTypeFibre:s:='FIBRE';
     BusTypeUsb:s:='USB';
     BusTypeRAID:s:='RAID';
    end;
   stringgrid1.Cells[4,x]:=s;
   ss:=getValue(devDesc,devDesc.SerialNumberOffset);
   s:='';
   for y:=1 to length(ss) div 2 do
    begin
    if not NUM(copy(ss,y*2-1,2)) then break;
    s:=s+chr(strtoint('$'+copy(ss,y*2-1,2)));
    end;
   stringgrid1.Cells[5,x]:=s;
   inc(x);
  end;
end;
end;

end.
Saludos..
Responder Con Cita
  #3  
Antiguo 20-04-2009
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Creo que la API GetVolumeInformation te servira.

Saludos.
Responder Con Cita
  #4  
Antiguo 20-04-2009
Avatar de Chogo
Chogo Chogo is offline
Miembro
 
Registrado: may 2005
Ubicación: Pto Cortes,Honduras,C.A.
Posts: 148
Poder: 20
Chogo Va por buen camino
¿no se pierde el id al formatear la usB?.
Responder Con Cita
  #5  
Antiguo 20-04-2009
jagjag jagjag is offline
Registrado
 
Registrado: nov 2006
Posts: 7
Poder: 0
jagjag Va por buen camino
Gracias Mav

Muchas gracias por tu respuesta, pero no me da la informacion que requiero, sigue sin darme el ID Hardware de la memoria USB.

Sigo investigando y espero que me puedan hechar la mano.
Gracias a Todos
Responder Con Cita
  #6  
Antiguo 20-04-2009
jagjag jagjag is offline
Registrado
 
Registrado: nov 2006
Posts: 7
Poder: 0
jagjag Va por buen camino
Ya tambien vi lo del volumen

Ya revise tambien otro que es el api para obtener el volumen de la usb, pero no me sirve por que si se formatea la memoria se pierde el volumen.

Necesito el numero de hardware que aunque se formatee la unidad este numero no se pierda
Responder Con Cita
  #7  
Antiguo 21-04-2009
jagjag jagjag is offline
Registrado
 
Registrado: nov 2006
Posts: 7
Poder: 0
jagjag Va por buen camino
Pues ya investigando

Ya revisando, al parecer las memorias no tienen un id de identificacion de hardware, ya que vi que el id que aparece es el que te pone el sostema operativo, mas no es el que tienen las USB.

Asi que al parecer no se puede sacar por que no existe como tal. BBBuuuuuuu
Gracias
Responder Con Cita
  #8  
Antiguo 21-04-2009
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 21
cHackAll Va por buen camino
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #9  
Antiguo 04-11-2014
charlyalize charlyalize is offline
Registrado
NULL
 
Registrado: nov 2014
Posts: 2
Poder: 0
charlyalize Va por buen camino
Wink

Hola amigos¡¡¡
Se que este tema es viejo pero me gustaría implementarlo como demonio para licenciar el acceso a una pagina web¡¡¡

si todavía lo tienen se lo agradezco¡¡¡

Saludos...
Charly¡¡¡
Responder Con Cita
  #10  
Antiguo 04-11-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por charlyalize Ver Mensaje
Hola amigos¡¡¡
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Por favor, crea un hilo nuevo, no tiene mucho que ver lo que has preguntado con esto, gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener una lista del hardware instalado vroa74 API de Windows 0 16-05-2008 18:53:15
Numero de Serie de memoria USB carlocf Varios 2 03-03-2008 18:40:00
Como obtener datos del hardware (RAM, MB, Video) JoAnCa API de Windows 4 22-10-2007 23:30:44
obtener el hardware instalado droguerman OOP 1 14-05-2007 19:01:58
Obtener Hardware Instalado diegofhernando Varios 4 09-03-2004 21:28:36


La franja horaria es GMT +2. Ahora son las 00:58:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi