Tag: windows

如何在Windows上无阻塞地读取可用输入

在Linux上,我可以在不阻止进程的情况下读取可用输入: fcntl(STDIN_FILENO, F_SETFL, fcntl(STDIN_FILENO, F_GETFL, 0) | O_NONBLOCK ) char buf[n]; int r = fread(buf, 1, n, stdin); if (r == 0){ printf(“nothing\n”); } else { printf(“read: “); fwrite(buf, 1, r, stdout); printf(“\n”); } 输入源可以是任何东西,例如文件,终端或管道。 我怎么能在Windows XP上做到这一点? 谢谢。

尝试为我的屏幕保护程序显示配置窗口的问题(来自以高强制完整性级别运行的GUI应用程序)

我有一个带有自己的屏幕保护程序的旧项目。 该项目的GUI应用程序有一个“配置屏幕保护程序”选项,它应该显示我的屏幕保护程序配置窗口(通常从控制面板 – >显示 – >个性化 – >屏幕保护程序 – >设置。) 要显示配置窗口,需要使用/c参数调用屏幕保护程序进程,如此处所述 。 屏幕保护程序本身放在系统目录中,即”C:\Windows\System32″ 。 因此,要从我的(32位)GUI应用程序模拟这个,我执行以下操作: //Error checks are omitted for brevity BOOL bResult = FALSE; TCHAR buffSysFldr[MAX_PATH]; buffSysFldr[0] = 0; ::GetSystemDirectory(buffSysFldr, SIZEOF(buffSysFldr)); //Make the path, which basically becomes: // “C:\Windows\System32\mysvr.scr” /c TCHAR buff[MAX_PATH]; buff[0] = 0; ::StringCbPrintf(buff, sizeof(buff), L”\”%s\\mysvr.scr\” /c”, buffSysFldr); STARTUPINFO si = {0}; […]

抛出OpenGLexception:读取访问冲突,窗口为0xCCCCCCCC

我使用的是我在上一个问题中描述的相同框架。 我通过创建一个新的DLL而不是仅仅将项目的构建类型从“Windows应用程序(.exe)”更改为“DLL(.dll)”来解决它。 但是现在当我在我的结构中使用GLFWwindow *类型的变量并尝试写入或读取时。 它总是导致分别弹出写访问或读访问冲突。 exception突然出现,就像窗口开始然后关闭一样,显示exception。 例外情况如下: – 抛出exception:读取访问冲突。 窗口是0xCCCCCCCC。 它发生在GLFW的window.c文件中,它指向尝试读取它的函数。 我甚至尝试使用指针来修改窗口,但它仍然没有用。 这是框架的代码: – 修改! 在window.h #ifndef LIB_GRAPHICS #define LIB_GRAPHICS #ifdef LIB_EXPORTS #define LIB_EXPORT _declspec(dllexport) #else #define LIB_EXPORT _declspec(dllimport) #endif #define LIB_FALSE 0 #define LIB_TRUE 1 #define LIB_BeginRender LIB_SetEvents(); LIB_ClearToColor #define LIB_EndRender LIB_SwapWindowBuffers #define LIB_CENTER_POSITION 0xCEAAFFEE /* Define other things… */ typedef const char* LIB_String; […]

在Windows 8下不调用NDIS筛选器驱动程序的FilterAttach例程

