294 }
295
296 JNIEXPORT void JNICALL
297 Java_sun_nio_fs_WindowsNativeDispatcher_CloseHandle(JNIEnv* env, jclass this,
298 jlong handle)
299 {
300 HANDLE h = (HANDLE)jlong_to_ptr(handle);
301 CloseHandle(h);
302 }
303
304 JNIEXPORT void JNICALL
305 Java_sun_nio_fs_WindowsNativeDispatcher_FindFirstFile0(JNIEnv* env, jclass this,
306 jlong address, jobject obj)
307 {
308 WIN32_FIND_DATAW data;
309 LPCWSTR lpFileName = jlong_to_ptr(address);
310
311 HANDLE handle = FindFirstFileW(lpFileName, &data);
312 if (handle != INVALID_HANDLE_VALUE) {
313 jstring name = (*env)->NewString(env, data.cFileName, (jsize)wcslen(data.cFileName));
314 if (name == NULL)
315 return;
316 (*env)->SetLongField(env, obj, findFirst_handle, ptr_to_jlong(handle));
317 (*env)->SetObjectField(env, obj, findFirst_name, name);
318 (*env)->SetIntField(env, obj, findFirst_attributes, data.dwFileAttributes);
319 } else {
320 throwWindowsException(env, GetLastError());
321 }
322 }
323
324 JNIEXPORT jlong JNICALL
325 Java_sun_nio_fs_WindowsNativeDispatcher_FindFirstFile1(JNIEnv* env, jclass this,
326 jlong pathAddress, jlong dataAddress)
327 {
328 LPCWSTR lpFileName = jlong_to_ptr(pathAddress);
329 WIN32_FIND_DATAW* data = (WIN32_FIND_DATAW*)jlong_to_ptr(dataAddress);
330
331 HANDLE handle = FindFirstFileW(lpFileName, data);
332 if (handle == INVALID_HANDLE_VALUE) {
333 throwWindowsException(env, GetLastError());
334 }
335 return ptr_to_jlong(handle);
|
294 }
295
296 JNIEXPORT void JNICALL
297 Java_sun_nio_fs_WindowsNativeDispatcher_CloseHandle(JNIEnv* env, jclass this,
298 jlong handle)
299 {
300 HANDLE h = (HANDLE)jlong_to_ptr(handle);
301 CloseHandle(h);
302 }
303
304 JNIEXPORT void JNICALL
305 Java_sun_nio_fs_WindowsNativeDispatcher_FindFirstFile0(JNIEnv* env, jclass this,
306 jlong address, jobject obj)
307 {
308 WIN32_FIND_DATAW data;
309 LPCWSTR lpFileName = jlong_to_ptr(address);
310
311 HANDLE handle = FindFirstFileW(lpFileName, &data);
312 if (handle != INVALID_HANDLE_VALUE) {
313 jstring name = (*env)->NewString(env, data.cFileName, (jsize)wcslen(data.cFileName));
314 if (name == NULL) {
315 FindClose(handle);
316 return;
317 }
318 (*env)->SetLongField(env, obj, findFirst_handle, ptr_to_jlong(handle));
319 (*env)->SetObjectField(env, obj, findFirst_name, name);
320 (*env)->SetIntField(env, obj, findFirst_attributes, data.dwFileAttributes);
321 } else {
322 throwWindowsException(env, GetLastError());
323 }
324 }
325
326 JNIEXPORT jlong JNICALL
327 Java_sun_nio_fs_WindowsNativeDispatcher_FindFirstFile1(JNIEnv* env, jclass this,
328 jlong pathAddress, jlong dataAddress)
329 {
330 LPCWSTR lpFileName = jlong_to_ptr(pathAddress);
331 WIN32_FIND_DATAW* data = (WIN32_FIND_DATAW*)jlong_to_ptr(dataAddress);
332
333 HANDLE handle = FindFirstFileW(lpFileName, data);
334 if (handle == INVALID_HANDLE_VALUE) {
335 throwWindowsException(env, GetLastError());
336 }
337 return ptr_to_jlong(handle);
|