草庐IT

c - 我可以在文件系统驱动程序中的 ZwCreateFile/InitializeObjectAttributes 中设置/检查用户定义的标志吗?

我正在Windows下开发文件系统驱动程序,我需要检查每个访问文件的文件属性。为此,我需要为每个文件执行额外的ZwCreateFile,但它会再次返回到我的调度例程。我可以使用InitializeObjectAttributes()或ZwCreateFile()设置哪些标志以便我可以稍后检查它以便我的过滤器可以绕过此类文件访问?谢谢。 最佳答案 已解决,尝试IoCreateFileSpecifyDeviceObjectHint、IoCreateFileEx或FtlCreateFile。

c++ - C++ 根据鼠标位置查找菜单项

我正在尝试从另一个应用程序获取菜单项。我可以通过手动获取主菜单的句柄并循环访问其子菜单来完成此操作。但是很难找出给定菜单有多少级子菜单。例如,如果我们查看outlookView菜单类似这样的东西,View->排列方式->当前View->消息。所以我决定根据鼠标位置获取菜单项。但我找不到办法做到这一点。请提出一些想法来做到这一点。 最佳答案 我怀疑Windows中的菜单系统的设计方式或多或少使您想要实现的目标变得不可能。请注意,可能有一些非常规的方法可以解决这个问题,但我怀疑您会找到这样一种解决方案,其工作量比当前遍历菜单层次结构的策

c++ - Hook ntdll.dll 调用的问题

我目前正致力于通过dll注入(inject)Hookntdll.dll调用。首先,我通过CreateRemoteThread()在现有进程中创建线程然后我通过LoadLibrary加载我的dll最后HookPROCESS_ATTACH.注入(inject)工作正常,但我想记录所有注册表和文件系统查询。问题是它无法正常工作。我决定通过PasteBin发布代码,因为代码量很大。链接在这里:http://pastebin.com/39r4Me6B我正在尝试HookZwOpenKey,然后记录关键内容,然后通过指针启动“真实”功能。函数NOpenKey被执行,但进程停止,没有任何错误。有人看到

C++ 检查光驱状态

有没有人有好的方法来检查CDROM驱动器的状态,并等待它完全初始化并准备就绪后再尝试访问它?目前我正在使用WMI中的Win32_CDROMDrive。我检查“MediaLoaded”并等待它从“false”变为“true”。这在90%的时间都有效,但时不时地,我会从操作系统中收到一条错误消息,指出它希望之前的卷(CD)仍在驱动器中。工作流程:1.插入光盘1.5等待'MediaLoaded'标志2.过程数据3.弹出光盘4.重新开始。WinXP32位,C++ 最佳答案 您知道CDROM的盘符吗?如果是这样,您是否可以定期调用GetVol

c# - 如何在 c#.net windows 应用程序中生成日历

我想在c#.net中生成日历以输入每日出勤。我在web中将jquery日历用于类似目的。有什么方法可以创建日历控件并获取点击事件来标记和显示其中的值。谢谢示例图片: 最佳答案 如果您有预算,我肯定会选择商业组件,例如Telerik'sSchedulerControl.该系列的售价为999美元,我以前从未使用过Telerik的控件,所以我自己不能推荐它们,但从长远来看,如果您可以在其他项目中重复使用这些组件,从长远来看,它是值得的。如果那不是一个选项,那么像您的示例一样简单的事情将很容易实现。我主要在WinForms中工作,所以这就是

c++ - 多播基础 - 丢失数据

如果您的应用程序不处理,它是读取组播数据的基本原则吗?下一个数据报先于另一个数据报进来第一个本质上是覆盖?我做了一些实验,增加receive_buffer大小没有效果关于我所描述的。换句话说,Windows操作系统或NIC卡软件似乎没有对多播数据报进行低级排队。我的理解正确吗?或者是否有一些套接字选项或控件可以帮助解决这个问题? 最佳答案 WindowsXP有一个8KB的默认套接字缓冲区,Vista和更高版本有一个64KB的默认套接字缓冲区。您可以使用SO_RCVBUF覆盖它,建议永远不要设置为0,这与使用IOCP时用于零拷贝的SO

c++ - 枚举权限(本地安全策略)

我知道NTheader中的所有常量都定义为SE_TAKE_OWNERSHIP_NAME,因此可以使用函数将这些转换为人类可读的形式(获取文件或其他对象的所有权).我的问题是如何枚举这些名字?对于不同版本的Windows,并非所有SE名称都适用(即特定NT系统可能不提供特权)。虽然Windows7/2008确实是最新的并且适用于相同的header会列出所有这些-如果应用程序在较低的平台上运行,则采用SE名称的函数对于给定的名称只会失败操作系统不支持(例如LsaEnumerateAccountsWithUserRight会失败)。但是如何使应用程序future兼容,以便于列出future版

c++ - 如果应用程序在启动新实例之前已经在运行,如何在 C++ 中检查?

我找到了一些关于实现的引用,但只有C++中的一个清晰描述(JosephNewcomers文章http://www.flounder.com/nomultiples.htm#CreateMutex),但那是(c)1999,所以我有点不愿意在没有先检查是否有“今天更新/更好的方式。谢谢 最佳答案 任何命名对象都可以,可以是文件、互斥锁、事件、邮槽、TCP端口等。ERROR_ALREADY_EXISTS告诉您实例是否已经存在。对于Win32内核命名空间中的对象,自1999年以来有一个变化--由于终端服务,您现在可以使用Global\或Lo

c++ - 在 C++ 中访问 LPT

如何在C++visualexpress中访问LPT端口?我读过有关包含io.dll的内容,但我不知道如何使用它。有人可以告诉我一个简单的代码吗? 最佳答案 您可以使用CreateFile()打开I/O设备,例如打印机端口。hLPT=CreateFile("LPT1",GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_FLAG_NO_BUFFERING,0);WriteFile(hLPT,pointerToBuffer,sizeOfBuffer,&numberOfBytesWritten,NULL);Flush

c++ - WCHAR 到 String,我该怎么做?

String*Adder::downloadUrl(String*url){DWORDdwSize=0;LPVOIDlpOutBuffer=NULL;BOOLbResults=FALSE;HINTERNEThSession=NULL,hConnect=NULL,hRequest=NULL;//UseWinHttpOpentoobtainasessionhandle.hSession=WinHttpOpen(L"AWinHTTPExampleProgram/1.0",WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,WINHTTP_NO_PROXY_NAME,WINHT