Re: [Win32Lib] trying to wrap GetDriveType
- Posted by Dan Moyer <danielmoyer at pro?igy.ne?> Jan 28, 2008
- 756 views
CChris wrote: > > Dan Moyer wrote: > > > > I'm trying to wrap GetDriveType API, and don't really know what I'm doing; > > here's what I tried, and the result is error: "Couldn't link to C function > > 'GetDriveType'" > > > > Can someone show me how to do it right?? > > > > (Below the following code is what I found about "GetDriveType") > > > > Dan Moyer > > > > }}} <eucode> > > > > include win32lib.ew > > integer dummy > > > > constant xGetDriveType = registerw32Function(kernel32,"GetDriveType", > ^^^^ > > Usinge DEMO\Win32^dsearch.exw, you'd see that the API name is "GetDriveTypeA". > Add that 'A', > which stands for ANSI, and everything will be fine. > On say a Middle/Far Eastern build of Windows, you'd use 'W' instead (Unicode > build of the dll). > > CChris And Greg wrote: >>Here's your answer right here: > Unicode Implemented as GetDriveTypeW (Unicode) and GetDriveTypeA (ANSI). >>All Win32 API functions that deal with strings use 8-bit characters (ANSI) or >>16-bit characters (Unicode). Euphoria doesn't natively support Unicode (yet?) >>so just use the ANSI function. You need to define it like this. >>constant xGetDriveType = >>registerw32Function(kernel32,"GetDriveTypeA",{C_POINTER}, C_UINT ) >>(Also, the return type appears to be C_UINT, not C_LONG.) >>-Greg Thanks guys, that makes sense, but when I make those two corrections, I get another error: "w32dll.ew:212 in function w32Func() C routine GetDriveTypeA() needs 1 argument, not 3"
include win32lib.ew integer dummy constant xGetDriveType = registerw32Function(kernel32,"GetDriveTypeA", {C_POINTER},C_UINT ) if w32Func(xGetDriveType, "C:\\") = 2 then puts(1, " REMOVABLE DRIVE") else puts(1, "non removable drive") end if dummy = wait_key()
Dan