|
1 | 1 | /*
|
2 |
| - * Copyright (c) 2005, 2023, Oracle and/or its affiliates. All rights reserved. |
| 2 | + * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. |
3 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
4 | 4 | *
|
5 | 5 | * This code is free software; you can redistribute it and/or modify it
|
|
30 | 30 | #include "nio_util.h"
|
31 | 31 | #include "sun_nio_ch_FileKey.h"
|
32 | 32 |
|
33 |
| -static jfieldID key_volumeSN; /* id for FileKey.dwVolumeSerialNumber */ |
34 |
| -static jfieldID key_indexHigh; /* id for FileKey.nFileIndexHigh */ |
35 |
| -static jfieldID key_indexLow; /* id for FileKey.nFileIndexLow */ |
36 |
| - |
37 |
| - |
38 |
| -JNIEXPORT void JNICALL |
39 |
| -Java_sun_nio_ch_FileKey_initIDs(JNIEnv *env, jclass clazz) |
40 |
| -{ |
41 |
| - CHECK_NULL(key_volumeSN = (*env)->GetFieldID(env, clazz, "dwVolumeSerialNumber", "I")); |
42 |
| - CHECK_NULL(key_indexHigh = (*env)->GetFieldID(env, clazz, "nFileIndexHigh", "I")); |
43 |
| - CHECK_NULL(key_indexLow = (*env)->GetFieldID(env, clazz, "nFileIndexLow", "I")); |
44 |
| -} |
45 |
| - |
46 |
| - |
47 | 33 | JNIEXPORT void JNICALL
|
48 |
| -Java_sun_nio_ch_FileKey_init(JNIEnv *env, jobject this, jobject fdo) |
| 34 | +Java_sun_nio_ch_FileKey_init(JNIEnv *env, jclass clazz, jobject fdo, jintArray finfo) |
49 | 35 | {
|
50 |
| - HANDLE fileHandle = (HANDLE)(handleval(env, fdo)); |
| 36 | + HANDLE fileHandle = (HANDLE)handleval(env, fdo); |
51 | 37 | BOOL result;
|
52 | 38 | BY_HANDLE_FILE_INFORMATION fileInfo;
|
| 39 | + jint info[3]; |
53 | 40 |
|
54 | 41 | result = GetFileInformationByHandle(fileHandle, &fileInfo);
|
55 | 42 | if (result) {
|
56 |
| - (*env)->SetIntField(env, this, key_volumeSN, fileInfo.dwVolumeSerialNumber); |
57 |
| - (*env)->SetIntField(env, this, key_indexHigh, fileInfo.nFileIndexHigh); |
58 |
| - (*env)->SetIntField(env, this, key_indexLow, fileInfo.nFileIndexLow); |
| 43 | + info[0] = (jint)fileInfo.dwVolumeSerialNumber; |
| 44 | + info[1] = (jint)fileInfo.nFileIndexHigh; |
| 45 | + info[2] = (jint)fileInfo.nFileIndexLow; |
| 46 | + (*env)->SetIntArrayRegion(env, finfo, 0, 3, info); |
59 | 47 | } else {
|
60 | 48 | JNU_ThrowIOExceptionWithLastError(env, "GetFileInformationByHandle failed");
|
61 | 49 | }
|
|
0 commit comments