diff --git a/dlls/kernel/comm.c b/dlls/kernel/comm.c index e390e1c491f..94b4e536bb9 100644 --- a/dlls/kernel/comm.c +++ b/dlls/kernel/comm.c @@ -3109,7 +3109,7 @@ BOOL WINAPI CommConfigDialogW( } /*********************************************************************** - * GetCommConfig (KERNEL32.283) + * GetCommConfig (KERNEL32.@) * * Fill in the COMMCONFIG structure for the comm port hFile * @@ -3126,12 +3126,10 @@ BOOL WINAPI CommConfigDialogW( */ BOOL WINAPI GetCommConfig( HANDLE hFile, /* [in] The communications device. */ - LPCOMMCONFIG lpCommConfig) /* [out] The communications configuration of the device (if it fits). */ -#if 0 /* FIXME: Why is this "commented" out? */ + LPCOMMCONFIG lpCommConfig, /* [out] The communications configuration of the device (if it fits). */ LPDWORD lpdwSize) /* [in/out] Initially the size of the configuration buffer/structure, afterwards the number of bytes copied to the buffer or the needed size of the buffer. */ -#endif { BOOL r; @@ -3140,6 +3138,11 @@ BOOL WINAPI GetCommConfig( if(lpCommConfig == NULL) return FALSE; + r = *lpdwSize < sizeof(COMMCONFIG); + *lpdwSize = sizeof(COMMCONFIG); + if(!r) + return FALSE; + lpCommConfig->dwSize = sizeof(COMMCONFIG); lpCommConfig->wVersion = 1; lpCommConfig->wReserved = 0; diff --git a/dlls/kernel/kernel32.spec b/dlls/kernel/kernel32.spec index 51a4e8e3de4..3db0a706285 100644 --- a/dlls/kernel/kernel32.spec +++ b/dlls/kernel/kernel32.spec @@ -324,7 +324,7 @@ debug_channels (comm debugstr dll int resource stress thunk toolhelp win32) @ stdcall GetBinaryTypeA(ptr ptr) GetBinaryTypeA @ stdcall GetBinaryTypeW(ptr ptr) GetBinaryTypeW @ stdcall GetCPInfo(long ptr) GetCPInfo -@ stdcall GetCommConfig(long ptr) GetCommConfig +@ stdcall GetCommConfig(long ptr long) GetCommConfig @ stdcall GetCommMask(long ptr) GetCommMask @ stdcall GetCommModemStatus(long ptr) GetCommModemStatus @ stdcall GetCommProperties(long ptr) GetCommProperties diff --git a/include/winbase.h b/include/winbase.h index fdf8c80d059..22fd0084a82 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -1333,7 +1333,7 @@ BOOL WINAPI FreeEnvironmentStringsW(LPWSTR); VOID WINAPI FreeLibraryAndExitThread(HINSTANCE,DWORD); PVOID WINAPI FreeSid(PSID); UINT WINAPI GetACP(void); -BOOL WINAPI GetCommConfig(HANDLE,LPCOMMCONFIG); +BOOL WINAPI GetCommConfig(HANDLE,LPCOMMCONFIG,LPDWORD); BOOL WINAPI GetCommMask(HANDLE,LPDWORD); BOOL WINAPI GetCommModemStatus(HANDLE,LPDWORD); BOOL WINAPI GetCommProperties(HANDLE,LPCOMMPROP);