< prev index next >

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

Print this page




 450 }
 451 
 452 JNIEXPORT void JNICALL
 453 Java_sun_nio_ch_FileDispatcherImpl_closeByHandle(JNIEnv *env, jclass clazz, jlong fd)
 454 {
 455     closeFile(env, fd);
 456 }
 457 
 458 JNIEXPORT jlong JNICALL
 459 Java_sun_nio_ch_FileDispatcherImpl_duplicateHandle(JNIEnv *env, jclass this, jlong handle)
 460 {
 461     HANDLE hProcess = GetCurrentProcess();
 462     HANDLE hFile = jlong_to_ptr(handle);
 463     HANDLE hResult;
 464     BOOL res = DuplicateHandle(hProcess, hFile, hProcess, &hResult, 0, FALSE,
 465                                DUPLICATE_SAME_ACCESS);
 466     if (res == 0)
 467        JNU_ThrowIOExceptionWithLastError(env, "DuplicateHandle failed");
 468     return ptr_to_jlong(hResult);
 469 }
























 450 }
 451 
 452 JNIEXPORT void JNICALL
 453 Java_sun_nio_ch_FileDispatcherImpl_closeByHandle(JNIEnv *env, jclass clazz, jlong fd)
 454 {
 455     closeFile(env, fd);
 456 }
 457 
 458 JNIEXPORT jlong JNICALL
 459 Java_sun_nio_ch_FileDispatcherImpl_duplicateHandle(JNIEnv *env, jclass this, jlong handle)
 460 {
 461     HANDLE hProcess = GetCurrentProcess();
 462     HANDLE hFile = jlong_to_ptr(handle);
 463     HANDLE hResult;
 464     BOOL res = DuplicateHandle(hProcess, hFile, hProcess, &hResult, 0, FALSE,
 465                                DUPLICATE_SAME_ACCESS);
 466     if (res == 0)
 467        JNU_ThrowIOExceptionWithLastError(env, "DuplicateHandle failed");
 468     return ptr_to_jlong(hResult);
 469 }
 470 
 471 JNIEXPORT jint JNICALL
 472 Java_sun_nio_ch_FileDispatcherImpl_setDirect0(JNIEnv *env, jclass this,
 473                                            jobject buffer)
 474 {
 475     jint result = -1;
 476     DWORD sectorsPerCluster;
 477     DWORD bytesPerSector;
 478     DWORD numberOfFreeClusters;
 479     DWORD totalNumberOfClusters;
 480     LPCWSTR lpRootPathName = (*env)->GetDirectBufferAddress(env, buffer);
 481     BOOL res = GetDiskFreeSpaceW(lpRootPathName,
 482                                  &sectorsPerCluster,
 483                                  &bytesPerSector,
 484                                  &numberOfFreeClusters,
 485                                  &totalNumberOfClusters);
 486     if (res == 0) {
 487         JNU_ThrowIOExceptionWithLastError(env, "DirectIO setup failed");
 488     } 
 489     result = bytesPerSector;
 490     return result;
 491 }
< prev index next >