我如何创建自己的XP打印机驱动程序,它将执行以下操作:
Microsoft Visual Studio的链接器有一个/DRIVER专门用于构建驱动程序的标志:
使用
/DRIVER链接器选项构建Windows NT内核模式驱动程序.
不过,微软表示:
您不能使用Microsoft Visual Studio提供的编译器或链接器来构建驱动程序.
这引出了一个问题:
为什么我不能使用Visual Studio编译/链接驱动程序?
DDK/WDK工具生成的输出是否与Visual Studio生成的输出不同?
如果是这样,它有什么不同?
请注意,我在谈论使用Visual Studio的编译器和链接器,而不是库!
我在VS的编译器和链接器中使用了WDK头文件和库,但是Microsoft 特别指出我需要避免这种情况:
您不能使用Microsoft Visual Studio提供的编译器或链接器来构建驱动程序.
他们甚至没有提到标题和库,所以当然这不是我的问题.
为什么?
我有一个Linux应用程序,我想自动执行一些测试,其状态应根据某些设备的状态而改变,即USB设备,WLAN设备,WAN设备.但是,我们不再拥有物理USB,WLAN,WAN等设备,因此我需要找到一种方法来测试该程序,而无需实际插入物理设备,打开/关闭它们等.
我开始只是简单地创建一个我可以从用户空间控制的虚拟USB设备,但是我的基本缺乏知识阻止我在这些论坛上采用任何类似的主题并将它们应用到我的项目中.我觉得我需要创建某种虚拟USB驱动程序,然后让它与某些用户级程序而不是usbfs进行通信.但是,即使我创建了这个虚拟驱动程序,如何从用户空间"插入"此设备并使用此特定驱动程序注册我的程序?我正在努力做甚么可能吗?
我正在尝试编译开源项目Programmer Dvorak.问题是它有点旧,并且不使用当前版本的构建工具构建.
您可以在我项目的Google代码页上看到我在线修改的完整源代码.版本2是原始项目中未修改的源文件.修订版3是我做出所有重大更改的地方.您可以在此处看到两个修订版之间的差异.
剩下的唯一明显问题是一些LINK警告:
section '.edata' (40000040) merged into '.data' (C0000040) with different attributes.) - 我在这里问了一个独立版本的问题..CRT section exists; there may be unhandled static initializers or terminators)我该如何修复这些警告?我可以忽略它们吗?
尽管有这些警告,它仍然会产生一个exe.但是,如果我继续运行它,它将无法正确安装,我需要求助于系统还原才能再次安装正式版本.
这可能是因为警告或仅仅是因为我没有正确修改项目.
我还需要做些什么来使这个项目可以安装?
它说您需要Windows DDK,但似乎Windows驱动程序工具包已经取代它,所以我得到了它.我只安装了"Build Environments".
Readme.txt,你应该运行:build-layout && build-installer
Run Code Online (Sandbox Code Playgroud)
build-layout.bat运行.我不得不修改这个文件(参见这里的差异):
WinDDK路径被修改,因为我有一个较新的版本(MOD-1).set PATH=... %WINDDK%\bin\x86\x86;因为link.exe …我有一个Wix项目,我希望在使用x86版本配置构建时安装32位驱动程序,使用x64构建时安装64位驱动程序.
我现在这样做的方式是两个相同的项目,但一个引用difxapp_x86,另一个引用difxapp_x64.我能改进吗?
另外,如果我引用difxapp_x86并构建64位版本,那么毫不奇怪我得到msi错误:
"DIFXAPP:错误 - 您需要使用64位版本的DIFXAPP.DLL在此计算机上安装驱动程序."
是否可以根据所选的构建配置有条件地引用这些?
谢谢,艾伦
对于Nvidia GTX480 GPU,使用驱动程序版本275.50和280.19重新采样图像,灰度值几乎没有变化.也许这是一个插值问题.除了OpenCL 1.1版的实现之外,我无法确定新版本中的更改.仅使用OpenCL 1.0,灰度值的变化相同.
在下面的代码中,驱动程序版本275.50和280.19之间给出了不同的结果:
success oclInitImgData(struct _Image2d *image)
{
cl_image_format volume_format;
volume_format.image_channel_order = CL_R;
volume_format.image_channel_data_type = CL_UNORM_INT16;
size = len[0] * sizeof(unsigned short);
img_h = clCreateImage2D(Ocl._GPUContext, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,
&volume_format, len[0], len[1], size, data, &error);
resampledImg_h = clCreateBuffer(Ocl._GPUContext, CL_MEM_READ_WRITE, size, NULL, &error);
oclResampleImg(Ocl._GPUCommandQueue[posSet], Ocl._pGPUKernels[posSet][K_IMG_RESAMPLE], img_h, resampledImg_h , Size, PixelSize, mm_per_p, vm_h);
}
__kernel void resampleImage( __read_only image2d_t IN image, __global uint OUT *resampledImage)
{
//get resampled position
int2 posResampledImg = (int2)(get_global_id(0), get_global_id(1));
//get dimension of the image
int2 …Run Code Online (Sandbox Code Playgroud) 我不是一个C#专家,我做了一些尴尬的事情,如音乐程序的钢琴卷(因此生成一个带有数学等的WPF画布)和一些简单的程序来执行常见任务,如动态详细说明一些数据(数学运算,GUI交互等
我需要非常概括地了解如何在自己的计算机上检测USB打印机并使用它.我已经在谷歌搜索了这个,这就是我发现的:
和其他类似的链接告诉我理解的各种方法几乎没有:(
好的,这就是我想出的(我会尽量简短):
A)使用没有驱动程序的打印机(这个定义可能不准确,但我有点困惑......)
我应该:
1)找到一种方法来检测USB门以及通过产品ID和供应商ID连接到哪个设备.在Developerfusionarticle的特定情况下,authore解释了USB的一些基础知识,并告诉您使用人机接口设备来检测它.(我正在使用Windows 7,我找不到任何HID,只是其他随机的usb驱动器,而且我没有任何关于如何与它们交互的想法)
2)创建数据流并将它们连同命令一起发送到USB消息管道上的usb打印机(或witver设备).
B)使用带驱动程序或Windows API或预烘焙驱动程序的打印机:
我应该:
1)使用[MSDN System.printing libraries] [Link number 6]中的所有.NET类,并使用正确的方法直接引导打印机(在使用System.printing库查找设备之后)那些课......
好的,说明一下:
我真的没有想法正确的步骤,这就是我想问你的问题:
有关如何操作的步骤指导,特别是第一个(正如我在MSDN论坛上看到的问题,第二个问题实际上是研究代码的问题).我不希望你为我编写代码(尽管你可以,如果你想).我只是问一个一般的指导方针,哪些是实现最终结果的正确步骤.发布链接,无论有效......
据我所知,要从内核空间通知用户空间,一种方法是使用poll.这意味着内核驱动程序应该首先提供poll方法.下面的代码是从互联网上找到的,它确实有效!
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/vmalloc.h>
#include <asm/uaccess.h>
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Fortune Cookie Kernel Module");
MODULE_AUTHOR("M. Tim Jones");
#define MAX_COOKIE_LENGTH PAGE_SIZE
static struct proc_dir_entry *proc_entry;
static char *cookie_buf; // Space for fortune strings
static int write_index; // Index to write next fortune
static int read_index; // Index to read next fortune
ssize_t fortune_write( struct file *filp, const char __user *buff,
unsigned long len, void *data )
// Refer to: ssize_t (*write) (struct file *, const char __user …Run Code Online (Sandbox Code Playgroud) 我有一个使用本地安装的Web开发项目Tomcat 7.我正在尝试SQL Server 2012使用Microsoft的驱动程序连接到jdbc(sqljdbc41.jar).
该sqljdbc41.jar是我的应用程序的构建路径:
我正在出口它.此外,在Tomcat应用程序目录lib文件夹中,我还放置了一个副本sqljdbc41.jar.
没有编译错误,但在运行时,当我尝试加载SQL Server驱动程序时,我得到以下内容:
ClassNotFoundException - com.microsoft.jdbc.sqlserver.SQLServerDriver
Run Code Online (Sandbox Code Playgroud)
以下代码块中抛出异常:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://"+server+":1433;databaseName="+database+";user=sa;password="+password+";";
con = (Connection) DriverManager.getConnection(connectionUrl);
Run Code Online (Sandbox Code Playgroud)
我已经看过很多关于这个主题的帖子而没有解决
还有很多.
编译器级别1.7和JRE 1.7 - 根据文档,我相信我使用的是正确的驱动程序.这也表明必须设置CLASSPATH:
echo $CLASSPATH
/var/common/sqljdbc41.jar
Run Code Online (Sandbox Code Playgroud)
它是什么.此外:
java -version
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM)
64-Bit Server VM (build 24.75-b04, mixed mode)
Run Code Online (Sandbox Code Playgroud)
那么,为什么我还在遇到这个?
更新
我sqljdbc41.jar再次从微软下载了- 只是为了确保第一个罐子没有腐败.
按照Mick Mnemonic的链接,我从Java Build路径中删除了jar,并将新下载的jar放入WEB-INF/libWeb应用程序的文件夹中.然后我重新启动Eclipse和Tomcat服务器并清理Tomcat服务器和项目.
还是得到了 …
我试图安装一个Android触摸屏驱动程序...我有一个覆盆子pi 3,我安装emteria android它...我买了一个wavehare触摸屏https://www.waveshare.com/wiki/10.1inch_HDMI_LCD#Method_1._Driver_installation.
我能够修复分辨率,屏幕显示很好,但触摸不起作用我尝试安装驱动程序,但它是ubuntu的意思,它不能在Android上工作.知道如何解决我的触摸屏问题吗?
driver ×10
linux ×2
printing ×2
usb ×2
64-bit ×1
android ×1
api ×1
build ×1
c ×1
c# ×1
gpu ×1
installer ×1
jdbc ×1
kernel ×1
linker ×1
linux-kernel ×1
open-source ×1
opencl ×1
resampling ×1
sql-server ×1
touchscreen ×1
visual-c++ ×1
wdk ×1
windows-xp ×1
wix ×1