【原创】驱动卸载之DeleteService】的更多相关文章

BOOL WINAPI DeleteService( _In_ SC_HANDLE hService ); 函数作用:从SCM数据库中标志一个服务已删除 参数: 1. OpenService 或CreateService function返回的服务句柄:需要有DELETE权限.   返回值: 成功,非0:失败为0,错误码可以通过GetLastError获得.   Return code Description ERROR_ACCESS_DENIED 没有DELETE权限 ERROR_INVALI…
BOOL WINAPI ControlService( _In_ SC_HANDLE hService, _In_ DWORD dwControl, _Out_ LPSERVICE_STATUS lpServiceStatus ); 函数作用:给指定的服务发送一个控制码 参数: 1. hService: OpenService 或CreateService function返回的服务句柄: 2. dwControl:要发送的控制码,控制码可以是下列系统定义的控制码:也可以是用户自定义的控制码,范…
// InstallWDFDriver.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "Shlwapi.h" #pragma comment(lib,"Shlwapi.lib") #pragma comment (lib,"setupapi.lib") #pragma comment(lib,…
 因为装了nvidia显卡驱动后开机一直处于循环登录界面.password输入正确也是进不去.然后就决定卸载nvidia显卡驱动.安装之后出现还是循环登陆. 是openGL的问题 有至少两种解决方法.一种是使用run文件安装cuda 选择不安装openGL.还有一种是假设用deb安装的cuda就先卸载驱动 然后重装驱动 而且在安装驱动の命令行后面加入 --no-opengl-files 命令 两种我都试了 都可行,感谢唐斯琪.范少伯的指导和实践. 首先是在能使用tty1登录的情况下,使用 $…
