[ros-dev] CommConfigDialog() and serialui.dll
Thomas Weidenmueller
w3seek at reactos.com
Fri Apr 8 19:05:51 CEST 2005
Saveliy Tretiakov wrote:
> Maybe this is because you pressed cancel button and
> ERROR_CALL_NOT_IMPLEMENTED
> was set somewhere else? It returns FALSE when cancel button is pressed.
no, in my copy of win XP calling drvCommConfigDialogA always returns
ERROR_CALL_NOT_IMPLEMENTED. Calling the unicode version works, it
returns FALSE/0/ERROR_SUCCESS or ERROR_CANCELLED when correct parameters
are passed to it.
> From CommConfig dialog description:
> If the function succeeds, the return value is nonzero.
> If the function fails, the return value is zero. To get extended error
> information, call *GetLastError*.
I'm talking about drvCommConfigDialog, not CommConfig. However
CommConfig calls drvCommConfigDialog, which appears to return
ERROR_SUCCESS, ERROR_CANCELLED or another win32 error code, which is not
a BOOL.
> I think drvCommConfigDialog should return the same.
As i mentioned above, it appears to return a win32 error code, not a
BOOL in windows XP, which leads to the conclusion that
drvCommConfigDialog doesn't have the exact same prototype as CommConfig.
> Maybe adding SetLastError(ERROR_CANCELLED) and
> SetLastError(ERROR_SUCCESS) will solve the problem?
I propose only CommConfig should set the last error, if
drvCommConfigDialog didn't return ERROR_SUCCESS or ERROR_CANCELLED. Then
returning TRUE from CommConfig when drvCommConfigDialog returned
ERROR_SUCCESS and returning FALSE in all other cases should implement it
correctly. Instead of setting the last error code in
drvCommConfigDialog, the function should return it directly.
Best Regards,
Thomas
More information about the Ros-dev
mailing list