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 |