Jacek Caban : server: Add NtQueryInformationFile( FileIoCompletionNotificationInformation) implementation.

Alexandre Julliard julliard at winehq.org
Wed Oct 24 15:13:54 CDT 2018


Module: wine
Branch: master
Commit: 66e20ce576fd815cffd016f3d36f84c619ea7bc4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=66e20ce576fd815cffd016f3d36f84c619ea7bc4

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Oct 23 17:45:42 2018 +0200

server: Add NtQueryInformationFile(FileIoCompletionNotificationInformation) implementation.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/tests/om.c | 10 ++++++++++
 server/fd.c           | 12 ++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
index c340839..5240854 100644
--- a/dlls/ntdll/tests/om.c
+++ b/dlls/ntdll/tests/om.c
@@ -1284,6 +1284,11 @@ static void _test_file_info(unsigned line, HANDLE handle)
 
     status = pNtQueryInformationFile(handle, &io, buf, sizeof(buf), FileAccessInformation);
     ok_(__FILE__,line)(status == STATUS_SUCCESS, "FileAccessInformation returned %x\n", status);
+
+    status = pNtQueryInformationFile(handle, &io, buf, sizeof(buf),
+                                    FileIoCompletionNotificationInformation);
+    ok_(__FILE__,line)(status == STATUS_SUCCESS || broken(status == STATUS_INVALID_INFO_CLASS),
+                       "FileIoCompletionNotificationInformation returned %x\n", status);
 }
 
 #define test_no_file_info(a) _test_no_file_info(__LINE__,a)
@@ -1300,6 +1305,11 @@ static void _test_no_file_info(unsigned line, HANDLE handle)
     status = pNtQueryInformationFile(handle, &io, buf, sizeof(buf), FileAccessInformation);
     ok_(__FILE__,line)(status == STATUS_OBJECT_TYPE_MISMATCH,
                        "FileAccessInformation returned %x\n", status);
+
+    status = pNtQueryInformationFile(handle, &io, buf, sizeof(buf),
+                                    FileIoCompletionNotificationInformation);
+    ok_(__FILE__,line)(status == STATUS_OBJECT_TYPE_MISMATCH || broken(status == STATUS_INVALID_INFO_CLASS),
+                       "FileIoCompletionNotificationInformation returned %x\n", status);
 }
 
 static void test_query_object(void)
diff --git a/server/fd.c b/server/fd.c
index 65dc8a2..3e73fae 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -2192,6 +2192,18 @@ void default_fd_get_file_info( struct fd *fd, obj_handle_t handle, unsigned int
             set_reply_data( &info, sizeof(info) );
             break;
         }
+    case FileIoCompletionNotificationInformation:
+        {
+            FILE_IO_COMPLETION_NOTIFICATION_INFORMATION info;
+            if (get_reply_max_size() < sizeof(info))
+            {
+                set_error( STATUS_INFO_LENGTH_MISMATCH );
+                return;
+            }
+            info.Flags = 0; /* FIXME */
+            set_reply_data( &info, sizeof(info) );
+            break;
+        }
     default:
         set_error( STATUS_NOT_IMPLEMENTED );
     }




More information about the wine-cvs mailing list