|
DreamineVMS 1.0.0.0
Windows PC의 RTSP·USB 카메라 영상을 HLS로 변환해 원격 CCTV Viewer에 전달하는 데스크톱 에이전트입니다.
|


클래스 | |
| struct | JOBOBJECT_BASIC_LIMIT_INFORMATION |
| struct | IO_COUNTERS |
| struct | JOBOBJECT_EXTENDED_LIMIT_INFORMATION |
Public 멤버 함수 | |
| ChildProcessJob () | |
| bool | AddProcess (Process process) |
| void | Dispose () |
Private 타입 | |
| enum | JobObjectInfoType { ExtendedLimitInformation = 9 } |
Private 멤버 함수 | |
| static IntPtr | CreateJobObject (IntPtr lpJobAttributes, string? lpName) |
| static bool | SetInformationJobObject (IntPtr hJob, JobObjectInfoType infoType, IntPtr lpJobObjectInfo, uint cbJobObjectInfoLength) |
| static bool | AssignProcessToJobObject (IntPtr hJob, IntPtr hProcess) |
| static bool | CloseHandle (IntPtr hObject) |
Private 속성 | |
| IntPtr | _handle |
| bool | _disposed |
정적 Private 속성 | |
| const uint | JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 |
자식 프로세스를 Windows Job Object에 묶어, 부모 프로세스가 비정상 종료되더라도 자식 프로세스(ffmpeg)가 함께 종료되도록 보장하는 헬퍼입니다.
부모 프로세스가 정상 경로(StopAsync)로 종료되지 못하고 강제 종료될 때, Job Object에 KILL_ON_JOB_CLOSE 플래그가 설정되어 있으면 Job 핸들이 닫히는 순간 OS가 소속 자식 프로세스를 모두 종료합니다. 이를 통해 ffmpeg 고아 프로세스가 남는 문제를 구조적으로 차단합니다.
ChildProcessJob.cs 파일의 25 번째 라인에서 정의되었습니다.
Job Object Info Type 기능과 관련 상태를 캡슐화합니다.
| 열거형 멤버 | |
|---|---|
| ExtendedLimitInformation | Extended Limit Information 값을 나타냅니다. |
ChildProcessJob.cs 파일의 182 번째 라인에서 정의되었습니다.
|
inline |
ChildProcessJob 클래스의 새 인스턴스를 초기화하고 Job Object를 생성합니다.
ChildProcessJob.cs 파일의 54 번째 라인에서 정의되었습니다.
다음을 참조함 : _handle, CloseHandle(), CreateJobObject(), JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE, SetInformationJobObject().

|
inline |
지정한 프로세스를 Job Object에 추가합니다.
| process | Job에 묶을 자식 프로세스입니다. |
ChildProcessJob.cs 파일의 120 번째 라인에서 정의되었습니다.
다음을 참조함 : _disposed, _handle, AssignProcessToJobObject().

|
private |
Assign Process To Job Object 작업을 수행합니다.
| hJob | h Job에 사용할 IntPtr 값입니다. |
| hProcess | h Process에 사용할 IntPtr 값입니다. |
true이고, 그렇지 않으면 false입니다.다음에 의해서 참조됨 : AddProcess().

|
private |
Close Handle 작업을 수행합니다.
| hObject | h Object에 사용할 IntPtr 값입니다. |
true이고, 그렇지 않으면 false입니다.다음에 의해서 참조됨 : ChildProcessJob(), Dispose().

|
private |
Job Object 값을 생성합니다.
| lpJobAttributes | lp Job Attributes에 사용할 IntPtr 값입니다. |
| lpName | lp Name에 사용할 string? 값입니다. |
IntPtr 결과입니다.다음에 의해서 참조됨 : ChildProcessJob().

|
inline |
Job Object 핸들을 닫습니다. KILL_ON_JOB_CLOSE에 의해 소속된 모든 자식 프로세스가 함께 종료됩니다.
ChildProcessJob.cs 파일의 148 번째 라인에서 정의되었습니다.
다음을 참조함 : _disposed, _handle, CloseHandle().

|
private |
Information Job Object 값을 설정합니다.
| hJob | h Job에 사용할 IntPtr 값입니다. |
| infoType | info Type에 사용할 JobObjectInfoType 값입니다. |
| lpJobObjectInfo | lp Job Object Info에 사용할 IntPtr 값입니다. |
| cbJobObjectInfoLength | cb Job Object Info Length에 사용할 uint 값입니다. |
true이고, 그렇지 않으면 false입니다.다음에 의해서 참조됨 : ChildProcessJob().

|
private |
disposed 값을 보관합니다.
ChildProcessJob.cs 파일의 44 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : AddProcess(), Dispose().
|
private |
handle 값을 보관합니다.
ChildProcessJob.cs 파일의 35 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : AddProcess(), ChildProcessJob(), Dispose().
|
staticprivate |
JOB OBJECT LIMIT KILL ON JOB CLOSE 값을 보관합니다.
ChildProcessJob.cs 파일의 172 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : ChildProcessJob().