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