Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
f1dcf4bf
Commit
f1dcf4bf
authored
Dec 17, 2007
by
Andrey Turkin
Committed by
Alexandre Julliard
Dec 17, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: I/O completion ports can only be used with overlapped I/O.
parent
7d093afc
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
7 deletions
+29
-7
file.c
dlls/ntdll/tests/file.c
+28
-6
fd.c
server/fd.c
+1
-1
No files found.
dlls/ntdll/tests/file.c
View file @
f1dcf4bf
...
...
@@ -498,17 +498,39 @@ static void test_iocp_fileio(HANDLE h)
{
static
const
char
pipe_name
[]
=
"
\\\\
.
\\
pipe
\\
iocompletiontestnamedpipe"
;
HANDLE
hPipeSrv
=
CreateNamedPipeA
(
pipe_name
,
PIPE_ACCESS_INBOUND
|
FILE_FLAG_OVERLAPPED
,
PIPE_TYPE_MESSAGE
|
PIPE_READMODE_MESSAGE
|
PIPE_WAIT
,
4
,
1024
,
1024
,
1000
,
NULL
);
HANDLE
hPipeClt
=
CreateFileA
(
pipe_name
,
GENERIC_WRITE
,
0
,
NULL
,
OPEN_EXISTING
,
FILE_FLAG_NO_BUFFERING
|
FILE_FLAG_OVERLAPPED
,
NULL
);
ok
(
hPipeSrv
!=
INVALID_HANDLE_VALUE
&&
hPipeClt
!=
INVALID_HANDLE_VALUE
,
"Cannot create or connect to pipe
\n
"
);
if
(
hPipeSrv
!=
INVALID_HANDLE_VALUE
&&
hPipeClt
!=
INVALID_HANDLE_VALUE
)
IO_STATUS_BLOCK
iosb
;
FILE_COMPLETION_INFORMATION
fci
=
{
h
,
CKEY_SECOND
};
HANDLE
hPipeSrv
,
hPipeClt
;
NTSTATUS
res
;
hPipeSrv
=
CreateNamedPipeA
(
pipe_name
,
PIPE_ACCESS_INBOUND
,
PIPE_TYPE_MESSAGE
|
PIPE_READMODE_MESSAGE
|
PIPE_WAIT
,
4
,
1024
,
1024
,
1000
,
NULL
);
ok
(
hPipeSrv
!=
INVALID_HANDLE_VALUE
,
"Cannot create named pipe
\n
"
);
if
(
hPipeSrv
!=
INVALID_HANDLE_VALUE
)
{
hPipeClt
=
CreateFileA
(
pipe_name
,
GENERIC_WRITE
,
0
,
NULL
,
OPEN_EXISTING
,
FILE_FLAG_NO_BUFFERING
|
FILE_FLAG_OVERLAPPED
,
NULL
);
ok
(
hPipeClt
!=
INVALID_HANDLE_VALUE
,
"Cannot connect to pipe
\n
"
);
if
(
hPipeClt
!=
INVALID_HANDLE_VALUE
)
{
res
=
pNtSetInformationFile
(
hPipeSrv
,
&
iosb
,
&
fci
,
sizeof
(
fci
),
FileCompletionInformation
);
ok
(
res
==
STATUS_INVALID_PARAMETER
,
"Unexpected NtSetInformationFile on non-overlapped handle: %x
\n
"
,
res
);
CloseHandle
(
hPipeClt
);
}
CloseHandle
(
hPipeSrv
);
}
hPipeSrv
=
CreateNamedPipeA
(
pipe_name
,
PIPE_ACCESS_INBOUND
|
FILE_FLAG_OVERLAPPED
,
PIPE_TYPE_MESSAGE
|
PIPE_READMODE_MESSAGE
|
PIPE_WAIT
,
4
,
1024
,
1024
,
1000
,
NULL
);
ok
(
hPipeSrv
!=
INVALID_HANDLE_VALUE
,
"Cannot create named pipe
\n
"
);
if
(
hPipeSrv
==
INVALID_HANDLE_VALUE
)
return
;
hPipeClt
=
CreateFileA
(
pipe_name
,
GENERIC_WRITE
,
0
,
NULL
,
OPEN_EXISTING
,
FILE_FLAG_NO_BUFFERING
|
FILE_FLAG_OVERLAPPED
,
NULL
);
ok
(
hPipeClt
!=
INVALID_HANDLE_VALUE
,
"Cannot connect to pipe
\n
"
);
if
(
hPipeClt
!=
INVALID_HANDLE_VALUE
)
{
OVERLAPPED
o
=
{
0
,};
BYTE
buf
[
3
];
DWORD
read
;
long
count
;
FILE_COMPLETION_INFORMATION
fci
=
{
h
,
CKEY_SECOND
};
IO_STATUS_BLOCK
iosb
;
NTSTATUS
res
=
pNtSetInformationFile
(
hPipeSrv
,
&
iosb
,
&
fci
,
sizeof
(
fci
),
FileCompletionInformation
);
ok
(
res
==
STATUS_SUCCESS
,
"NtSetInformationFile failed: %x
\n
"
,
res
);
...
...
server/fd.c
View file @
f1dcf4bf
...
...
@@ -2050,7 +2050,7 @@ DECL_HANDLER(set_completion_info)
if
(
fd
)
{
if
(
!
fd
->
completion
)
if
(
!
(
fd
->
options
&
(
FILE_SYNCHRONOUS_IO_ALERT
|
FILE_SYNCHRONOUS_IO_NONALERT
))
&&
!
fd
->
completion
)
{
fd
->
completion
=
get_completion_obj
(
current
->
process
,
req
->
chandle
,
IO_COMPLETION_MODIFY_STATE
);
fd
->
comp_key
=
req
->
ckey
;
...
...
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