설치된 프린터를 확인하고 현재 "C : \ App \ Data \ info"(파일 확장자 없음)에있는 파일을 업데이트하는 Windows 서비스를 만들었습니다. 매우 간단합니다. 올바른 플래그와 덤프를 사용하여 EnumPrinters를 호출하는 것뿐입니다. PRINTER_INFO_2 파일로.내 Windows 서비스가 파일에 계속해서 쓰지 않는 이유는 무엇입니까?
모든 것이 Visual Studio 2010의 "테스트"프로젝트에서 예상대로 작동하여 문제가 내 서비스에 없다고 생각합니다. 이 서비스를 Windows 서비스로 설치하자마자 루핑이 중지됩니다. 그것은 한 번 반복하고 결코 반복하지 않을 것입니다.
코드 참조 :
여기에서 템플릿을 사용하고 있습니다 : http://www.kencotutorials.com/WindowsService.aspx 만 서비스 클래스 파일을 변경했습니다.
초기 생각은 보안 권한이거나 대기 함수가 반환되지 않습니다.
편집 : 나는 이미 전체 파일 시스템을 검사하여 다른 곳에 기록되었는지 확인하고 그렇지 않은 것으로 확인했습니다.
이것은 템플릿에 의해 호출되는 서비스 루프 기능입니다.
void CMyService::MyServiceLoop(void)
{
CheckPrinters(); // updates a PRINTER_INFO_2 struct with all installed printers
WritePrinterFile(); // writes the file (i know there's no issue with the actual writing)
Sleep(10000);
OutputDebugString("Done sleeping");
Return;
}
셸 응용 프로그램 루프의 시작 부분에 OutputDebugString ("Shell loop entered")을 추가했습니다. WaitForSingleObject() 호출 앞에 OutputDebugString ("Waiting for object")도 추가했습니다.
루프가 WaitForSingleObject에서 정지 된 것처럼 보입니다. DbgView의 마지막 메시지는 "Waiting for object"입니다.
'Sleep (10000) '이란 무엇입니까? –
처음에는 서비스가 설치되지 않았을 때 속도를 늦춰야했습니다. 나는 약 10 초마다 발사하기를 원했기 때문에 그것을 버렸다. 이것이 문제의 원인이 될 수 있습니까? – rbuddicom