rasapi32: return an error for invalid paramaters

Juan Lang juan.lang at gmail.com
Wed Jun 25 12:12:11 CDT 2008


Hi Austin, at the risk of getting flamed for discussing elementary C
here I'll give some feedback.

+static void test_rasenum(void)
+{
+
+BOOL result;
+

Indentation and whitespace are a little funny here.

+	LPRASDEVINFO = sizeof(RASDEVINFO);

This is a little confused.  You've named a type (LPRASDEVINFO) but not
a variable.  The naive fix would be to something like the following:

LPRASDEVINFO pRDV = sizeof(RASDEVINFO);

This at least declares a variable (pRDV) of type LPRASDEVINFO.  It
might even compile, but it'll certainly crash:  The first parameter to
RasEnumDeviceA is a pointer, and a pointer must point to a valid
memory location, or have the special value NULL.

What you most likely want is something like this:
RASDEVINFOA rasDevInfo;

rasDevInfo.dwSize = sizeof(rasDevInfo);

+	result = RasEnumDevicesA(LPRASDEVINFOA, NULL, LPDWORD lpcDevices);

Here you're passing a type (LPRASDEVINFOA) as the first parameter.  If
you use what I gave above, you'd want &rasDevInfo to be the first
parameter instead.

The third parameter is also bogus.  You want to declare a DWORD
cDevices, and pass &cDevices instead.

+	result = RasEnumDevicesA(NULL, LPDWORD lpcb, LPDWORD lpcDevices);

Again you've got something that won't compile.  You need to declare a
DWORD cb, and pass &cb as the second parameter.  For good measure you
should probably initialize it to something (maybe 0?), since MSDN says
the second parameter is an in/out parameter.

Feel free to whip up another one for review.
--Juan



More information about the wine-devel mailing list