现象: [root@ostack1 ~]# modprobe -r openvswitchmodprobe: FATAL: Module openvswitch is in use. 解决: [root@ostack1 ~]# ovs-dpctl showsystem@ovs-system: lookups: hit:116587 missed:10543 lost:0 flows: 0 masks: hit:177459 total:0 hit/pkt:1.40 port 0: ovs-sys…
在桌面“我的电脑”上点鼠标右键,选择“属性”,“硬件”,“设备管理器”,找到“显示卡选项”,打开前面的“+”,然后按鼠标右键,选择“卸载”就可以了. (亲测,主板驱动卸载成功启动)…
1 实验要求(WDM驱动)     2 编写过程   2.1 确立整体架构   2.1.1 入口函数——DriverEntry   (1)作用 设置pDriverObject结构体,注册AddDevice和相关PNP函数,包括IRP_MJ_PNP,IRP_MJ_CREATE等 (2)注意 AddDevice在Driver_Object结构体的DriverExtension->AddDevice,原型是NTSTATUS AddDevice (PDRIVER_OBJECT pDriverObject…
寄存器与内存 寄存器与内存的区别在哪里呢? 寄存器和RAM的主要不同在于寄存器操作有副作用(side effect或边际效果): 读取某个地址时可能导致该地址内容发生变化,比如很多设备的中断状态寄存器只要一读取,便自动清零. 内存与IO 在X86处理器中存在IO空间的概念,IO空间是相对内存空间而言的,他们是彼此独立的地址空间,在32位的x86系统中,IO空间大小只有64K,内存却有4G X86          支持内存空间.IO空间 ARM                 只支持内存空间 M…
Ubuntu系统---系统驱动丢失.Kernel内核卸载.禁止更新 一早开机发现,ubuntu字体异常,字体很大,直接反应是驱动坏了.一查,确实丢失英伟达驱动,为什么呢?莫名的消失.想知道:1.英伟达驱动丢失的原因?2.如何解决和避免? 上次,英伟达驱动出现问题,是循环在登陆界面.这次,英伟达驱动丢失,是内核升级了,不知道何时自动升级了,导致内核和驱动不兼容. 摘至网络资源:”一般在运行apt upgrade时会自动更新Linux内核,但是有些时候更新内核后会出现驱动程序不兼容的情况.我们可以使…
1 显卡驱动下载 官网:NVIDIA 搜索适合本机的驱动 获取最新版本驱动 立即下载 文件 以上,显卡驱动下载完成. 2 显卡驱动安装 2.1 添加可执行权限 进入驱动文件目录sudo chmod a+x NVIDIA-Linux-x86_64-470.74.run 2.2 禁用Ubuntu自带驱动 编辑配置文件:sudo vim /etc/modprobe.d/blacklist.conf 跳至最后一行添加:blacklist nouveau 完成后执行:sudo update-initram…
用vc++加载自己的驱动程序主要分为以下几个步骤: 1.加载驱动服务 主要要用到以下几个函数 SC_HANDLE WINAPI OpenSCManagerA( __in_opt        LPCSTR                lpMachineName, __in_opt        LPCSTR                lpDatabaseName, __in            DWORD                   dwDesiredAccess ); //创建…
转自:http://blog.csdn.net/coding__madman/article/details/51399353 版权声明:本文为博主原创文章,未经博主允许不得转载. 混杂设备驱动模型: 1. 混杂设备描述 在Linux系统中,存在一类字符设备,它们拥有相同的主设备号(10),单次设备号不同,我们称这类设备为混            杂设备(miscdevice).所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查到相应的混杂设备. 混杂设备也是字符设备! linux中使用…
写驱动的加载需要用到五个函数: OpenSCManager() CreateService() OpenService() StartService() CloseServiceHandle() 这五个函数的作用和用法,我在代码中会进行说明. 正常加载驱动的步骤如下: 1.调用 OpenSCManager 这个 Win32 API 函数来打开 SCM 服务管理器,如果返回值为:NULL,则表示打开失败,否则表示打开成功并继续下一步执行. 2.调用 CreateService 这个 Win32 A…
为了安全起见,Windows XP及其以后的系统将一些重要的内存页设置为只读属性,这样就算有权力访问该表也不能随意对其修改,例如SSDT.IDT等.但这种方法很容易被绕过,我们只要将这些部分修改为可写属性就可以了,不过当我们的事情做完后记得把它们恢复为只读属性,不然会造成一些很难预料到的后果. cr0是系统内的控制寄存器之一.控制寄存器是一些特殊的寄存器,它们可以控制CPU的一些重要特性. 控制寄存器最初出现于低级的286处理器中,以前称之为机器状态字(machine status word),…
更多嵌入式Linux原创,请关注公众号:一口Linux 一.模块硬件学习 1.1. Uart介绍 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称为UART,是一种异步收发传输器,是电脑硬件的一部分.它将要传输的资料在串行通信与并行通信之间加以转换.作为把并行输入信号转成串行输出信号的芯片,UART 通常被集成于其他通讯接口的连上. UART 是一种通用串行数据总线,用于异步通信.该总线双向通信,可以实现全双工传输和接收.在嵌入…
驱动安装,通讯,Hello World 开发驱动的简单流程是这样,开发驱动安装程序,开发驱动程序,然后安装程序(或者其他程序)通过通讯给驱动传命令,驱动接到之后进行解析并且执行,然后把执行结果返回. 驱动程序Hello World 之前总结了驱动环境的搭建,这里就直接继续之前搭建好的环境创建项目,打开vs2015创建一个驱动项目: 写代码之前先配置下编译选项: 然后添加一个项目文件main.c(注意后缀是.c,前面名字无所谓可以不叫main),里面的内容如下(下面模板代码来源于网络,作者:胡文亮…
本文转载自:http://blog.csdn.net/coding__madman/article/details/51399353 混杂设备驱动模型: 1. 混杂设备描述 在Linux系统中,存在一类字符设备,它们拥有相同的主设备号(10),单次设备号不同,我们称这类设备为混            杂设备(miscdevice).所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查到相应的混杂设备. 混杂设备也是字符设备! linux中使用struct miscdevice来描述一个混杂…
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=27025492&id=327609 一.核心数据结构 串口驱动有3个核心数据结构,它们都定义在<#include linux/serial_core.h> 1.uart_driver uart_driver包含了串口设备名.串口驱动名.主次设备号.串口控制台(可选)等信息,还封装了tty_driver(底层串口驱动无需关心tty_driver). struct…
本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.com/s/1kTlGkcR 总线_设备_驱动注册流程详解 • 注册流程图 • 设备一般都需要先注册,才能注册驱动 – 现在越来越多的热拔插设备,反过来了.先注册驱动,设备来了再注册 设备 • 本节使用的命令 – 查看总线的命令#ls /sys/bus/ – 查看设备号的命令#cat /proc/de…
本节主要介绍驱动开发的一些基础知识. 1. 驱动程序的基本组成 1.1. 最经常见到的数据结构 a. DRIVER_OBJECT驱动对象 // WDK中对驱动对象的定义 // 每个驱动程序都会有一个唯一的驱动对象与之对应 // 它是在驱动加载时被内核对象管理程序创建的 typedef struct _DRIVER_OBJECT { CSHORT Type; CSHORT Size; // // The following links all of the devices created by a…
一 .重要知识点: ▉1.platform设备模型 从Linux 2.6起引入了一套新的驱动管理和注册机制,platform_device和platform_driver,Linux中大部分的设备驱动都可以使用这套机制.platform是一条虚拟的总线.设备用platform_device表示,驱动用platform_driver进行注册,Linux platform driver机制和传统的device driver机制(通过driver_register进行注册)相比,一个明显的优势在于pl…
platform是Linux系统提供的一种管理设备的手段,所有SOC系统中集成的独立的外设控制器.挂接在SOC内存空间的外设等都属Platform设备.如ARM S3C6410处理器中,把内部集成的I2C.PTC.SPI.LCD.看门狗控制器都归纳为Platform设备,而这些设备本身就是字符设备.由此可见Platform中的设备是不分字符设备还是块设备. (字符设备和块设备的区别在于前者只能被顺序读写,后者可以随机访问.大多数设备为字符设备,以字节为单位,实现file_operations结构…
关于Win8消费者预览版的网卡驱动确实是令人头疼的事情,不少用户都抱怨无法联网而且驱动卸载十分麻烦.IT之家社区luoyousi 此前分享<图文教程:解决Win8消费者预览版不能上网问题>之后,仍有用户反馈不适用自己的情况:经过重装Windows8再次研究网卡驱动,luoyousi 与大家分享解决不能Win8上网的进阶版方法,希望可以帮助到更多的用户. 这次经过认真的研究,不用取消自动更新,不用设置全双工,半双工,不用更改任何设置.相比起原来的方法,这样真的能一劳永逸,不会再出现什么问题了.总…
内核中提供了USB设备文件系统(usbdevfs,Linux 2.6改为usbfs,即USB文件系统),它和/proc类似,都是动态产生的.通过在/etc/fstab文件中添加如下一行:none /proc/bus/usb usbfs defaults或者输入命令:mount -t usbfs none /proc/bus/usb可以实现USB设备文件系统的挂载. 一个典型的/proc/bus/usb/devices文件的结构如下(运行的arm Linux 2.6.37内核上的机器上插入了一个u…
Linux(Fedora25, 64bit)台式机配备了NVIDIA显卡GTX950,但是仅仅使用开源驱动nouveau,无法发挥NVIDIA显卡的性能,所以可以考虑使用官方提供的显卡驱动. # 先安装显卡驱动所需的库 sudo yum/dnf groupinstall "Development Tools" sudo yum/dnf install kernel−devel kernel−headers dkms # 从官网(www.nvidia.com)下载适合硬件和系统的显卡驱动…
1)跳入到基础篇的内核编程第7章,驱动入口函数DriverEnter的返回值决定驱动程序是否加载成功,当打算反汇编阅读驱动内核程序时,可寻找该位置. 2)DRIVER_OBJECT下的派遣函数(分发函数)指针的个数为:IRP_MJ_MAXINUM_FUNCTION,保存在一个数组中,编写驱动程序,实质上就是自己编写处理I/O请求IRP包的派遣函数,可以使用for循环将所有的派遣函数注册到同一个派遣函数.分发函数类似MFC消息机制中的回调函数,它的名字也是程序员自定义的,但是参数确定.卸载函数通过…
(原书)所有内核空间共享,DriverEntery是内核程序入口,在内核程序被加载时,这个函数被调用,加载入的进程为system进程,xp下它的pid是4.内核程序的编写有一定的规则: 不能调用windows运用层API函数 很多C标准函数失去意义,如printf,fopen,fwrite等,它们有专门的内核函数 很多单纯的C标准,如string.h(不涉及I/O及网络等)等还是适用 可以使用标准C语言,但是用浮点数之前要特殊处理 WDK提供大量System Routine以供调用,相当于运用层…
我自己在看<寒江独钓>这本书的时候,书中除了给出了利用过滤的方式来拦截键盘数据之外,也提到了另外一种方法,就是hook键盘分发函数,将它替换成我们自己的,然后再自己的分发函数中获取这个数据的方式,但是书中并没有明确给出代码,我结合书中所说的一些知识加上网上找到的相关资料,自己编写了相关代码,并且试验成功了,现在给出详细的方法和代码. 用这种方式时首先根据ObReferenceObjectByName函数来根据对应的驱动名称获取驱动的驱动对象指针.该函数是一个未导出函数,在使用时只需要先声明即可…
最近在学习驱动编程方面的内容,在这将自己的一些心得分享出来,供大家参考,与大家共同进步,本人学习驱动主要是通过两本书--<独钓寒江 windows安全编程> 和 <windows驱动开发技术详解>. 驱动开发过程中,主要使用的C语言,虽说C中定义了许多数据类型,但是一般来说在编码上还是习惯与使用WDK的规范,虽说这个不是必须的,比如有这样一句 unsigned long ul = 0; 这个数据的大小根据不同的机器不同的编译器环境略有不同,这样代码就产生了不可控的行为,但是WDK上…
安装完毕启动后,明显慢的要死,登陆后竟然是一个空白的桌面环境,Ctrl+Alt+T 根本没有任何反应.唯一的反应就是右键能够创建文件和文档. 同时打开的窗口没有最大化,最小化及关闭按钮. GOOGLE了一翻,发现很多国外同胞也遇到了同样的问题,结论是:显卡驱动问题(gma3150显卡驱动). 解决过程1: 1, 给厂家要Ubuntu12.04的显卡驱动,其实就是一个shell, 一摞要安装的包. 2,准备安装新驱动,即执行该SHELL,但是没法打开Terminal, 咋办? 3,离开X窗口,来到…