⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntservc.c

📁 AT91RM9200的完整启动代码:包括loader, boot及U-boot三部分均已编译通过!欢迎下载使用!
💻 C
字号:
/******************************************************************************                         SciTech Display Doctor**               Copyright (C) 1991-2001 SciTech Software, Inc.*                            All rights reserved.**  ======================================================================*  |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|*  |                                                                    |*  |This copyrighted computer code is a proprietary trade secret of     |*  |SciTech Software, Inc., located at 505 Wall Street, Chico, CA 95928 |*  |USA (www.scitechsoft.com).  ANY UNAUTHORIZED POSSESSION, USE,       |*  |VIEWING, COPYING, MODIFICATION OR DISSEMINATION OF THIS CODE IS     |*  |STRICTLY PROHIBITED BY LAW.  Unless you have current, express       |*  |written authorization from SciTech to possess or use this code, you |*  |may be subject to civil and/or criminal penalties.                  |*  |                                                                    |*  |If you received this code in error or you would like to report      |*  |improper use, please immediately contact SciTech Software, Inc. at  |*  |530-894-8400.                                                       |*  |                                                                    |*  |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|*  ======================================================================** Language:     ANSI C* Environment:  Windows NT, Windows 2K or Windows XP.** Description:  Main module to do the installation of the SDD and GLDirect*               device driver components under Windows NT/2K/XP.*****************************************************************************/#include "pmapi.h"#include "win32/oshdr.h"/*----------------------------- Implementation ----------------------------*//****************************************************************************PARAMETERS:szDriverName    - Actual name of the driver to install in the systemszServiceName   - Name of the service to createszLoadGroup     - Load group for the driver (NULL for normal drivers)dwServiceType   - Service type to createRETURNS:True on success, false on failure.REMARKS:This function does all the work to install the driver into the system.The driver is not however activated; for that you must use the Start_SddFiltfunction.****************************************************************************/ulong PMAPI PM_installService(    const char *szDriverName,    const char *szServiceName,    const char *szLoadGroup,    ulong dwServiceType){    SC_HANDLE   scmHandle;    SC_HANDLE   driverHandle;    char        szDriverPath[MAX_PATH];    HKEY        key;    char        keyPath[MAX_PATH];    ulong       status;    // Obtain a handle to the service control manager requesting all access    if ((scmHandle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)) == NULL)        return GetLastError();    // Find the path to the driver in system directory    GetSystemDirectory(szDriverPath, sizeof(szDriverPath));    strcat(szDriverPath, "\\drivers\\");    strcat(szDriverPath, szDriverName);    // Create the service with the Service Control Manager.    driverHandle = CreateService(scmHandle,                                 szServiceName,                                 szServiceName,                                 SERVICE_ALL_ACCESS,                                 dwServiceType,                                 SERVICE_BOOT_START,                                 SERVICE_ERROR_NORMAL,                                 szDriverPath,                                 szLoadGroup,                                 NULL,                                 NULL,                                 NULL,                                 NULL);    // Check to see if the driver could actually be installed.    if (!driverHandle) {        status = GetLastError();        CloseServiceHandle(scmHandle);        return status;        }    // Get a handle to the key for driver so that it can be altered in the    // next step.    strcpy(keyPath, "SYSTEM\\CurrentControlSet\\Services\\");    strcat(keyPath, szServiceName);    if ((status = RegOpenKeyEx(HKEY_LOCAL_MACHINE,keyPath,0,KEY_ALL_ACCESS,&key)) != ERROR_SUCCESS) {        // A problem has occured. Delete the service so that it is not installed.        status = GetLastError();        DeleteService(driverHandle);        CloseServiceHandle(driverHandle);        CloseServiceHandle(scmHandle);        return status;        }    // Delete the ImagePath value in the newly created key so that the    // system looks for the driver in the normal location.    if ((status = RegDeleteValue(key, "ImagePath")) != ERROR_SUCCESS) {        // A problem has occurred. Delete the service so that it is not        // installed and will not try to start.        RegCloseKey(key);        DeleteService(driverHandle);        CloseServiceHandle(driverHandle);        CloseServiceHandle(scmHandle);        return status;        }    // Clean up and exit    RegCloseKey(key);    CloseServiceHandle(driverHandle);    CloseServiceHandle(scmHandle);    return ERROR_SUCCESS;}/****************************************************************************PARAMETERS:szServiceName   - Name of the service to startRETURNS:True on success, false on failure.REMARKS:This function is used to start the specified service and make it active.****************************************************************************/ulong PMAPI PM_startService(    const char *szServiceName){    SC_HANDLE       scmHandle;    SC_HANDLE       driverHandle;    SERVICE_STATUS	serviceStatus;    ulong           status;    // Obtain a handle to the service control manager requesting all access    if ((scmHandle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)) == NULL)        return GetLastError();    // Open the service with the Service Control Manager.    if ((driverHandle = OpenService(scmHandle,szServiceName,SERVICE_ALL_ACCESS)) == NULL) {        status = GetLastError();        CloseServiceHandle(scmHandle);        return status;        }    // Start the service    if (!StartService(driverHandle,0,NULL)) {        status = GetLastError();        CloseServiceHandle(driverHandle);        CloseServiceHandle(scmHandle);        return status;        }    // Query the service to make sure it is there    if (!QueryServiceStatus(driverHandle,&serviceStatus)) {	        status = GetLastError();        CloseServiceHandle(driverHandle);        CloseServiceHandle(scmHandle);        return status;        }    CloseServiceHandle(driverHandle);    CloseServiceHandle(scmHandle);    return ERROR_SUCCESS;}/****************************************************************************PARAMETERS:szServiceName   - Name of the service to stopRETURNS:True on success, false on failure.REMARKS:This function is used to stop the specified service and disable it.****************************************************************************/ulong PMAPI PM_stopService(    const char *szServiceName){    SC_HANDLE       scmHandle;    SC_HANDLE       driverHandle;    SERVICE_STATUS	serviceStatus;    ulong           status;    // Obtain a handle to the service control manager requesting all access    if ((scmHandle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)) == NULL)        return GetLastError();    // Open the service with the Service Control Manager.    if ((driverHandle = OpenService(scmHandle,szServiceName,SERVICE_ALL_ACCESS)) == NULL) {        status = GetLastError();        CloseServiceHandle(scmHandle);        return status;        }    // Stop the service from running    if (!ControlService(driverHandle, SERVICE_CONTROL_STOP, &serviceStatus)) {        status = GetLastError();        CloseServiceHandle(driverHandle);        CloseServiceHandle(scmHandle);        return status;        }    CloseServiceHandle(driverHandle);    CloseServiceHandle(scmHandle);    return ERROR_SUCCESS;}/****************************************************************************PARAMETERS:szServiceName   - Name of the service to removeRETURNS:True on success, false on failure.REMARKS:This function is used to remove a service completely from the system.****************************************************************************/ulong PMAPI PM_removeService(    const char *szServiceName){    SC_HANDLE   scmHandle;    SC_HANDLE   driverHandle;    ulong       status;    // Obtain a handle to the service control manager requesting all access    if ((scmHandle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)) == NULL)        return GetLastError();    // Open the service with the Service Control Manager.    if ((driverHandle = OpenService(scmHandle,szServiceName,SERVICE_ALL_ACCESS)) == NULL) {        status = GetLastError();        CloseServiceHandle(scmHandle);        return status;        }    // Remove the service    if (!DeleteService(driverHandle)) {        status = GetLastError();        CloseServiceHandle(driverHandle);        CloseServiceHandle(scmHandle);        return status;        }    CloseServiceHandle(driverHandle);    CloseServiceHandle(scmHandle);    return ERROR_SUCCESS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -