FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
GetVolumeInformation
Buenas a todos.
Estoy intentando poder sacar el número de serie de un disco duro de una unidad de red. Con la función GetVolumeInformation consigo obtenerla, pero no me funciona con W95, 98, Me. Alguien sabe de alguna función o manera de poder sacarlo?? |
#2
|
||||
|
||||
Según la documentación, esta función tendría que funcionar en todos los Win9x.... ¿Cómo la estas utilizando?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
Para hacer una prueba creo la siguiente funcion:
function TForm1.GetVolumeSerialNumber(const drive: TFilename): DWord; var VolumeName, FileSystemName: array[0..MAX_PATH-1] of char; VolumeSerialNumber, MaxFilenameLength, FileSystemFlags: DWord; begin GetVolumeInformation(PChar(drive), VolumeName, MAX_PATH, @VolumeSerialNumber, MaxFilenameLength, FileSystemFlags, FileSystemName, MAX_PATH); Result := VolumeSerialNumber; end; En la documentación que he encontrado dice que funciona en plataforma win9x pero yo no lo consigo. Esta misma función en plataforma NT si funciona. Me refiero a obtener el número de serie de un disco duro de un equipo en red. GetVolumeSerialNumber('c:\') si funciona pero no funciona si mapeo una unidad de red. En la documentación dice que hay que poner lo siguiente: GetVolumeSerialNumber('\\servidor\carpeta\') o GetVolumeSerialNumber('W') donde W es la unidad de red mapeada. Pero...a mi desde luego no me funciona, siempre me devuelve un 0(cero). A ver si con esta explicación alguien me puede ayudar. |
#4
|
||||
|
||||
Esto me ha funcionado en un Win98:
Código:
function GetVolumeSerialNumber(const ADrive: TFilename): DWord; var MaxCompLen, FileSysFlags : Cardinal; begin Result := 0; GetVolumeInformation(PChar(ADrive), nil, 0, @Result, MaxCompLen, FileSysFlags, nil, 0); end; procedure TForm1.Button1Click(Sender: TObject); begin // La unidad mapeada es F Caption := IntToStr(GetVolumeSerialNumber('F')); end;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. Última edición por delphi.com.ar fecha: 12-12-2003 a las 15:02:40. |
#5
|
|||
|
|||
Bueno, he probado en Delphi 3 y 5, pero no funciona correctamente.
Una prueba que he hecho es en el equipo 1 hago un GetVolumeSerialNumber('C:\'). En el equipo 2 mapeo la unidad C:\ del equipo 1 (F por ejemplo) y hago en el equipo 2 GetVolumeSerialNumber('F') y no me dan valores iguales. Con lo cual no funciona. Creo que se entiende bien. Esto me esta volviendo un poco loco. Gracias Delphi.com.ar. |
#6
|
||||
|
||||
Evidentemente no funciona, te recomendaría que busques en el MSDN si es posible hacer esto desde un Win9x... fíjate que he modificado la funcion, y de este modo retorna siempre 0.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
|||
|
|||
GetVolumeInformacion en Red
Hola
Por lo que he podido leer en este foro y por lo que he probado en mi programa, GetVolumeInofrmacion no funciona cuando se trata de una unidad de red. ¿Alguién puede indicarme como podría obtener esta información? Si no existe posiblilidad, ¿Se puede optener el número de serie de la placa base de un equipo en red? Gracias por vuestra ayuda. |
|
|
|