int main (void)
{
SC_HANDLE schSCManager;
SC_HANDLE schService;
SERVICE_STATUS serviceStatus;
char Path[256];
HANDLE hDevice;
schSCManager = OpenSCManager (NULL, NULL, SC_MANAGER_ALL_ACCESS);
if (!schSCManager)
{
return 0;
}
GetCurrentDirectory (255, Path);
strcat (Path, "\\FILTER.SYS");
schService = OpenService (schSCManager, "FILTER", SERVICE_ALL_ACCESS);
if (schService == NULL)
{
schService = CreateService (schSCManager, "FILTER", "FILTER", SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, path, NULL, NULL, NULL, NULL, NULL);
if (schService == NULL)
{
return 0;
}
}
}
"FILTER" 이름의 서비스가 있는지 확인한 후 그렇지 않은 경우에만 서비스를 생성한다.
CreateService() 함수에서 사용하는 "PATH" 파라미터는 서비스에 해당하는 드라이버 파일이 존재하는 풀 경로(FULL PATH)다. 이를 통해, 드라이버 파일은 하드디스크에 어디에 존재 하더라도 상관이 없다는 것을 알 수 있다.
'About Programing > 04. Device Driver' 카테고리의 다른 글
| SDT 수정을 이용한 Native API Hooking (0) | 2010.07.28 |
|---|---|
| WinDbg 명령어 정리 (0) | 2010.06.14 |
| 완전 신기! (0) | 2010.05.23 |
| 5월 22일 SOURCES 파일 (0) | 2010.05.23 |
| [TDI_FW] 예제 분석 5월 18일 (0) | 2010.05.18 |