< prev index next >

src/java.base/windows/native/libnio/ch/WindowsAsynchronousFileChannelImpl.c

Print this page




  98 {
  99     BOOL res;
 100     HANDLE h = jlong_to_ptr(handle);
 101     DWORD lowPos = (DWORD)pos;
 102     long highPos = (long)(pos >> 32);
 103     DWORD lowNumBytes = (DWORD)size;
 104     DWORD highNumBytes = (DWORD)(size >> 32);
 105     DWORD flags = (shared == JNI_TRUE) ? 0 : LOCKFILE_EXCLUSIVE_LOCK;
 106     OVERLAPPED* lpOverlapped = (OVERLAPPED*)jlong_to_ptr(ov);
 107 
 108     lpOverlapped->Offset = lowPos;
 109     lpOverlapped->OffsetHigh = highPos;
 110     lpOverlapped->hEvent = NULL;
 111 
 112     res = LockFileEx(h, flags, 0, lowNumBytes, highNumBytes, lpOverlapped);
 113     if (res == 0) {
 114         int error = GetLastError();
 115         if (error == ERROR_IO_PENDING) {
 116             return IOS_UNAVAILABLE;
 117         }
 118         JNU_ThrowIOExceptionWithLastError(env, "WriteFile failed");
 119         return IOS_THROWN;
 120     }
 121     return 0;
 122 }
 123 
 124 JNIEXPORT void JNICALL
 125 Java_sun_nio_ch_WindowsAsynchronousFileChannelImpl_close0(JNIEnv* env, jclass this,
 126     jlong handle)
 127 {
 128     HANDLE h = (HANDLE)jlong_to_ptr(handle);
 129     BOOL result = CloseHandle(h);
 130     if (result == 0) {
 131         JNU_ThrowIOExceptionWithLastError(env, "Close failed");
 132     }
 133 }


  98 {
  99     BOOL res;
 100     HANDLE h = jlong_to_ptr(handle);
 101     DWORD lowPos = (DWORD)pos;
 102     long highPos = (long)(pos >> 32);
 103     DWORD lowNumBytes = (DWORD)size;
 104     DWORD highNumBytes = (DWORD)(size >> 32);
 105     DWORD flags = (shared == JNI_TRUE) ? 0 : LOCKFILE_EXCLUSIVE_LOCK;
 106     OVERLAPPED* lpOverlapped = (OVERLAPPED*)jlong_to_ptr(ov);
 107 
 108     lpOverlapped->Offset = lowPos;
 109     lpOverlapped->OffsetHigh = highPos;
 110     lpOverlapped->hEvent = NULL;
 111 
 112     res = LockFileEx(h, flags, 0, lowNumBytes, highNumBytes, lpOverlapped);
 113     if (res == 0) {
 114         int error = GetLastError();
 115         if (error == ERROR_IO_PENDING) {
 116             return IOS_UNAVAILABLE;
 117         }
 118         JNU_ThrowIOExceptionWithLastError(env, "LockFile failed");
 119         return IOS_THROWN;
 120     }
 121     return 0;
 122 }
 123 
 124 JNIEXPORT void JNICALL
 125 Java_sun_nio_ch_WindowsAsynchronousFileChannelImpl_close0(JNIEnv* env, jclass this,
 126     jlong handle)
 127 {
 128     HANDLE h = (HANDLE)jlong_to_ptr(handle);
 129     BOOL result = CloseHandle(h);
 130     if (result == 0) {
 131         JNU_ThrowIOExceptionWithLastError(env, "Close failed");
 132     }
 133 }
< prev index next >