본문 바로가기

About Programing/04. Device Driver

[TDI_FW] 예제 분석 5월 19일

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