我正在构建的目标驱动程序不是本机驱动程序,而是使用Microsoft Universal Pinter Driver的微型驱动程序
根据DDK:
这些项目的描述[我的情况下的字体]被放置在资源DLL中,如Platform SDK文档中所述.
然后继续说:
在打印机的资源DLL中,使用RC_UFM资源类型指定.ufm文件,并使用RC_FONT资源类型指定.ifi文件.
尽管引用了SDK,但没有关于如何在资源dll中实际放置.ifi字体信息的信息.
任何人都可以指出一种方法来做到这一点?
编辑
是的,打印机包含常驻字体,我需要创建一个描述它们的资源文件.
到目前为止,我遇到了另一个障碍,因为显然你必须编译到你的资源dll的字体描述文件.ifi(即使DDK说他们可以),他们只是不工作.但它可以找到.ufm字体描述文件.问题是我们只有ifi文件描述设备字体但没有umf ...
有什么建议?
我正在编写游戏的音频部分,我正在使用 OpenAL。我想使用一些扩展,但测试总是失败:
TRACE: AudioManager - Sound device: 'Generic Software'
TRACE: AudioManager - Enabling OpenAL extensions...
TRACE: AudioManager - Compressor support: NO
TRACE: AudioManager - Reverb support: YES
TRACE: AudioManager - Chorus support: NO
TRACE: AudioManager - Distortion support: NO
TRACE: AudioManager - Echo support: NO
TRACE: AudioManager - Flanger support: NO
TRACE: AudioManager - Frequency shifter support: NO
TRACE: AudioManager - Vocal morpher support: NO
TRACE: AudioManager - Pitch shifter support: NO
TRACE: AudioManager - Ring modulator support: NO
TRACE: …Run Code Online (Sandbox Code Playgroud) 我目前正在使用FindFirstFile,FindNextFile API来递归遍历目录,以便根据给定的条件搜索文件.我注意到"dir/s"命令比我的程序提供更好的性能.我试着检查进程监视器中的事件,看起来像cmd.exe/dir命令直接查询磁盘设备驱动程序.有什么方法可以实现与DeviceIOControl()相似的东西吗?虽然不是编程新手,但我对设备驱动程序非常陌生.附加procmon输出以供参考:

