971 |
971 |
972 /** |
972 /** |
973 * HANDLE CreateIoCompletionPort ( |
973 * HANDLE CreateIoCompletionPort ( |
974 * HANDLE FileHandle, |
974 * HANDLE FileHandle, |
975 * HANDLE ExistingCompletionPort, |
975 * HANDLE ExistingCompletionPort, |
976 * DWORD CompletionKey, |
976 * ULONG_PTR CompletionKey, |
977 * DWORD NumberOfConcurrentThreads |
977 * DWORD NumberOfConcurrentThreads |
978 * ) |
978 * ) |
979 */ |
979 */ |
980 static native long CreateIoCompletionPort(long fileHandle, long existingPort, |
980 static native long CreateIoCompletionPort(long fileHandle, long existingPort, |
981 int completionKey) throws WindowsException; |
981 long completionKey) throws WindowsException; |
982 |
982 |
983 |
983 |
984 /** |
984 /** |
985 * GetQueuedCompletionStatus( |
985 * GetQueuedCompletionStatus( |
986 * HANDLE CompletionPort, |
986 * HANDLE CompletionPort, |
987 * LPDWORD lpNumberOfBytesTransferred, |
987 * LPDWORD lpNumberOfBytesTransferred, |
988 * LPDWORD lpCompletionKey, |
988 * PULONG_PTR lpCompletionKey, |
989 * LPOVERLAPPED *lpOverlapped, |
989 * LPOVERLAPPED *lpOverlapped, |
990 * DWORD dwMilliseconds |
990 * DWORD dwMilliseconds |
991 */ |
991 */ |
992 static CompletionStatus GetQueuedCompletionStatus(long completionPort) |
992 static CompletionStatus GetQueuedCompletionStatus(long completionPort) |
993 throws WindowsException |
993 throws WindowsException |
997 return status; |
997 return status; |
998 } |
998 } |
999 static class CompletionStatus { |
999 static class CompletionStatus { |
1000 private int error; |
1000 private int error; |
1001 private int bytesTransferred; |
1001 private int bytesTransferred; |
1002 private int completionKey; |
1002 private long completionKey; |
1003 private CompletionStatus() { } |
1003 private CompletionStatus() { } |
1004 |
1004 |
1005 int error() { return error; } |
1005 int error() { return error; } |
1006 int bytesTransferred() { return bytesTransferred; } |
1006 int bytesTransferred() { return bytesTransferred; } |
1007 int completionKey() { return completionKey; } |
1007 long completionKey() { return completionKey; } |
1008 } |
1008 } |
1009 private static native void GetQueuedCompletionStatus0(long completionPort, |
1009 private static native void GetQueuedCompletionStatus0(long completionPort, |
1010 CompletionStatus status) throws WindowsException; |
1010 CompletionStatus status) throws WindowsException; |
1011 |
1011 |
1012 /** |
1012 /** |
1013 * PostQueuedCompletionStatus( |
1013 * PostQueuedCompletionStatus( |
1014 * HANDLE CompletionPort, |
1014 * HANDLE CompletionPort, |
1015 * DWORD dwNumberOfBytesTransferred, |
1015 * DWORD dwNumberOfBytesTransferred, |
1016 * DWORD dwCompletionKey, |
1016 * ULONG_PTR dwCompletionKey, |
1017 * LPOVERLAPPED lpOverlapped |
1017 * LPOVERLAPPED lpOverlapped |
1018 * ) |
1018 * ) |
1019 */ |
1019 */ |
1020 static native void PostQueuedCompletionStatus(long completionPort, |
1020 static native void PostQueuedCompletionStatus(long completionPort, |
1021 int completionKey) throws WindowsException; |
1021 long completionKey) throws WindowsException; |
1022 |
1022 |
1023 /** |
1023 /** |
1024 * ReadDirectoryChangesW( |
1024 * ReadDirectoryChangesW( |
1025 * HANDLE hDirectory, |
1025 * HANDLE hDirectory, |
1026 * LPVOID lpBuffer, |
1026 * LPVOID lpBuffer, |