腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
视频
沙龙
1
回答
WSARecv如何利用lpOverlapped?如何手动向事件发送信号?
c++
、
winsock
我需要弄清楚当lpCompletionRoutine为空时WSARecv如何使用lpOverlapped参数。它表示位于lpOverlapped中的事件,对吗?但肯定还有更多的原因。 我正在拦截普通的WSARecv调用,这样我就可以记录数据包,我可以很好地捕获数据,但是客户端挂起并等待被告知recv操作已经完成。我只是不知道真正的WSARecv函数对lpOverlapped做了什么来通知客户端操作已经完成。 当lpOverlapped传入WSARecv时,lpOverlapped>hEvent为null。所以我不能简单地执行SetEvent()或WSASetEvent()。我可以通过执行
浏览 6
提问于2011-08-22
得票数 2
1
回答
如何更改通过ReadFile函数读取的文本
c++
、
winapi
、
detours
如何更改通过ReadFile函数读取的文本?我使用绕道来挂接ReadFile函数调用。它工作得很好(我认为是因为调试消息框),但我不能更改从文件读取的文本。 static BOOL(WINAPI * true_read_file)( HANDLE hFile , LPVOID lpBuffer , DWORD nNumberOfBytesToRead , LPDWORD lpNumberOfBytesRead , LPOVERLAPPED lpOverlapped) = ReadFile; BOOL WINAPI my_read_file( HANDLE hFile
浏览 5
提问于2014-05-26
得票数 0
1
回答
DevicIOControl与VC#的结合
c#
、
deviceiocontrol
我创建了两个使用C#调用的不同的Visual,并将它们定义如下: 在第一个dll中: [DllImport("kernel32.dll", SetLastError = true)] static extern BOOL DeviceIoControl( HANDLE hDevice, DWORD dwIoControlCode, ref Internal_COMMAND lpInBuffer, DWORD nInBufferSize, ref ulong lpOutBuffer, DWORD nOutBufferSize,
浏览 0
提问于2016-03-28
得票数 0
回答已采纳
3
回答
读取小部件中的大型二进制文件
c++
、
visual-c++
、
c++-cli
、
binaryfiles
我想从硬盘上读取一个文件,大小可达4-5GB。但不是一蹴而就,而是以部分~100 of为序。我想使它尽可能简单和快速,但现在我看到来自C++的标准方法不会对大于2GB的文件起作用。我使用2008,C++/CLI。有什么建议吗?我试着使用CreateFile,ReadFile,但对我来说,这会造成比实际工作更多的问题,或者我错误地使用它们来读取一个大文件。 编辑:示例代码: 创建句柄 hFile = CreateFile(result, GENERIC_READ, FILE_SH
浏览 7
提问于2011-11-12
得票数 2
回答已采纳
1
回答
如何在完成例程中使用ReadDirectoryChangesW()方法?
windows
、
asynchronous
、
readdirectorychangesw
我希望在异步模式下使用函数ReadDirectoryChangesW(),并提供I/O完成例程。 问题是,我不知道如何检索有关完成例程( CALLBACK函数)中更改的确切信息。完成例程的定义如下: VOID CALLBACK FileIOCompletionRoutine( [in] DWORD dwErrorCode, [in] DWORD dwNumberOfBytesTransfered, [in] LPOVERLAPPED lpOverlapped ); 我想知道这些信息是否包
浏览 2
提问于2008-12-05
得票数 13
3
回答
如何触发WSAOVERLAPPED事件?(C++)
c++
、
winsock
注意:我遇到的特殊情况是lpCompletionRoutine为null而lpOverlapped不为null。 我正在试着写一个包嗅探器。我挂接了WSARecv,并用我自己的代码替换它。如果lpOverlapped不为null,我将创建自己的LPWSAOVERLAPPED变量并调用真正的WSARecv。我可以很好地接收和记录数据包,但问题是,我嗅探的客户端似乎在等待它的WSAOVERLAPPED事件被触发。 所以问题是,我如何触发初始的lpOverlapped?我尝试过像WSASetEvent这样的东西。我试着做了内联asm,并做了这样的事情: __asm{ push InFlags
浏览 0
提问于2011-08-19
得票数 0
回答已采纳
1
回答
WriteFile字符串字节长度导致崩溃
winapi
、
assembly
、
crash
、
masm
、
masm32
问题 我一直在尝试各种字节计数,试图使工作。问题是它在写入文件后立即崩溃。所有的文本都在文件中,但是"A程序崩溃了,发送到Microsoft?“弹出错误对话框。 当注释掉invoke WriteFile及其下面的所有内容时,程序运行良好,不会崩溃。然而,当我取消注释WriteFile,并将所有代码留在下面时,它会再次注释掉它,这是丑陋的头。代码在下面,如果有人能看到我错过的东西,我们将非常感激:) Byte长度我试过了。 我尝试过23,24 (字符串长度+ null),25字节(可能我忘记了一个字节),还使用了SIZEOF WriteText,它们都失败了:-(。 码 .386 .m
浏览 0
提问于2010-12-14
得票数 1
回答已采纳
2
回答
Windows使用WriteFile编写std::string的正确方法是什么?
c++
、
winapi
BOOL WINAPI WriteFile( _In_ HANDLE hFile, _In_ LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped ); WriteFile接受一个const *。如何将std::string转换为const *,以便将字符串的内容写入磁盘?
浏览 3
提问于2013-12-22
得票数 1
回答已采纳
1
回答
如何使用Windows API WriteFile将ASCII字符串写入文件?
c++
、
c
、
windows
、
file-io
我知道我们可以使用WriteFile将某些内容写入文件: BOOL WINAPI WriteFile (HANDLE hFile, LPCVOID lpBuffer, DWORD numOfBytesToWrite, LPDOWRD lpNumOfBytesWritten, LPOVERLAPPED lpOverlapped); 但是我们如何使用这个函数将ASCII字符串写入文件呢?
浏览 0
提问于2012-11-12
得票数 1
回答已采纳
1
回答
使用自由函数作为LPOVELAPPED_COMPLETION_ROUTINE
c++
、
winapi
我无法理解以下编译错误: unsigned char buf[1000]; const DWORD maxBytes = 1000; OVERLAPPED o; void foo(DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped) { return; } void bar(HANDLE hFile) { auto lambda_foo = [](DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lp
浏览 4
提问于2017-06-29
得票数 0
回答已采纳
1
回答
当GetQueuedCompletionStatus()返回FALSE时,这些参数的值是多少?
c++
、
sockets
、
iocp
导致GetQueuedCompletionStatus()失败的原因有两个(返回FALSE),第一个原因是当调用未执行时与其关联的完成端口句柄被关闭,如果lpOverlapped是NULL,则会出现这种情况。 第二个原因(这是我所关心的)是IO操作(例如:WSARecv())失败。关于这种情况,文档就是这样说的: 如果*lpOverlapped不是NULL,并且函数从完成端口为失败的I/O操作排齐一个完成包,则该函数将有关失败操作的信息存储在lpNumberOfBytes、lpCompletionKey和lpOverlapped所指向的变量中。要获得扩展的错误信息,请调用GetLastErr
浏览 2
提问于2015-02-27
得票数 2
回答已采纳
1
回答
Windows 7/64下串行异步I/O
c++
、
winapi
、
windows-7
、
asynchronous
、
serial-port
我有一个多线程Windows程序,它通过"raw“Win API调用进行串行端口异步I/O。除了Windows 7/64之外,它在任何Windows版本上都能很好地工作。 问题是程序可以找到并设置COM端口,但是它不能发送或接收任何数据。无论是在Win XP还是7中编译二进制文件,我都不能在Win 7/64上发送/接收。兼容性模式,运行作为管理等没有帮助。 我设法将问题缩小到FileIOCompletionRoutine回调。每次调用时,dwErrorCode总是0,dwNumberOfBytesTransfered总是0。函数内部的GetOverlappedResult()总是返回T
浏览 1
提问于2012-09-25
得票数 2
回答已采纳
2
回答
重叠I/O的GetOverlappedResult(bWait=TRUE)与WaitForSingleObject()
c
、
windows
、
winapi
当我在Win32 api上以重叠方式打开和读取文件时,我有几种方法来完成IO请求,包括等待文件句柄(或重叠结构中的事件) WaitForSingleObject GetOverlappedResult与bWait=TRUE 这两个函数似乎具有相同的效果:线程停止直到句柄或事件被发出信号,这意味着数据被放置在提供给ReadFile的缓冲区中。 那么,有什么区别呢?为什么我需要GetOverlappedResult
浏览 9
提问于2017-03-11
得票数 5
1
回答
我的循环是不是错了?我是否误用了ReadFile()和I/O完成端口?
winapi
、
readfile
、
io-completion-ports
我想实现一个使用命名管道的服务器/客户端(对于IPC)。我使用异步(重叠)连接和I/O完成端口(我搜索了很多次,似乎这是最有效的方法)。 首先是代码: 服务器: 和客户端: 问题出在服务器上(我可以改进客户端,但我会在服务器正常工作时这样做)。 我像这样使用I/O完成端口:基本上,我运行一个线程,在这个线程中我调用ReadFile()。如果返回TRUE,则获取所有数据;如果返回FALSE,并且错误为ERROR_IO_PENDING,则使用GetQueuedCompletionStatus()等待。 奇怪的是,即使我读取了所有数据,最后一次ReadFile()调用也失败了,错误为ERROR_IO
浏览 0
提问于2011-04-08
得票数 1
1
回答
具有关联IOCP的文件句柄的传统重叠I/O
winapi
一段时间以前,我认为在文件句柄上使用同步I/O可能会很有用,它是由重叠的I/O创建的,但这并不起作用。 因此,我更进一步,检查是否有可能有通常的重叠I/O与事件句柄等待f.e.当还有一个I/O完成端口与该文件句柄相关联时,使用WaiForSingleObject。我用下面的程序检查了一下,实际上它似乎起作用了: #include <Windows.h> #include <iostream> #include <cstdlib> using namespace std; #define GET_IOCP int main() { HANDLE
浏览 1
提问于2020-11-23
得票数 0
2
回答
如何在VB .Net中通过WriteFile接口使用重叠结构
vb.net
、
api
、
writefile
、
overlapped-io
我使用VB .Net调用Kernel32.dll WriteFile接口: Public Declare Function WriteFile Lib "kernel32" _ ( _ ByVal hFile As IntPtr, _ ByVal lpBuffer As Byte(), _ ByVal nNumberOfBytesToWrite As Int32, _
浏览 3
提问于2017-07-16
得票数 0
1
回答
Windows IOCP树?
windows
、
io-completion-ports
我想做的是休眠:所以我有4个线程。并为每个线程创建一个IOCP。在线程函数中,我等待GetQueuedCompletionStatus(INIFINIT)获取一个作业,然后处理它,然后再次等待。 因此,如果我想提交一个作业到一个特定的线程,我只需要在它的IOCP上使用PostQueuedCompletionStatus。 但我想要的是有一个像主IOCP和线程内的函数。我在主IOCP上执行GetQueuedCompletionStatus,所以当我在主IOCP上发布作业时,随机线程获取作业并处理它,但我仍然希望为特定线程发送特定作业。我该怎么做呢?谢谢!谢谢。
浏览 4
提问于2016-12-05
得票数 0
2
回答
Excel中的钩子ReadFile函数
c++
、
excel
、
winapi
、
hook
、
readfile
我使用“A”的每个字节来生成加密文件。并再次这样做解密文件-> Excel打开解密文件正常。 现在我想通过Excel打开一个加密的文件。 在返回缓冲区之前,我会钩住ReadFile API来解密它。 但Excel显示 Excel无法打开文件'filename.xlsx‘,因为文件格式或文件扩展名无效 读取前8个字节之后。 解密的8个字节是50 4B 03 04 14 00 06 00,这是正确的Office签名,与原始文件相同。 下面是myReadFile函数: BOOL WINAPI MyReadFile( _In_ HANDLE hFile, _Out_writes_
浏览 2
提问于2021-03-23
得票数 1
1
回答
Windows中使用重叠IO时AccessViolation的奇怪情况
winapi
、
visual-c++
我一直在试验Win32 API的重叠IO特性,即ReadFileEx和WriteFileEx函数。 下面是一个最简单的例子: #include <iostream> #include <string> #include <Windows.h> const DWORD blockSize = 512; char buffer[blockSize]; bool done = false; OVERLAPPED overlapped; void Completion(DWORD error, DWORD read, LPOVERLAPPED overlap
浏览 4
提问于2015-12-28
得票数 0
回答已采纳
1
回答
如何获得成功写入的字节数?
c#
我正在做一个项目,将代码从C++转换为C#用于打印机。我将WriteFile()中的C++替换为C#中的SerialPort.Write()。 C# public void Write( byte[] buffer, int offset, int count ) C++ BOOL WINAPI WriteFile( _In_ HANDLE hFile, _In_ LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD
浏览 2
提问于2014-03-27
得票数 3
3
回答
使用Win32线程尝试异步I/O
c++
、
winapi
、
asynchronous
、
io
、
deque
我正在为Windows编写一个串口软件。为了提高性能,我正在尝试将例程转换为使用异步I/O。我的代码运行良好,但我是半初学者,我想进一步提高程序的性能。在程序的应力测试中(即以较高的波特率,尽可能快地将数据从端口发送到/输出),CPU负载变得相当高。 如果有谁在Windows中有过异步I/O和多线程的经验,我将非常感谢您能看看我的程序。我有两个主要问题: 是否正确地实现了异步I/O?我在网上找到了一些相当可靠的来源,建议您可以将用户数据传递给回调函数,方法是在最后实现自己的重叠结构和自己的数据。这似乎很好,但在我看来确实有点“老套”。另外,当我从同步/轮询转换为异步/回调时,程序的性能并没有得
浏览 5
提问于2011-03-07
得票数 4
回答已采纳
1
回答
为什么我的IOCompetionCallback永远不会在IO完成端口上执行?
c#
、
multithreading
、
asynchronous
、
.net-core
、
async-await
最小可重现示例: Interop.cs public static class Interop { [DllImport("kernel32.dll")] public static extern IntPtr CreateIoCompletionPort( [In] IntPtr fileHandle, [In] IntPtr existingCompletionPort, [In] UInt32 completionKey, [In] UInt32 numberOfConcurrentThre
浏览 43
提问于2021-08-04
得票数 5
回答已采纳
1
回答
WSARecvFrom目标ip地址
c++
、
sockets
、
udp
我使用WSARecvFrom函数。看起来是这样的: addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons(listen_port); bind(s, reinterpret_cast<PSOCKADDR>(&addr), sizeof(addr)); ... WSARecvFrom(s, ..., reinterpret_cast<sockaddr *>(&event->address), &event->addressLength, ...); 我可以从事件->
浏览 4
提问于2013-07-24
得票数 0
2
回答
GetQueuedCompletionStatus在远程套接字闭包上返回ERROR_NETNAME_DELETED
winsock
、
getlasterror
、
io-completion-ports
我正在使用I/O-完成端口编写一个小的服务器-客户机-东西。 我通过完成端口通过AcceptEx成功地连接了服务器和客户端。客户端连接后,客户端套接字与完成端口相关联,并在该套接字上调用对WSARecv的重叠调用。 一切正常,直到我关闭客户端测试程序。GetQueuedCompletionStatus()返回FALSE,GetLastError返回 ERROR_NETNAME_DELETED ,这对我来说很有意义(在我阅读了MSDN上的描述之后)。 但我的问题是,我认为对GetQueuedCompletionStatus的调用将返回一个数据包,指示由于套接字关闭而导致的失败,因为WSARe
浏览 3
提问于2011-03-29
得票数 0
回答已采纳
2
回答
为什么给ReadFileEx()的回调没有接收到正确的重叠结构?
c
、
winapi
、
visual-c++
、
file-io
、
overlapped-io
由于某些原因,我的回调在调用ReadFileEx之后没有接收到正确的OVERLAPPED结构的地址。是什么导致了这种情况? 更新--示例: #include <stdio.h> #include <Windows.h> void __stdcall completion_routine( unsigned long dwErrorCode, unsigned long dwNumberOfBytesTransfered, OVERLAPPED *lpOverlapped) { printf("Overlapped = %p\n&
浏览 5
提问于2013-05-24
得票数 1
回答已采纳
1
回答
异步ReadDirectoryChangesW在ERROR_INVALID_PARAMETER中失败
winapi
、
asynchronous
我成功地同步使用了ReadDirectoryChangesW,但是当我尝试使用完成端口时,ReadDirectoryChangesW总是返回ERROR_INVALID_PARAMETER。我想我的代码中应该有一些明显的错误,但我无法理解。 我的代码是基于的 const wchar_t *directory = L"X:\\X"; HANDLE h = CreateFile( directory, FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE
浏览 6
提问于2013-12-17
得票数 1
回答已采纳
1
回答
LPOVERLAPPED_COMPLETION_ROUTINE与函数不兼容
winapi
、
c++-cli
、
writefile
我想使用WriteFileEx (从winapi )异步地将数据写入文件,但是回调有问题。 I得到以下错误:类型为"void (*) (DWORD dwErrorCode,DWORD dwNumberOfBytesTransfered,LPOVERLAPPED lpOverlapped)“的参数与"LPOVERLAPPED_COMPLETION_ROUTINE”类型的参数不兼容 我做错了什么? 这是代码: // Callback void onWriteComplete( DWORD dwErrorCode, DWORD dwNumberOfBy
浏览 6
提问于2015-01-06
得票数 0
回答已采纳
1
回答
WSARecv钩式地窖
c++
、
sockets
、
encryption
、
hook
、
detours
我给一个朋友写了一个加密包。客户端使用的是ws2_32 recv/send,而服务器使用的是WSARecv/WSASend。 我成功地加密/解密了发送/recv/WSASend,但是WSARecv似乎是不可能的。我正在使用与recv相同的方法,但它似乎不起作用。 int WINAPI MyWSARecv(SOCKET socket, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED
浏览 1
提问于2015-04-21
得票数 0
回答已采纳
3
回答
如何为ReadFileEx()的完成例程提供上下文信息?
windows
、
file-io
、
asynchronous
Win32 ReadFileEx定义为: BOOL WINAPI ReadFileEx( __in HANDLE hFile, __out_opt LPVOID lpBuffer, __in DWORD nNumberOfBytesToRead, __inout LPOVERLAPPED lpOverlapped, __in_opt LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine ); 我正在尝试弄清楚如何使完成例程(最后一个参数)在操作完成时调用动态函数指针。似乎没有一种方法可以传
浏览 0
提问于2009-06-02
得票数 3
回答已采纳
1
回答
GetQueuedCompletionStatus -如何在没有任何套接字结构的情况下读取客户端消息
c
、
windows
、
winsock2
、
iocp
我正在尝试在Windows中使用C语言学习IOCP。其想法是拥有一个具有处理客户端消息的线程的非阻塞服务器。 我现在知道如何接受客户了,等等。 但是我仍然不明白如何从GetQueuedCompletionStatus()中读取每个客户端的消息并打印它们。 我在网上看到,所有人都使用LPOVERLAPPED参数传递一个结构来引用GetQueuedCompletionStatus(),但是没有任何结构怎么做呢? 有没有人能告诉我这是不是可能的,并展示一个小例子?
浏览 13
提问于2021-05-28
得票数 0
1
回答
CancelIoEx :函数指针类型定义
c++
、
function
、
pointers
、
typedef
、
cancelio
下面的代码是从MS Async Filter复制的。假设下面的代码调用的是CancelIo或CancelIoEx。我不知道CancelIoEx是在哪里被调用的。假设typedef表示CancelIoEx,但从未被调用。这行bResult = (pfnCancelIoEx)(m_hFile, NULL);到底在做什么? // Cancel: Cancels pending I/O requests. HRESULT CFileStream::Cancel() { CAutoLock lock(&m_CritSec); // Use CancelIoEx if avail
浏览 0
提问于2013-04-20
得票数 2
回答已采纳
2
回答
程序员思考过程:确定在Windows中使用ReadFile时要读取的最大字节数
c++
、
windows
、
api
我需要调用Windows的ReadFile函数: BOOL WINAPI ReadFile( _In_ HANDLE hFile, _Out_ LPVOID lpBuffer, _In_ DWORD nNumberOfBytesToRead, _Out_opt_ LPDWORD lpNumberOfBytesRead, _Inout_opt_ LPOVERLAPPED lpOverlapped ); 我感兴趣的是第三个论点: nNumberOfBytesToRead in 要读取的
浏览 3
提问于2016-01-28
得票数 6
1
回答
通过lambda在void指针处赋值
c++
、
visual-c++
、
googletest
、
googlemock
在我的gtest中,我想填充内容"outBuffer": stDriverNotify* notifyData = new stDriverNotify; notifyData->NotifyType = eDriverNotify_InputRedirect; EXPECT_CALL(*hidDeviceMock_, DeviceControl(_, _, _, _, _, _, _)) .WillRepeatedly(Invoke([&](ULONG control, PVOID inBuffer, ULONG inSize, PVOI
浏览 7
提问于2019-09-16
得票数 0
1
回答
如何为ReadFile的LPVOID缓冲区赋值
c++
、
pointers
、
winapi
、
buffer
、
easyhook
我正在开发一个win32应用编程接口钩子程序。根据我的理解,当程序为特定文件调用ReadFile时,该文件的内容将被复制到lpBuffer(参见下面的定义)。 ReadFile定义: BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped ); 现在,我的目标是修改这个lpBuffer,并用我提供的内容填充它!我正在使用Easy
浏览 2
提问于2020-12-23
得票数 0
1
回答
如何在发送前更改数据包上的字节
delphi
如何在发送前修改数据包中的某些字节?我正在做这段代码: function WSASendHookProc(s: TSocket; var lpBuffers; dwBufferCount: DWORD; var lpNumberOfBytesSent: DWORD; dwFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall; var DataBuffer : PChar; DataS
浏览 20
提问于2019-03-12
得票数 0
2
回答
LPCVOID指针的C++读取值
c++
、
kernel32
、
detours
我在kernel32.dll的Writefile命令上有一个钩子。钩子正在被触发,但是,我无法读取缓冲区内容。 目标: Msgbox显示被发送到com端口的缓冲区的内容。 问题: msgbox正在打印一个看似随机的数字序列,我假设它是内存地址,而不是lpBuffer的实际内容。 C++代码: void hookedFunc(HANDLE hfile, LPCVOID * lpBuffer, DWORD nNumberBytesToWrite, LPWORD lpNumberofBytesWritten, LPOVERLAPPED lpOverlapped) { char *pStri
浏览 0
提问于2016-10-15
得票数 0
回答已采纳
2
回答
如何在大型稀疏文件上创建快速高效的filestream
c#
、
file-io
、
filestream
、
sparse-matrix
我有一个应用程序,它可以在多个段中写入大型文件。我使用FileStream.Seek来定位每个线缆。当我在稀疏文件中的一个较深的位置调用FileStream.Write时,写触发了对前面所有字节的“回填”操作(写0),这很慢。 是否有更有效的方法来处理这种情况? 下面的代码演示了这个问题。在我的机器上,初始写大约需要370 MS。 public void WriteToStream() { DateTime dt; using (FileStream fs = File.Create("C:\\testfile.file"))
浏览 1
提问于2013-07-23
得票数 11
回答已采纳
3
回答
将结构传递给C++中的函数
c
、
windows
、
winapi
、
visual-c++
、
file
我有一个结构: PROCESSENTRY32 pe32; 我想把这个结构传递给一个函数。该函数将创建一个文件,并将结构中的数据写入该文件。函数的名称是takeinput()。我将结构传递给函数: errflag = takeinput (&pe32); 在takeinput(PROCESSENTRY32 *pe31)中,我使用createfile()创建了一个D:\File.txt文件。现在,我必须将日期从写入file.txt。我正在使用: WriteFile( hFile, // open file handle
浏览 1
提问于2011-01-10
得票数 0
回答已采纳
1
回答
如何使用GiB()传输大于2,147,483,646字节(~2 GiB)的文件?
sockets
、
winapi
、
visual-c++
、
transmitfile
引用自 使用对TransmitFile函数的单个调用可以传输的最大字节数为2,147,483,646,32位整数减去1的最大值。在单个调用中发送的最大字节数包括在lpTransmitBuffers参数指向的文件数据之前或之后发送的任何数据,再加上nNumberOfBytesToWrite参数中为要发送的文件数据长度指定的值。如果应用程序需要传输大于2,147,483,646字节的文件,则可以使用对TransmitFile函数的多次调用,每次调用传输的字节不超过2,147,483,646字节。对于大于2,147,483,646字节的文件,将nNumberOfBytesToWrite参数设置为零
浏览 5
提问于2013-08-14
得票数 4
回答已采纳
1
回答
为什么超时参数在GetAddrInfoExW()中不起作用?
winapi
当我试图打电话: timeval timeout{ 0, 999 }; ::GetAddrInfoExW(L"my_name", L"", NS_DNS, nullptr, nullptr, &pResult, &timeout, nullptr, nullptr, nullptr); 我得到了10022个“无效对角线”。 但是,如果我将"&timeout“替换为"nullptr",则得到0 (OK)。 为什么超时会导致EINVAL错误? 定义了UNICODE宏,我的系统是Windows 10。
浏览 9
提问于2022-11-07
得票数 0
回答已采纳
1
回答
在随机访问模式C++中访问原始磁盘
c++
、
winapi
、
ioctl
现在,我已经熟悉了DeviceIoControl (ioctl)进程,一次可以从磁盘读取512字节。 我从.\PhysicalDrive的列表中创建一个句柄,并通过IOCTL_STORAGE_QUERY_PROPERTY命令识别它。然后处理所需的数据设备。 此时,我可以通过创建一个循环,每次使用此代码(Qt C++环境)推进读取区域1扇区,从而逐步读取它。 #include <minwindef.h> #include <devioctl.h> #include <ntdddisk.h> #include <ntddscsi.h> #incl
浏览 23
提问于2016-12-27
得票数 0
回答已采纳
1
回答
我不知道为什么我的IOCP的numberOfConcurrentThreads参数不起作用
multithreading
、
iocp
我已经阅读了下面的材料并测试了一些代码。Does IOCP creates its own threads? 我的代码如下: #include <functional> #include <stdio.h> #include <iostream> #include <crtdbg.h> #include <conio.h> #include <array> #include <unordered_map> using namespace std; namespace IOCP_test { stru
浏览 62
提问于2021-11-22
得票数 0
2
回答
AcceptEx检索远程连接ip的钩子
delphi
、
winsock
我在勾引AcceptEx。如何从套接字中检索远程连接ip?因为getpeername没有显示正确的ip。 function GetRemoteSocketAddress ( s : TSocket ) : String; var Addr : TSockAddrIn; Size: integer; begin Size := sizeof(Addr); getpeername(s, Addr, Size); Result := inet_ntoa(Addr.sin_addr); end; 此代码适用于其他APIS,如Send、Connect
浏览 10
提问于2022-05-04
得票数 0
1
回答
在WriteFile内核32.dll上检测到PInvokeStackImbalance
c#
、
pinvoke
、
kernel32
、
writefile
在我从Framework2迁移到Framework4之后,我在运行WriteFile函数时得到一个错误。 [DllImport("kernel32.dll")] public static extern bool WriteFile(SafeHandle hFile, byte[] lpBuffer, uint nNumberOfBytesToWrite, out uint lpNumberOfBytesWritten, long lpOverlapped); 解
浏览 1
提问于2011-06-29
得票数 0
1
回答
停止后恢复完成端口通知
c++
、
windows
、
asynchronous
、
winapi
、
overlapped-io
在的lpOverlapped参数的MSDN文档中说,应用程序可以通过设置OVERLAPPED结构的hEvent成员的低位来阻止完成端口通知。但是,是否可以在通知停止后恢复通知? 我需要使用它来监视网络文件夹的更改: 当GetQueuedCompletionStatus返回FALSE,GetLastError()返回ERROR_NETNAME_DELETED时,我这样做(有效): di->Overlapped.hEvent = CreateEvent( NULL, FALSE, FALSE, di->lpszDirName ); reinterpret_cast<uintptr
浏览 13
提问于2019-01-27
得票数 2
1
回答
如何以编程方式扩展卷
c
、
windows
、
winapi
、
ntfs
我的要求是通过程序扩展驱动器的容量。当我在IOCTL_DISK_GROW_PARTITION中使用DeviceIO对其进行扩展时,磁盘管理显示了新修改的大小,而这台PC (我的计算机)中的驱动器大小保持不变。 BOOL DeviceIoControl( (HANDLE) hDevice, // handle to device IOCTL_DISK_GROW_PARTITION, // dwIoControlCode (LPVOID) lpInBuffer, // input buffer (DWO
浏览 3
提问于2017-05-22
得票数 5
回答已采纳
2
回答
用GetQueuedCompletionStatusEx去排队多个完成
c++
、
winapi
我正在尝试使用从I/O完成端口(IOCP)中排除多个完成。 void GetPackets() { OVERLAPPED_ENTRY pEntries; ULONG NumEntries; if (!GetQueuedCompletionStatusEx(PointIOCP, &pEntries, PENDING_RECVS, &NumEntries, 0, false)) { printf("Get Queued Completion Status - Point Error: %i\n", GetLastError()
浏览 27
提问于2019-12-04
得票数 0
回答已采纳
1
回答
设备驱动程序: Windows ReadFile函数超时
c++
、
windows
、
timeout
、
device-driver
、
readfile
我使用的设备驱动程序偶尔会错过来自硬件的中断。 要从设备中读取数据,我使用以下函数 BOOL WINAPI ReadFile( __in HANDLE hFile, __out LPVOID lpBuffer, __in DWORD nNumberOfBytesToRead, __out_opt LPDWORD lpNumberOfBytesRead, __inout_opt LPOVERLAPPED lpOverlapped ); 当设备驱动程序未命中中断时,此函数将永远停止。这会导致程序停止,必须
浏览 0
提问于2011-10-31
得票数 2
回答已采纳
2
回答
IOCP多套接字完成同一容器中的端口
c++
、
windows
、
io
、
winsock
、
iocp
在过去的几天里,我一直在思考如何解决我面临的一个问题,我试图研究这个话题,但我真的不知道我能做什么。 我在同一个结构中有两个套接字,这两个套接字都有相同的完成端口。问题是,它们都使用不同的协议。有没有办法让我找出哪个套接字被触发了?他们的名字叫game_socket和client_socket 示例代码应该是这样的: while (true) { error = GetQueuedCompletionStatus(CompletionPort, &BytesTransfered, (PULONG_PTR)&Key, &lpOverlapped, 0); srvc = C
浏览 5
提问于2012-09-03
得票数 0
回答已采纳
1
回答
使用js,如何从Windows ReadFile检索输出?
javascript
、
firefox
、
jsctypes
我正在使用(虽然对lpBuffer -> char.ptr不太确定) let readFile = kernel32.declare( "ReadFile", ctypes.winapi_abi, ctypes.int32_t, //bool // return type: 1 indicates success, 0 failure ctypes.voidptr_t, // in: hObject ctypes.char.ptr, // out: lpBuffer ctypes.uint32_t,
浏览 5
提问于2016-03-16
得票数 1
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
热门
标签
更多标签
云服务器
ICP备案
实时音视频
即时通信 IM
对象存储
活动推荐
运营活动
广告
关闭
领券