전체 서비스 샘플
이 섹션의 topics 전체 서비스 샘플을 형성합니다.
- Sample.mc (오류 메시지 포함)
- Svc.cpp (서비스 코드 포함)
- SvcConfig.cpp (서비스 구성 코드 포함)
- SvcControl.cpp (서비스 제어 코드 포함)
서비스 빌드
다음 절차에서는 서비스를 빌드하고 이벤트 메시지 DLL을 등록하는 방법을 설명합니다.
서비스를 빌드하고 이벤트 메시지 DLL을 등록하려면
다음 단계를 사용하여 Sample.mc DLL 메시지를 빌드합니다.
- mc -U sample.mc
- rc -r sample.rc
- link -dll -noentry -out:sample.dll sample.res
Svc.cpp, SvcConfig.cpp 및 SvcControl.cpp에서 각각 Svc.exe, SvcConfig.exe 및 SvcControl.exe 빌드합니다.
레지스트리 키 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SvcName 만들고 이 키에 다음 레지스트리 값을 추가합니다.
값 형식 Description EventMessageFile = dll_path REG_SZ 서비스에서 이벤트 로그에 쓸 수 있는 문자열을 포함하는 리소스 전용 DLL의 경로입니다. TypesSupported = 0x00000007 REG_DWORD 지원되는 이벤트 유형을 지정하는 비트 마스크입니다. 값 0x000000007 모든 형식이 지원됨을 나타냅니다.
서비스 테스트
다음 절차에서는 서비스를 테스트하는 방법을 설명합니다.
서비스를 테스트하려면
제어판 서비스 애플리케이션을 시작합니다. (다음 단계에서는 F5 키를 사용하여 Services 애플리케이션의 정보를 수정하는 명령을 실행한 후 디스플레이를 새로 고칩니다.)
다음 명령을 실행하여 서비스를 설치합니다.
svc install
작업이 성공하면 서비스가 콘솔에 "성공적으로 설치된 서비스"를 씁니다. 그렇지 않으면 오류 메시지가 표시됩니다.
서비스 설치가 성공하면 서비스가 서비스 애플리케이션에 표시됩니다. Name은 "SvcName"으로 설정되고 설명 및 상태는 비어 있으며 시작 유형은 "수동"으로 설정됩니다.
다음 명령을 실행하여 서비스를 시작합니다.
svccontrol start SvcName
작업이 성공하면 서비스 제어 프로그램에서 "서비스 시작 보류 중..."을 기록합니다. 그런 다음 콘솔에 "서비스가 성공적으로 시작되었습니다". 그렇지 않으면 프로그램이 콘솔에 오류 메시지를 씁니다.
서비스가 성공적으로 시작되면 상태가 "시작됨"으로 설정됩니다. ServiceMain 함수의 코드는 SCM에 의해 실행됩니다. 오류가 발생하면 서비스에서 이벤트 로그에 오류 메시지를 씁니다. 이 메시지에는 실패한 함수의 이름과 실패 시 반환된 오류 코드가 포함됩니다.
다음 명령을 실행하여 서비스 설명을 업데이트합니다.
svcconfig describe SvcName
서비스 구성 프로그램은 작업이 성공하면 콘솔에 "서비스 설명이 성공적으로 업데이트됨"을 씁니다. 그렇지 않으면 오류 메시지가 표시됩니다.
업데이트가 성공하면 설명 이 "테스트 설명입니다"로 설정됩니다.
다음 명령을 실행하여 서비스 구성을 쿼리합니다.
svcconfig 쿼리 SvcName
서비스 구성 프로그램은 작업이 성공하면 콘솔에 서비스 구성 정보를 씁니다. 그렇지 않으면 오류 메시지가 표시됩니다.
다음 명령을 실행하여 서비스 DACL을 변경합니다.
svccontrol dacl SvcName
서비스 구성 프로그램은 작업이 성공하면 콘솔에 "서비스 DACL이 성공적으로 업데이트됨"을 씁니다. 그렇지 않으면 오류 메시지가 표시됩니다.
다음 명령을 실행하여 서비스를 사용하지 않도록 설정합니다.
svcconfig 사용 안 함 SvcName
서비스 구성 프로그램은 작업이 성공하거나 그렇지 않으면 오류 메시지가 표시되면 콘솔에 "서비스를 성공적으로 사용하지 않도록 설정"을 씁니다.
서비스를 사용하지 않도록 설정하면 시작 유형 이 "사용 안 함"으로 설정됩니다.
다음 명령을 실행하여 서비스를 사용하도록 설정합니다.
svcconfig enable SvcName
서비스 구성 프로그램은 작업이 성공하면 콘솔에 "서비스가 성공적으로 사용됨"을 기록하거나 그렇지 않으면 오류 메시지를 씁니다.
서비스를 성공적으로 사용하도록 설정하면 시작 유형 이 "수동"으로 설정됩니다.
다음 명령을 실행하여 서비스를 중지합니다.
svccontrol stop SvcName
작업이 성공하면 서비스 제어 프로그램에서 "서비스 중지 보류 중..."을 기록합니다. 그런 다음 콘솔에 "서비스가 성공적으로 중지되었습니다." 그렇지 않으면 프로그램이 콘솔에 오류 메시지를 씁니다.
서비스가 성공적으로 중지되면 상태가 비어 있습니다.
서비스가 중지되지 않으면 서비스 제어 프로그램은 실패한 함수의 이름과 실패 시 반환된 오류 코드가 포함된 오류 메시지를 이벤트 로그에 씁니다.
다음 명령을 실행하여 서비스를 삭제합니다.
svcconfig delete SvcName
서비스 구성 프로그램은 작업이 성공하면 콘솔에 "서비스 삭제됨"을 기록하거나 그렇지 않으면 오류 메시지를 씁니다.
서비스가 성공적으로 삭제되면 서비스 애플리케이션에 더 이상 표시되지 않습니다. 중지되지 않은 서비스를 삭제하려고 하면 작업이 성공하지만 시작 유형 이 "사용 안 함"으로 설정되고 시스템 다시 시작 시 또는 작업 관리자를 사용하여 서비스가 종료될 때 서비스 항목이 삭제됩니다.
관련 항목