< prev index next >

src/java.base/windows/native/libjava/ProcessHandleImpl_win.c

Print this page
rev 58562 : 8232846: ProcessHandle.Info command with non-English shows question marks


 452 
 453     if (GetProcessTimes(handle, &CreationTime, &ExitTime, &KernelTime, &UserTime)) {
 454         userTime = jlong_from(UserTime.dwHighDateTime, UserTime.dwLowDateTime);
 455         totalTime = jlong_from( KernelTime.dwHighDateTime, KernelTime.dwLowDateTime);
 456         totalTime = (totalTime + userTime) * 100;  // convert sum to nano-seconds
 457 
 458         startTime = jlong_from(CreationTime.dwHighDateTime,
 459                                CreationTime.dwLowDateTime) / 10000;
 460         startTime -= 11644473600000L; // Rebase Epoch from 1601 to 1970
 461 
 462         (*env)->SetLongField(env, jinfo,
 463                              ProcessHandleImpl_Info_totalTimeID, totalTime);
 464         JNU_CHECK_EXCEPTION(env);
 465         (*env)->SetLongField(env, jinfo,
 466                              ProcessHandleImpl_Info_startTimeID, startTime);
 467         JNU_CHECK_EXCEPTION(env);
 468     }
 469 }
 470 
 471 static void getCmdlineInfo(JNIEnv *env, HANDLE handle, jobject jinfo) {
 472     char exeName[1024];
 473     int bufsize = sizeof exeName;
 474     jstring commandObj;
 475 
 476     if (QueryFullProcessImageName(handle, 0,  exeName, &bufsize)) {
 477         commandObj = (*env)->NewStringUTF(env, exeName);

 478         CHECK_NULL(commandObj);
 479         (*env)->SetObjectField(env, jinfo,
 480                                ProcessHandleImpl_Info_commandID, commandObj);
 481     }
 482 }
 483 
 484 static void procToUser(JNIEnv *env, HANDLE handle, jobject jinfo) {
 485 #define TOKEN_LEN 256
 486     DWORD token_len = TOKEN_LEN;
 487     char token_buf[TOKEN_LEN];
 488     TOKEN_USER *token_user = (TOKEN_USER*)token_buf;
 489     HANDLE tokenHandle;
 490     WCHAR domain[255 + 1 + 255 + 1];    // large enough to concat with '/' and name
 491     WCHAR name[255 + 1];
 492     DWORD domainLen = sizeof(domain) - sizeof(name);
 493     DWORD nameLen = sizeof(name);
 494     SID_NAME_USE use;
 495     jstring s;
 496     int ret;
 497 




 452 
 453     if (GetProcessTimes(handle, &CreationTime, &ExitTime, &KernelTime, &UserTime)) {
 454         userTime = jlong_from(UserTime.dwHighDateTime, UserTime.dwLowDateTime);
 455         totalTime = jlong_from( KernelTime.dwHighDateTime, KernelTime.dwLowDateTime);
 456         totalTime = (totalTime + userTime) * 100;  // convert sum to nano-seconds
 457 
 458         startTime = jlong_from(CreationTime.dwHighDateTime,
 459                                CreationTime.dwLowDateTime) / 10000;
 460         startTime -= 11644473600000L; // Rebase Epoch from 1601 to 1970
 461 
 462         (*env)->SetLongField(env, jinfo,
 463                              ProcessHandleImpl_Info_totalTimeID, totalTime);
 464         JNU_CHECK_EXCEPTION(env);
 465         (*env)->SetLongField(env, jinfo,
 466                              ProcessHandleImpl_Info_startTimeID, startTime);
 467         JNU_CHECK_EXCEPTION(env);
 468     }
 469 }
 470 
 471 static void getCmdlineInfo(JNIEnv *env, HANDLE handle, jobject jinfo) {
 472     WCHAR exeName[1024];
 473     DWORD bufsize = sizeof(exeName)/sizeof(WCHAR);
 474     jstring commandObj;
 475 
 476     if (QueryFullProcessImageNameW(handle, 0,  exeName, &bufsize)) {
 477         commandObj = (*env)->NewString(env, (const jchar *)exeName,
 478                                        (jsize)wcslen(exeName));
 479         CHECK_NULL(commandObj);
 480         (*env)->SetObjectField(env, jinfo,
 481                                ProcessHandleImpl_Info_commandID, commandObj);
 482     }
 483 }
 484 
 485 static void procToUser(JNIEnv *env, HANDLE handle, jobject jinfo) {
 486 #define TOKEN_LEN 256
 487     DWORD token_len = TOKEN_LEN;
 488     char token_buf[TOKEN_LEN];
 489     TOKEN_USER *token_user = (TOKEN_USER*)token_buf;
 490     HANDLE tokenHandle;
 491     WCHAR domain[255 + 1 + 255 + 1];    // large enough to concat with '/' and name
 492     WCHAR name[255 + 1];
 493     DWORD domainLen = sizeof(domain) - sizeof(name);
 494     DWORD nameLen = sizeof(name);
 495     SID_NAME_USE use;
 496     jstring s;
 497     int ret;
 498 


< prev index next >