每一个人。 我已将NDIS 5协议中着名的数据包捕获软件WinPcap移植到NDIS 6 LWF。 在Win7下一切都很好。 但是,在Win8下永远不会调用FilterAttach例程。 我发现在DriverEntry中调用NdisFRegisterFilterDriver返回NDIS_STATUS_SUCCESS,这太奇怪了。 谁能帮我? 谢谢! 这是DriverEntry的代码 _Use_decl_annotations_ NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ) { NDIS_FILTER_DRIVER_CHARACTERISTICS FChars; NTSTATUS Status = STATUS_SUCCESS; // NDIS_STRING FriendlyName = NDIS_STRING_CONST(“WinPcap NDIS LightWeight Filter”); // NDIS_STRING UniqueName = NDIS_STRING_CONST(“{5cbf81bd-5055-47cd-9055-a76b2b4e2637}”); //unique name, quid name // NDIS_STRING ServiceName = NDIS_STRING_CONST(“npf6x”); //this to match the service […]

即使以管理员身份运行,打开$ MFT文件也会导致访问被拒绝

我试图从MFT中删除文件记录,如果我打开原始分区并通过解析MFT文件到达所需的文件记录,我正在成功。 这种方法的问题是我必须首先锁定卷,以便我可以在任何MFT文件记录上写零,如果某个其他进程持有卷锁(非常非常可能),由于Windows操作系统,写入原始卷失败限制。 我想到的另一种方法是将“$ MFT”作为文件打开然后读写它。 通过这种方式我认为我不必锁定音量。 但是当我尝试通过createfile winapi函数打开$ MFT文件时,即使我以管理员身份运行程序,也会出现“拒绝访问”错误? 我的问题是如何打开$ MFT系统文件进行写入和读取? Windows OS是否允许系统文件以正常方式读写? 如果没有,我还能做什么? 任何帮助,将不胜感激。

Windows下C程序的内存使用情况

可能重复: 在Windows下查找程序在c中使用的总内存 如何在Windows下以c语言获取程序的内存使用量并将该值放在输出文件中 (背景:我正在通过实施排序算法来比较一些统计数据上的两种语言。) 有没有这样做的程序……

Android NDK OpenSSL错误交叉编译

我是NDK的新手,我正在按照本指南为Android构建OpenSSL,我正在使用Windows 7和Cygwin。 我在尝试构建OpenSSL库时遇到了错误。 # From the ‘root’ directory $ . ./setenv-android.sh $ cd openssl-1.0.1g/ $ perl -pi -e ‘s/install: all install_docs install_sw/install: install_docs install_sw/g’ Makefile.org $ ./config shared no-ssl2 no-ssl3 no-comp no-hw no-engine –openssldir=/usr/local/ssl/$ANDROID_API $ make depend $ make all 当我尝试make depend命令时,我有2个错误: cryptlib.c:171:3: error: #error “Inconsistency between crypto.h and cryptlib.c” # error “Inconsistency between crypto.h […]

如何在c 中执行多个读/写HDD / USB字节

首先,我看了几个链接…… 直接有效地读写硬盘扇区 在Windows上使用C语言读取硬盘驱动器上的特定扇区 我正在尝试做几乎相同的事情。 我遇到的问题是多次读取设备,因此我可以从DEVICE(USB)存储读取的字节,将它们写入文件。 这就是我想要做的…… 声明变量 初始化变量 SetFilePointer() ReadFile的() 将读取的字节输出到文件 使用ReadFile()来获取更多字节 再次将读取的字节输出到同一文件 重复6和7(实际上只重复4和5) 这似乎不起作用。 我想读取x个字节并将这些值存储到一个文件中然后读取更多并将这些值存储在上次相同的文件中。 我希望它重复这个过程,直到它读到设备的末尾。 我希望这个程序适用于任何大小的设备。 如果我可以把它放在循环中,那么我可以读写无限大小的设备。 这是一个如何读/写,所以我也想反过来。 读取文件中的值,然后将其写入设备。 我使用的是128MB USB。 它包含131858432字节。 如果需要更多信息,我会发布它,如果我有它。 我的代码: #include #include int main(int argc, char ** argv) { BYTE sector[0x400] = {0}; DWORD bytesRead; HANDLE device = NULL; int numSector = 1; int maxRead = 1; FILE *readChar […]

如何从本机C DLL显示简单的无模式窗口

我必须在本机C DLL中创建一个简单的提示。 我从来没有用C创建窗口,所以我不知道存在什么可能性。 窗口应包含文本框和按钮。 当用户按下按钮时,我应该能够获得该文本框的值。 如图所示,窗口不应该中断程序流程,它应该是无模式的。 我必须能够从DLL中的代码关闭窗口。 我想到使用MFC,直到我意识到它是用于C ++。 所以我认为我可以编写一个包装器然后像这样使用它,但显然必须重新构建项目的某些部分以便它可以工作(比如更改入口点)。 我对如何使用任何“GUI-Frameworks”感到有点困惑,但是如果有一个简单的解决方案会很棒。 解决方案应该尽可能简单。 编辑: DLL用于什么…… 我们有一个使用SCC接口的应用程序套件(我将其称为IDE)。 我们有一个SVN存储库,因此我们使用PushOk将查询从IDE转换为SVN命令。 PushOk和IDE对SCC接口的定义并不总是一致的,因此IDE会因某些操作而崩溃。 由于我们没有PushOk的源代码,我们编写了自己的代理DLL来修复我们遇到的具体问题。 现在,PushOk没有选项来获取文件,同时指定修订版(它确实在我们的情况下不起作用)。 所以我们必须自己实现它。 所提到的窗口将是可以输入修订版本的窗口,然后我们将获得该修订版本的文件。

CreateWindowEx创建后无效的X位置

我注意到,一旦使用“CreateWindowEx”创建一个窗口,其中x = 0,y = 0位置坐标,窗口似乎不位于​​屏幕的0,0角。 相反,它出现在x = 9 ,y = 0 。 我正在使用一台显示器。 我并没有在其他任何地方调整它的位置。 窗口创建为重叠的父窗口。 创建窗口时,使用x = 8,y = 31调用WM_MOVE。 (那些是“客户区”坐标) (WM_MOVE y坐标为31px有点奇怪,但在屏幕截图中你可以看到它应该是~38px ……) 窗口由以下内容创建: mHandle = ::CreateWindowEx(WS_EX_APPWINDOW, CLASS_NAME, APP_NAME, WS_OVERLAPPEDWINDOW, 0, 0, mWidth, mHeight, HWND_DESKTOP, nullptr, mInstance, this); 关于我可能做错的任何想法? 可能是什么原因?