Re: Wrapping GetVolumeInfo: help required
- Posted by euman at bellsouth.net
Oct 12, 2001
You do this:
allocate_string(repeat(' ',nVolumeNameSize))
I do this:
lpVolumeNameBuffer = allocate(nVolumeNameSize)
mem_set(lpVolumeNameBuffer,0,nVolumeNameSize)
Anyone care to share why I like typeing?
Euman
euman at bellsouth.net
----- Original Message -----
From: <Henri.Goffin at sbs.be>
To: "EUforum" <EUforum at topica.com>
Sent: Friday, October 12, 2001 06:34
Subject: Wrapping GetVolumeInfo: help required
>
> Hi,
>
> this is my first serious attempt to wrap an API call, namely GetVolumeInfo. I
> get error code 24 which, if i'm right, means
>
> ERROR_BAD_LENGTH: The program issued a command but the command length is
> incorrect.
>
> Can someone tell me what's wrong?
>
> Henri Goffin
>
> ------<code starts here. Thanks to Al Getz for the 'getdrive.exw' inspiration
> >---------------
> include dll.e
> include msgbox.e
> include print.e
> include get.e
> include tk_mem.e
>
> without warning
> with trace
> global atom hKernel32_dll
> ,GetLastError
> ,hGetVolumeInfo
> ,lpRootPathName
> ,lpVolumeNameBuffer
> ,nVolumeNameSize
> ,lpVolumeSerialNumber
> ,lpMaximumComponentLength
> ,lpFileSystemFlags
> ,lpFileSystemNameBuffer
> ,nFileSystemNameSize
> ,char
> ,jk
>
> sequence vol_name
> atom mbretv, rc
>
> hKernel32_dll=open_dll("kernel32.dll")
>
> if hKernel32_dll=0 then
> mbretv=message_box( "could not locate
> Kernel32.dll","GetVolumeInfo.exw",MB_ICONHAND+MB_TASKMODAL )
> abort(1)
> end if
>
> hGetVolumeInfo=
> define_c_func(hKernel32_dll, "GetVolumeInformationA",
> {C_POINTER, C_POINTER, C_DOUBLE, C_POINTER, C_POINTER, C_POINTER,
> C_POINTER, C_DOUBLE}, C_INT)
> if hGetVolumeInfo<0 then
> mbretv=message_box( "could not link to c function"& "\n" &
> "GetVolumeInformationA in
Kernel32.dll","GetDrives.exw",MB_ICONHAND+MB_TASKMODAL)
> abort(1)
> end if
> GetLastError = define_c_func( hKernel32_dll, "GetLastError", {}, C_INT )
> lpRootPathName = allocate_string("C:\\")
> nVolumeNameSize = 24
> lpVolumeNameBuffer = allocate_string(repeat(' ',nVolumeNameSize))
> lpVolumeSerialNumber = allocate(8)
> lpMaximumComponentLength = allocate(8)
> lpFileSystemFlags = allocate(8)
> nFileSystemNameSize = 16
> lpFileSystemNameBuffer = allocate_string(repeat(' ',nFileSystemNameSize))
>
> rc = c_func(hGetVolumeInfo,{
> lpRootPathName
> ,lpVolumeNameBuffer
> ,nVolumeNameSize
> ,lpVolumeSerialNumber
> ,lpMaximumComponentLength
> ,lpFileSystemFlags
> ,lpFileSystemNameBuffer
> ,nFileSystemNameSize
> })
> rc = c_func(GetLastError,{})
> print(1,rc)
> vol_name = peek_string(lpFileSystemNameBuffer)
> puts(1,vol_name & '\n')
> jk = wait_key()
>
> -----<code ends here>---------
>
>
>
|
Not Categorized, Please Help
|
|