Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
4192d34d
Commit
4192d34d
authored
Feb 05, 2009
by
Christoph von Wittich
Committed by
Alexandre Julliard
Feb 06, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kernel32: DeviceIoControl: lpBytesReturned must not be NULL if lpOverlapped is NULL.
parent
e01452bf
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
34 additions
and
20 deletions
+34
-20
comm.c
dlls/kernel32/comm.c
+34
-20
No files found.
dlls/kernel32/comm.c
View file @
4192d34d
...
@@ -551,7 +551,8 @@ BOOL WINAPI BuildCommDCBW(
...
@@ -551,7 +551,8 @@ BOOL WINAPI BuildCommDCBW(
*/
*/
BOOL
WINAPI
SetCommBreak
(
HANDLE
handle
)
BOOL
WINAPI
SetCommBreak
(
HANDLE
handle
)
{
{
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_BREAK_ON
,
NULL
,
0
,
NULL
,
0
,
NULL
,
NULL
);
DWORD
dwBytesReturned
;
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_BREAK_ON
,
NULL
,
0
,
NULL
,
0
,
&
dwBytesReturned
,
NULL
);
}
}
/*****************************************************************************
/*****************************************************************************
...
@@ -573,7 +574,8 @@ BOOL WINAPI SetCommBreak(HANDLE handle)
...
@@ -573,7 +574,8 @@ BOOL WINAPI SetCommBreak(HANDLE handle)
*/
*/
BOOL
WINAPI
ClearCommBreak
(
HANDLE
handle
)
BOOL
WINAPI
ClearCommBreak
(
HANDLE
handle
)
{
{
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_BREAK_OFF
,
NULL
,
0
,
NULL
,
0
,
NULL
,
NULL
);
DWORD
dwBytesReturned
;
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_BREAK_OFF
,
NULL
,
0
,
NULL
,
0
,
&
dwBytesReturned
,
NULL
);
}
}
/*****************************************************************************
/*****************************************************************************
...
@@ -595,6 +597,7 @@ BOOL WINAPI ClearCommBreak(HANDLE handle)
...
@@ -595,6 +597,7 @@ BOOL WINAPI ClearCommBreak(HANDLE handle)
BOOL
WINAPI
EscapeCommFunction
(
HANDLE
handle
,
UINT
func
)
BOOL
WINAPI
EscapeCommFunction
(
HANDLE
handle
,
UINT
func
)
{
{
DWORD
ioc
;
DWORD
ioc
;
DWORD
dwBytesReturned
;
switch
(
func
)
switch
(
func
)
{
{
...
@@ -612,7 +615,7 @@ BOOL WINAPI EscapeCommFunction(HANDLE handle, UINT func)
...
@@ -612,7 +615,7 @@ BOOL WINAPI EscapeCommFunction(HANDLE handle, UINT func)
SetLastError
(
ERROR_INVALID_PARAMETER
);
SetLastError
(
ERROR_INVALID_PARAMETER
);
return
FALSE
;
return
FALSE
;
}
}
return
DeviceIoControl
(
handle
,
ioc
,
NULL
,
0
,
NULL
,
0
,
NULL
,
NULL
);
return
DeviceIoControl
(
handle
,
ioc
,
NULL
,
0
,
NULL
,
0
,
&
dwBytesReturned
,
NULL
);
}
}
/********************************************************************
/********************************************************************
...
@@ -632,8 +635,9 @@ BOOL WINAPI EscapeCommFunction(HANDLE handle, UINT func)
...
@@ -632,8 +635,9 @@ BOOL WINAPI EscapeCommFunction(HANDLE handle, UINT func)
*/
*/
BOOL
WINAPI
PurgeComm
(
HANDLE
handle
,
DWORD
flags
)
BOOL
WINAPI
PurgeComm
(
HANDLE
handle
,
DWORD
flags
)
{
{
DWORD
dwBytesReturned
;
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_PURGE
,
&
flags
,
sizeof
(
flags
),
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_PURGE
,
&
flags
,
sizeof
(
flags
),
NULL
,
0
,
NULL
,
NULL
);
NULL
,
0
,
&
dwBytesReturned
,
NULL
);
}
}
/*****************************************************************************
/*****************************************************************************
...
@@ -654,9 +658,10 @@ BOOL WINAPI PurgeComm(HANDLE handle, DWORD flags)
...
@@ -654,9 +658,10 @@ BOOL WINAPI PurgeComm(HANDLE handle, DWORD flags)
BOOL
WINAPI
ClearCommError
(
HANDLE
handle
,
LPDWORD
errors
,
LPCOMSTAT
lpStat
)
BOOL
WINAPI
ClearCommError
(
HANDLE
handle
,
LPDWORD
errors
,
LPCOMSTAT
lpStat
)
{
{
SERIAL_STATUS
ss
;
SERIAL_STATUS
ss
;
DWORD
dwBytesReturned
;
if
(
!
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_COMMSTATUS
,
NULL
,
0
,
if
(
!
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_COMMSTATUS
,
NULL
,
0
,
&
ss
,
sizeof
(
ss
),
NULL
,
NULL
))
&
ss
,
sizeof
(
ss
),
&
dwBytesReturned
,
NULL
))
return
FALSE
;
return
FALSE
;
if
(
errors
)
if
(
errors
)
...
@@ -708,11 +713,12 @@ BOOL WINAPI ClearCommError(HANDLE handle, LPDWORD errors, LPCOMSTAT lpStat)
...
@@ -708,11 +713,12 @@ BOOL WINAPI ClearCommError(HANDLE handle, LPDWORD errors, LPCOMSTAT lpStat)
BOOL
WINAPI
SetupComm
(
HANDLE
handle
,
DWORD
insize
,
DWORD
outsize
)
BOOL
WINAPI
SetupComm
(
HANDLE
handle
,
DWORD
insize
,
DWORD
outsize
)
{
{
SERIAL_QUEUE_SIZE
sqs
;
SERIAL_QUEUE_SIZE
sqs
;
DWORD
dwBytesReturned
;
sqs
.
InSize
=
insize
;
sqs
.
InSize
=
insize
;
sqs
.
OutSize
=
outsize
;
sqs
.
OutSize
=
outsize
;
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_QUEUE_SIZE
,
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_QUEUE_SIZE
,
&
sqs
,
sizeof
(
sqs
),
NULL
,
0
,
NULL
,
NULL
);
&
sqs
,
sizeof
(
sqs
),
NULL
,
0
,
&
dwBytesReturned
,
NULL
);
}
}
/*****************************************************************************
/*****************************************************************************
...
@@ -732,9 +738,10 @@ BOOL WINAPI SetupComm(HANDLE handle, DWORD insize, DWORD outsize)
...
@@ -732,9 +738,10 @@ BOOL WINAPI SetupComm(HANDLE handle, DWORD insize, DWORD outsize)
*/
*/
BOOL
WINAPI
GetCommMask
(
HANDLE
handle
,
LPDWORD
evtmask
)
BOOL
WINAPI
GetCommMask
(
HANDLE
handle
,
LPDWORD
evtmask
)
{
{
DWORD
dwBytesReturned
;
TRACE
(
"handle %p, mask %p
\n
"
,
handle
,
evtmask
);
TRACE
(
"handle %p, mask %p
\n
"
,
handle
,
evtmask
);
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_WAIT_MASK
,
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_WAIT_MASK
,
NULL
,
0
,
evtmask
,
sizeof
(
*
evtmask
),
NULL
,
NULL
);
NULL
,
0
,
evtmask
,
sizeof
(
*
evtmask
),
&
dwBytesReturned
,
NULL
);
}
}
/*****************************************************************************
/*****************************************************************************
...
@@ -755,9 +762,10 @@ BOOL WINAPI GetCommMask(HANDLE handle, LPDWORD evtmask)
...
@@ -755,9 +762,10 @@ BOOL WINAPI GetCommMask(HANDLE handle, LPDWORD evtmask)
*/
*/
BOOL
WINAPI
SetCommMask
(
HANDLE
handle
,
DWORD
evtmask
)
BOOL
WINAPI
SetCommMask
(
HANDLE
handle
,
DWORD
evtmask
)
{
{
DWORD
dwBytesReturned
;
TRACE
(
"handle %p, mask %x
\n
"
,
handle
,
evtmask
);
TRACE
(
"handle %p, mask %x
\n
"
,
handle
,
evtmask
);
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_WAIT_MASK
,
return
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_WAIT_MASK
,
&
evtmask
,
sizeof
(
evtmask
),
NULL
,
0
,
NULL
,
NULL
);
&
evtmask
,
sizeof
(
evtmask
),
NULL
,
0
,
&
dwBytesReturned
,
NULL
);
}
}
static
void
dump_dcb
(
const
DCB
*
lpdcb
)
static
void
dump_dcb
(
const
DCB
*
lpdcb
)
...
@@ -797,6 +805,7 @@ BOOL WINAPI SetCommState( HANDLE handle, LPDCB lpdcb)
...
@@ -797,6 +805,7 @@ BOOL WINAPI SetCommState( HANDLE handle, LPDCB lpdcb)
SERIAL_LINE_CONTROL
slc
;
SERIAL_LINE_CONTROL
slc
;
SERIAL_HANDFLOW
shf
;
SERIAL_HANDFLOW
shf
;
SERIAL_CHARS
sc
;
SERIAL_CHARS
sc
;
DWORD
dwBytesReturned
;
if
(
lpdcb
==
NULL
)
if
(
lpdcb
==
NULL
)
{
{
...
@@ -858,13 +867,13 @@ BOOL WINAPI SetCommState( HANDLE handle, LPDCB lpdcb)
...
@@ -858,13 +867,13 @@ BOOL WINAPI SetCommState( HANDLE handle, LPDCB lpdcb)
* so flow control does not interfere.
* so flow control does not interfere.
*/
*/
return
(
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_BAUD_RATE
,
return
(
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_BAUD_RATE
,
&
sbr
,
sizeof
(
sbr
),
NULL
,
0
,
NULL
,
NULL
)
&&
&
sbr
,
sizeof
(
sbr
),
NULL
,
0
,
&
dwBytesReturned
,
NULL
)
&&
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_LINE_CONTROL
,
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_LINE_CONTROL
,
&
slc
,
sizeof
(
slc
),
NULL
,
0
,
NULL
,
NULL
)
&&
&
slc
,
sizeof
(
slc
),
NULL
,
0
,
&
dwBytesReturned
,
NULL
)
&&
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_HANDFLOW
,
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_HANDFLOW
,
&
shf
,
sizeof
(
shf
),
NULL
,
0
,
NULL
,
NULL
)
&&
&
shf
,
sizeof
(
shf
),
NULL
,
0
,
&
dwBytesReturned
,
NULL
)
&&
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_CHARS
,
DeviceIoControl
(
handle
,
IOCTL_SERIAL_SET_CHARS
,
&
sc
,
sizeof
(
sc
),
NULL
,
0
,
NULL
,
NULL
));
&
sc
,
sizeof
(
sc
),
NULL
,
0
,
&
dwBytesReturned
,
NULL
));
}
}
...
@@ -891,6 +900,7 @@ BOOL WINAPI GetCommState(HANDLE handle, LPDCB lpdcb)
...
@@ -891,6 +900,7 @@ BOOL WINAPI GetCommState(HANDLE handle, LPDCB lpdcb)
SERIAL_LINE_CONTROL
slc
;
SERIAL_LINE_CONTROL
slc
;
SERIAL_HANDFLOW
shf
;
SERIAL_HANDFLOW
shf
;
SERIAL_CHARS
sc
;
SERIAL_CHARS
sc
;
DWORD
dwBytesReturned
;
TRACE
(
"handle %p, ptr %p
\n
"
,
handle
,
lpdcb
);
TRACE
(
"handle %p, ptr %p
\n
"
,
handle
,
lpdcb
);
...
@@ -901,13 +911,13 @@ BOOL WINAPI GetCommState(HANDLE handle, LPDCB lpdcb)
...
@@ -901,13 +911,13 @@ BOOL WINAPI GetCommState(HANDLE handle, LPDCB lpdcb)
}
}
if
(
!
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_BAUD_RATE
,
if
(
!
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_BAUD_RATE
,
NULL
,
0
,
&
sbr
,
sizeof
(
sbr
),
NULL
,
NULL
)
||
NULL
,
0
,
&
sbr
,
sizeof
(
sbr
),
&
dwBytesReturned
,
NULL
)
||
!
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_LINE_CONTROL
,
!
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_LINE_CONTROL
,
NULL
,
0
,
&
slc
,
sizeof
(
slc
),
NULL
,
NULL
)
||
NULL
,
0
,
&
slc
,
sizeof
(
slc
),
&
dwBytesReturned
,
NULL
)
||
!
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_HANDFLOW
,
!
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_HANDFLOW
,
NULL
,
0
,
&
shf
,
sizeof
(
shf
),
NULL
,
NULL
)
||
NULL
,
0
,
&
shf
,
sizeof
(
shf
),
&
dwBytesReturned
,
NULL
)
||
!
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_CHARS
,
!
DeviceIoControl
(
handle
,
IOCTL_SERIAL_GET_CHARS
,
NULL
,
0
,
&
sc
,
sizeof
(
sc
),
NULL
,
NULL
))
NULL
,
0
,
&
sc
,
sizeof
(
sc
),
&
dwBytesReturned
,
NULL
))
return
FALSE
;
return
FALSE
;
memset
(
lpdcb
,
0
,
sizeof
(
*
lpdcb
));
memset
(
lpdcb
,
0
,
sizeof
(
*
lpdcb
));
...
@@ -980,8 +990,9 @@ BOOL WINAPI GetCommState(HANDLE handle, LPDCB lpdcb)
...
@@ -980,8 +990,9 @@ BOOL WINAPI GetCommState(HANDLE handle, LPDCB lpdcb)
*/
*/
BOOL
WINAPI
TransmitCommChar
(
HANDLE
hComm
,
CHAR
chTransmit
)
BOOL
WINAPI
TransmitCommChar
(
HANDLE
hComm
,
CHAR
chTransmit
)
{
{
DWORD
dwBytesReturned
;
return
DeviceIoControl
(
hComm
,
IOCTL_SERIAL_IMMEDIATE_CHAR
,
return
DeviceIoControl
(
hComm
,
IOCTL_SERIAL_IMMEDIATE_CHAR
,
&
chTransmit
,
sizeof
(
chTransmit
),
NULL
,
0
,
NULL
,
NULL
);
&
chTransmit
,
sizeof
(
chTransmit
),
NULL
,
0
,
&
dwBytesReturned
,
NULL
);
}
}
...
@@ -1002,6 +1013,7 @@ BOOL WINAPI TransmitCommChar(HANDLE hComm, CHAR chTransmit)
...
@@ -1002,6 +1013,7 @@ BOOL WINAPI TransmitCommChar(HANDLE hComm, CHAR chTransmit)
BOOL
WINAPI
GetCommTimeouts
(
HANDLE
hComm
,
LPCOMMTIMEOUTS
lptimeouts
)
BOOL
WINAPI
GetCommTimeouts
(
HANDLE
hComm
,
LPCOMMTIMEOUTS
lptimeouts
)
{
{
SERIAL_TIMEOUTS
st
;
SERIAL_TIMEOUTS
st
;
DWORD
dwBytesReturned
;
TRACE
(
"(%p, %p)
\n
"
,
hComm
,
lptimeouts
);
TRACE
(
"(%p, %p)
\n
"
,
hComm
,
lptimeouts
);
if
(
!
lptimeouts
)
if
(
!
lptimeouts
)
...
@@ -1010,7 +1022,7 @@ BOOL WINAPI GetCommTimeouts(HANDLE hComm, LPCOMMTIMEOUTS lptimeouts)
...
@@ -1010,7 +1022,7 @@ BOOL WINAPI GetCommTimeouts(HANDLE hComm, LPCOMMTIMEOUTS lptimeouts)
return
FALSE
;
return
FALSE
;
}
}
if
(
!
DeviceIoControl
(
hComm
,
IOCTL_SERIAL_GET_TIMEOUTS
,
if
(
!
DeviceIoControl
(
hComm
,
IOCTL_SERIAL_GET_TIMEOUTS
,
NULL
,
0
,
&
st
,
sizeof
(
st
),
NULL
,
NULL
))
NULL
,
0
,
&
st
,
sizeof
(
st
),
&
dwBytesReturned
,
NULL
))
return
FALSE
;
return
FALSE
;
lptimeouts
->
ReadIntervalTimeout
=
st
.
ReadIntervalTimeout
;
lptimeouts
->
ReadIntervalTimeout
=
st
.
ReadIntervalTimeout
;
lptimeouts
->
ReadTotalTimeoutMultiplier
=
st
.
ReadTotalTimeoutMultiplier
;
lptimeouts
->
ReadTotalTimeoutMultiplier
=
st
.
ReadTotalTimeoutMultiplier
;
...
@@ -1043,6 +1055,7 @@ BOOL WINAPI GetCommTimeouts(HANDLE hComm, LPCOMMTIMEOUTS lptimeouts)
...
@@ -1043,6 +1055,7 @@ BOOL WINAPI GetCommTimeouts(HANDLE hComm, LPCOMMTIMEOUTS lptimeouts)
BOOL
WINAPI
SetCommTimeouts
(
HANDLE
hComm
,
LPCOMMTIMEOUTS
lptimeouts
)
BOOL
WINAPI
SetCommTimeouts
(
HANDLE
hComm
,
LPCOMMTIMEOUTS
lptimeouts
)
{
{
SERIAL_TIMEOUTS
st
;
SERIAL_TIMEOUTS
st
;
DWORD
dwBytesReturned
;
TRACE
(
"(%p, %p)
\n
"
,
hComm
,
lptimeouts
);
TRACE
(
"(%p, %p)
\n
"
,
hComm
,
lptimeouts
);
...
@@ -1058,7 +1071,7 @@ BOOL WINAPI SetCommTimeouts(HANDLE hComm, LPCOMMTIMEOUTS lptimeouts)
...
@@ -1058,7 +1071,7 @@ BOOL WINAPI SetCommTimeouts(HANDLE hComm, LPCOMMTIMEOUTS lptimeouts)
st
.
WriteTotalTimeoutConstant
=
lptimeouts
->
WriteTotalTimeoutConstant
;
st
.
WriteTotalTimeoutConstant
=
lptimeouts
->
WriteTotalTimeoutConstant
;
return
DeviceIoControl
(
hComm
,
IOCTL_SERIAL_SET_TIMEOUTS
,
return
DeviceIoControl
(
hComm
,
IOCTL_SERIAL_SET_TIMEOUTS
,
&
st
,
sizeof
(
st
),
NULL
,
0
,
NULL
,
NULL
);
&
st
,
sizeof
(
st
),
NULL
,
0
,
&
dwBytesReturned
,
NULL
);
}
}
/***********************************************************************
/***********************************************************************
...
@@ -1078,8 +1091,9 @@ BOOL WINAPI SetCommTimeouts(HANDLE hComm, LPCOMMTIMEOUTS lptimeouts)
...
@@ -1078,8 +1091,9 @@ BOOL WINAPI SetCommTimeouts(HANDLE hComm, LPCOMMTIMEOUTS lptimeouts)
*/
*/
BOOL
WINAPI
GetCommModemStatus
(
HANDLE
hFile
,
LPDWORD
lpModemStat
)
BOOL
WINAPI
GetCommModemStatus
(
HANDLE
hFile
,
LPDWORD
lpModemStat
)
{
{
DWORD
dwBytesReturned
;
return
DeviceIoControl
(
hFile
,
IOCTL_SERIAL_GET_MODEMSTATUS
,
return
DeviceIoControl
(
hFile
,
IOCTL_SERIAL_GET_MODEMSTATUS
,
NULL
,
0
,
lpModemStat
,
sizeof
(
DWORD
),
NULL
,
NULL
);
NULL
,
0
,
lpModemStat
,
sizeof
(
DWORD
),
&
dwBytesReturned
,
NULL
);
}
}
/***********************************************************************
/***********************************************************************
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment