| I am trying to convert the following B3D decls function to BMAX: 
 
; .lib "kernel32.dll"
; GetVolumeInformation% _
;    ( _
;     lpRootPathName$, _
;     lpVolumeNameBuffer*, _
;     nVolumeNameSize%, _
;     lpVolumeSerialNumber*, _
;     lpMaximumComponentLength%, _
;     lpFileSystemFlags%, _
;     lpFileSystemNameBuffer*, _
;     nFileSystemNameSize% _
;    ):"GetVolumeInformationA"
Print GetSysDiskSN%("C:\")
Function GetSysDiskSN%(Root$)
	Local APICall%
	Local DiskSerialNo%
	VolSerialNoBank = CreateBank(4)
	VolNameBank = CreateBank(255)
	VolFileSysBank = CreateBank(255)
	APICall%=GetVolumeInformation%(Root$,VolNameBank,BankSize(VolNameBank),VolSerialNoBank,0,0,VolFileSysBank,BankSize(VolFileSysBank))
	DiskSerialNo%=PeekInt(VolSerialNoBank,0)
	FreeBank VolSerialNoBank
	FreeBank VolNameBank
	FreeBank VolFileSysBank
	Return DiskSerialNo%
End Function
However, I am struggling and have not been able to find anything on the forums specific to my problem. I thought my BMax bank references should be 'Byte Ptr' in the extern declaration, and the strings as '$z'?
 
 
Extern "Win32"
	Function GetVolumeInformationA(..
		lpRootPathName$z,..
		lpVolumeNameBuffer:Byte Ptr,..
		nVolumeNameSize%,..
		lpVolumeSerialNumber:Byte Ptr,..
		lpMaximumComponentLength%,..
		lpFileSystemFlags%,..
		lpFileSystemNameBuffer:Byte Ptr,..
		nFileSystemNameSize%)
End Extern
Graphics 800,600
SetColor 255,255,255
DrawText "Serial No = "+GetSysDiskSN%("C:\"),0,0
Flip
WaitKey
End
Function GetSysDiskSN%(Root$)
	Local DiskSerialNo%
	VolSerialNoBank=CreateBank(4)
	VolNameBank=CreateBank(255)
	VolFileSysBank=CreateBank(255)
	GetVolumeInformationA("C:\",VolNameBank,BankSize(VolNameBank),VolSerialNoBank,0,0,VolFileSysBank,BankSize(VolFileSysBank))
	DiskSerialNo%=PeekInt(VolSerialNoBank,0)
	VolSerialNoBank=Null
	VolNameBank=Null
	VolFileSysBank=Null
	GCCollect
	Return DiskSerialNo%
End Function
but I have read that BMax strings are now objects rather than CStrings (gulp)...
 
 In B3D I passed the values returned by CreateBank() as the bank address pointers, which worked. However, in BMax this results in an Int to Byte Ptr conversion error.
 
 No matter what I try I cannot get this to work. I am totally confused. Can anyone point me in the right direction?
 
 
 |