Api GetVolumeInformation

07/06/2004 - 20:50 por Zapata Jorge | Informe spam
Desde ya agradezco su atencion.

Mi problema es el siguiente : deseo obtener el numero de
serie del disco fijo ,para ello recurro a la funcion api
GetVolumeInformation(), la declaro de la siguiente forma

Declare short GetVolumeInformation in Win32api;
string,string,integer,string,string,string,;
string,integer

Las variables que defini como string las cargo con una
cadena de 255 blancos y las integer con el 255
Ahora el tema es que la que defini como
lPvolumeSerialNumber que seria la cuarta variable y que es
string ,me devuelve caracteres raros.

Buscando encontre una nota que decia que ocurre eso porque
devuelve un valor decimal y que si lo quiero en
Hexadecimal, debo primero convertirlo en binario y luego a
hexadecimal.

Me dan una funcion para convertir a binario y es en la que
tengo problemas ya que le paso ese supuesto valor decimal
o sea la variable lPvolumeSerialNUmber para transformarlo
en binario y me da error la funcion es la siguiente

function dec2Bin
parameters nValue
private nValue,cBinstr,nRest

cbinstr=""
do while .t.
nrest=mod(nvalue,2) && aca me da el error
nvalue=int(nvalue/2)
cbinstr=str(nrest,1)+cbinstr
if nValue=0
exit
endif
enddo

y no paso de esta funcion ,por lo que no puedo obtener el
nro.de serie
 

Leer las respuestas

#1 Luis María Guayán
07/06/2004 - 21:22 | Informe spam
Mira en PortalFox que hay varias funciones para el volumen

http://www.portalfox.com/article.phpsid0

http://www.portalfox.com/article.phpsid

http://www.portalfox.com/article.phpsid•4

http://www.portalfox.com/article.phpsidb3

Tambien busca que hay para pasar de decimal a hexadecimal y viceversa.


Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos

"Zapata Jorge" escribió en el mensaje
news:1924a01c44cc0$4b7bc190$
Desde ya agradezco su atencion.

Mi problema es el siguiente : deseo obtener el numero de
serie del disco fijo ,para ello recurro a la funcion api
GetVolumeInformation(), la declaro de la siguiente forma

Declare short GetVolumeInformation in Win32api;
string,string,integer,string,string,string,;
string,integer

Las variables que defini como string las cargo con una
cadena de 255 blancos y las integer con el 255
Ahora el tema es que la que defini como
lPvolumeSerialNumber que seria la cuarta variable y que es
string ,me devuelve caracteres raros.

Buscando encontre una nota que decia que ocurre eso porque
devuelve un valor decimal y que si lo quiero en
Hexadecimal, debo primero convertirlo en binario y luego a
hexadecimal.

Me dan una funcion para convertir a binario y es en la que
tengo problemas ya que le paso ese supuesto valor decimal
o sea la variable lPvolumeSerialNUmber para transformarlo
en binario y me da error la funcion es la siguiente

function dec2Bin
parameters nValue
private nValue,cBinstr,nRest

cbinstr=""
do while .t.
nrest=mod(nvalue,2) && aca me da el error
nvalue=int(nvalue/2)
cbinstr=str(nrest,1)+cbinstr
if nValue=0
exit
endif
enddo

y no paso de esta funcion ,por lo que no puedo obtener el
nro.de serie

Preguntas similares