问候,
有人可以让我知道如何提供所有必需的文件,如inf文件,.sys等,以编程方式安装第三方设备驱动程序.这个解决方案应该最小的操作系统是Windows2000.
我尝试将.inf文件复制到Win Folder\INF文件夹,将sys文件复制到Win文件夹\ system32\drivers,但每次插入设备时,Windows弹出Found New Hardware用户界面,这是我想避免的.
下面是我尝试但功能返回的东西error 87 (The parameter is incorrect).
HINF HInf;
UINT ErrorLine;
BOOL bRes = FALSE;
PBOOL FileWasInUse = FALSE;
LPCSTR szSourceFileName = _T("C:\\Drivers_HypercomP1320\\hypvcpusb.inf");
LPCSTR szInfFileName = _T("hypvcpusb.inf");
PVOID Context = NULL;
HInf = SetupOpenInfFile ( szSourceFileName, NULL, INF_STYLE_WIN4, &ErrorLine);
LPCSTR SourceFile = ("hypvcp.sys");
LPCSTR SourcePathRoot = _T("C:\\Drivers_HypercomP1320");
LPCSTR DestinationName = _T("C:\\WINDOWS\\system32\\drivers\\hypvcp.sys");
bRes = SetupInstallFileEx ( HInf, NULL, SourceFile, SourcePathRoot, DestinationName, SP_COPY_FORCE_IN_USE,
(PSP_FILE_CALLBACK)CopyMsgHandler, Context, FileWasInUse);
DWORD dwVal = GetLastError();
SetupCloseInfFile(HInf);
// Callback …Run Code Online (Sandbox Code Playgroud) 我正在为Windows编写键盘过滤器驱动程序,我需要将自定义击键数据插入Windows消息队列.我已经设法捕获所有按下的键,在我的驱动程序的Read()函数中将OnReadCompletion()回调设置为IoSetCompletionRoutine(),如下所示:
NTSTATUS Read(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
PDEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension;
IoCopyCurrentIrpStackLocationToNext(Irp);
IoSetCompletionRoutine(Irp, OnReadCompletion, DeviceObject, TRUE, TRUE, TRUE);
return IoCallDriver (deviceExtension->pKeyboardDevice, Irp);
}
NTSTATUS OnReadCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
此过滤器驱动程序附加到kbdclass驱动程序,如下所示:
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
// ...
CCHAR ntNameBuffer[64] = "\\Device\\KeyboardClass0";
status = IoAttachDevice(deviceObject, &uKeyboardDeviceName, &DeviceExtension->pKeyboardDevice);
// ...
Run Code Online (Sandbox Code Playgroud)
}
所以,我可以捕获OnReadCompletion()中按下的所有键.但我需要将自己的信息插入键盘消息流中.这有两个问题:
OnReadCompletion()仅在按下某个键时调用.理想情况下,我想以某种方式在没有按下时调用它.我能以某种方式这样做吗?我需要触发键盘中断吗?我尝试使用WRITE_PORT_UCHAR()将命令写入键盘端口(0x60和0x64)但是没有用完.
我试图在OnReadCompletion()中将我的数据插入到IRP中,使其看起来像一个按键被按下两次,而实际上只按了一次.也有人可以帮我解决这个问题,因为下面没有成功吗?
NTSTATUS OnReadCompletion(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
{
PIO_STACK_LOCATION IrpStackLocation = NULL; …Run Code Online (Sandbox Code Playgroud)linux-y3pi:~ # lspci | grep -i ethernet
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 01)
linux-y3pi:~ # lspci -n | grep 01:00.0
01:00.0 0200: 10ec:8136 (rev 01)
Run Code Online (Sandbox Code Playgroud)
从这里:http : //www.cyberciti.biz/tips/linux-find-supported-pci-hardware-drivers.html
样本输出:
00:1b.0 0403: 8086:27d8 (rev 01) 其中,
- 00:1b.0 - 设备
- 8086 - 英特尔公司的构造函数代码
- 27d8 - 模型 ID。
所以,我打开了:
/usr/src/f/rtnet/drivers/experimental/rt_r8169.c
相关代码(IMO):
static struct pci_device_id rtl8169_pci_tbl[] __devinitdata = {
{ 0x10ec, 0x8169, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
{ 0x1186, 0x4300, PCI_ANY_ID, PCI_ANY_ID, 0, …Run Code Online (Sandbox Code Playgroud) 我想在 linux os 中用 C 编写驱动程序,尽管我认为它非常困难。我可以得到一些关于如何开始或阅读书籍的提示吗?驱动可以从我的USB口到显卡!!
我知道在哪里可以搜索书籍,我想知道我应该从哪些基础知识开始。我需要有硬件知识吗,哪些特定的书籍适合我这样的新手
我是具有Linux内核编程经验的中级程序员。在实习期间,我主要参与调试内核和驱动程序代码。我最近完成了Robert Love撰写的《内核开发》一书。我在Jonathan Corbet撰写的《 Linux设备驱动程序手册》中学习了一半。但是我现在面临一个令人困扰的问题。这些书都没有教我如何实际编写真正的(硬件)设备驱动程序。LDD3e书告诉我如何编写基于内存的软件驱动程序和sysfs接口,我非常擅长。那我从哪里开始呢?有什么要求,我该如何处理?
PS:我已经开始阅读“ Sreekrishnan Venkateswaran撰写的《 Essential Linux Device Drivers》”一书
给定 PCI 设备的地址(即总线、设备、功能),如何在用户空间中使用 Win32 API 调用以编程方式读取该设备的配置空间(例如供应商 ID、设备 ID)?
在 Linux 上,打开 /sys/bus/pci/devices//config 文件并从正确的偏移量读取。
我在任何标题中都找不到 CFErrorDomainLaunchd。我使用 find 命令来 grep 10.11 SDK 中的每个头文件。
我也试过谷歌:
site:opensource.apple.com CFErrorDomainLaunchd
Run Code Online (Sandbox Code Playgroud)
当我尝试安装我的助手应用程序及其启动 plist 时,SMJobBless 将错误传回。
我很困惑,因为昨天的安装工作得很好。我在此决定比现在更频繁地检查我的代码。
Boolean success;
CFErrorRef error;
success = SMJobBless(
kSMDomainSystemLaunchd,
CFSTR("com.frescologic.FL2000.Uninstaller.UninstallerHelper"),
self->_authRef,
&error ); <-- This is CFErrorDomainLaunchd error 2
Run Code Online (Sandbox Code Playgroud)
我永远欠你的债。
我正在开发 - 或试图开发 - 驱动程序的卸载程序。它还将卸载用户空间程序以及 OS X 用于启动或停止该用户空间程序的 LaunchAgent plist。