Mercurial > mplayer.hg
diff vidix/dhahelperwin/dhasetup.c @ 22900:a9e111b88c4a
merged libdha and libvidix, moved all files from libdha to vidix directory
author | ben |
---|---|
date | Fri, 06 Apr 2007 15:20:49 +0000 |
parents | libdha/dhahelperwin/dhasetup.c@33dab236c631 |
children | 40a61e5ef8ca |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vidix/dhahelperwin/dhasetup.c Fri Apr 06 15:20:49 2007 +0000 @@ -0,0 +1,61 @@ +/* dhahelper setup program (c) 2004 Sascha Sommer */ +/* compile with gcc -o dhasetup.exe dhasetup.c */ +/* LICENSE: GPL */ + +#include <windows.h> +#include <stdio.h> + +int main(int argc,char* argv[]){ + SC_HANDLE hSCManager; + SC_HANDLE hService; + char path[MAX_PATH]; + printf("dhasetup (c) 2004 Sascha Sommer\n"); + GetWindowsDirectory(path,MAX_PATH); + strcpy(path+strlen(path),"\\system32\\drivers\\dhahelper.sys"); + if(argc==1){ + printf("Usage:\n"); + printf("dhasetup install - Copies dhahelper.sys from the current directory to\n%s and configures it to start at boot.\n", path); + printf("dhasetup remove - Removes the dhahelper utility.\n"); + return 0; + } + hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); + if(!strcmp(argv[1],"install")){ + printf("Installing dhahelper...\n"); + if(!CopyFile("dhahelper.sys",path,FALSE)){ + printf("Copying dhahelper.sys failed.\nEither dhahelper.sys is not in the current directory or you lack sufficient\nprivileges to write to %s.", path); + return 1; + } + // Install the driver + hService = CreateService(hSCManager, + "DHAHELPER", + "DHAHELPER", + SERVICE_ALL_ACCESS, + SERVICE_KERNEL_DRIVER, + SERVICE_SYSTEM_START, + SERVICE_ERROR_NORMAL, + path, + NULL, + NULL, + NULL, + NULL, + NULL); + if(!hService){ + printf("Unable to register DHAHELPER Service (0x%x).\n",GetLastError()); + } + } + else if(!strcmp(argv[1],"remove")){ + SERVICE_STATUS ServiceStatus; + printf("Removing dhahelper...\n"); + hService = OpenService(hSCManager, "DHAHELPER", SERVICE_ALL_ACCESS); + ControlService(hService, SERVICE_CONTROL_STOP, &ServiceStatus); + DeleteService(hService); + DeleteFile(path); + } + else { + printf("unknown parameter: %s\n",argv[1]); + } + CloseServiceHandle(hService); + CloseServiceHandle(hSCManager); + printf("Please reboot to let the changes take effect.\n"); + return 0; +}