Re: get free disk space in win32

new topic     » goto parent     » topic index » view thread      » older message » newer message

Ok, I am getting the bad routine (-1) error. Anyone see something wrong with this?

 
constant kernel32 = open_dll( "kernel32.dll" ), 
xGetFreeSpace = define_c_func(kernel32, "GetDiskFreeSpaceEx", {C_POINTER, C_POINTER, C_POINTER, C_POINTER}, C_INT) 
 
global function get_drive_space(sequence mdir) 
	 
	atom strptr, ptr2, ptr3, ptr4 
 
	integer retx 
 
	sequence rets	 
 
	strptr = allocate_string(mdir) 
	 
	ptr2 = allocate(8) 
	ptr3 = allocate(8) 
	ptr4 = allocate(8)	 
	 
	retx = c_func(xGetFreeSpace, {strptr, ptr2, ptr3, ptr4}) 
 
	if retx <= 0 then 
		return {-1, -1} 
	end if 
 
	rets = {{0, 0}, {0, 0}, {0, 0}} 
	 
	rets[1][1] = peek4u(ptr2) 
	rets[1][2] = peek4u(ptr2+4) 
 
	rets[2][1] = peek4u(ptr2) 
	rets[2][2] = peek4u(ptr2+4) 
	 
	rets[3][1] = peek4u(ptr2) 
	rets[3][2] = peek4u(ptr2+4) 
 
	return rets 
 
end function 
 

Aside from needing to free the memory for those pointers I mean! :)

Thanks again!

Steve A.

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu