Articles of networking

如何从Microsoft-Windows-NDIS-PacketCapture提供程序使用实时ETW事件?

更大的问题是如何使用实时ETWnetworking堆栈事件,但我对Microsoft-Windows-NDIS-PacketCapture提供者特别感兴趣。 所有其他networking堆栈提供程序部分工作,但NDIS-PacketCapture(NDIS-PC)根本不工作,所以这可能是我可以问的最简单的问题。 我使用下面的代码作为基础,修改很less,它实时工作: http : //msdn.microsoft.com/en-us/library/windows/desktop/ee441325(v=vs.85)的.aspx 我所做的更改是: 在做任何事情之前,调用StartTrace启动NDIS-PC会话。 在属性struct EVENT_TRACE_PROPERTIES中,设置LogFileMode = EVENT_TRACE_REAL_TIME_MODE,LogFileNameOffset = 0,Wnode.Guid =我制作的随机GUID。 调用状态= EnableTraceEx2(hSession,&Current_Guid,EVENT_CONTROL_CODE_ENABLE_PROVIDER,TRACE_LEVEL_VERBOSE,0,0,0,NULL); 其中hSession是使用StartTrace和Current_Guid开始的会话 {0x2ED6006E,0x4729,0x4609,{0xB4,0x23,0x3E,0xE7,0xBC,0xD6,0x78,0xEF}}; 然后用LoggerName =一些宽string调用OpenTrace,LogFileName = NULL,LogFileMode = EVENT_TRACE_REAL_TIME_MODE; 最后在上面刚刚打开的跟踪句柄上调用ProcessTrace。 同样,将所有其他内容与MSDN示例中提供的相同 使用相同的代码与提供程序的单个更改,如微软Windows Winsock AFD或微软Windows TCPIP 让我调用我定义的loggingcallback(但是,我仍然无法检索属性,但我不会进一步深入,但要保持这个概率尽可能简单)。 当我使用NDIS-PC时,我得到0callback。 我已经尝试使用ControlTrace手动刷新没有任何成功。 我也试着定义“EventCallback”,而不是“EventRecordCallback”,没有成功。 我查看了这个过程中涉及到的所有数据结构,并在每个提供者之间进行了比较,他们看起来都是正确的。 我查看了函数和返回数据结构的所有返回值,而且他们在我尝试的提供者之间看起来也是一样的。 我已经通过调用“logman”My Trace Session 04“-ets”来查看会话属性,它对于NDIS-PC和TCPIP看起来是相同的: C:\ windows \ system32> logman“我的跟踪会话04”-ets 名称:我的跟踪会议04状态: 运行根path:%systemdrive%\ PerfLogs \ Admin Segment: closures时间表:开 名称:我的跟踪会话04 \我的跟踪会话04types: […]

在Windows上的Python 3.6中的原始套接字数据包嗅探器

我试图嗅探数据包,但我得到奇怪的输出,我不明白原因。 所以这是我的代码, 请帮助我 (我在Windows 8.1上使用Python 3.6) 码: import socket import struct import binascii import textwrap def main(): # Get host host = socket.gethostbyname(socket.gethostname()) print('IP: {}'.format(host)) # Create a raw socket and bind it conn = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP) conn.bind((host, 0)) # Include IP headers conn.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) # Enable promiscuous mode conn.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) while True: […]

“服务器无法通过HTTP发送HTTP标头之后设置状态”而不是https

我最近将一个.net Web服务从Windows Server 2003迁移到Windows Server 2008 R2。 当试图访问Web服务帮助页面时,浏览器将等待服务器请求,但什么也没有发生。 请求只是挂起,我永远不会得到一个超时或任何其他状态代码。 当检查服务器上的HTTPERR日志时,我看到请求被取消,没有状态码。 (见下文) 2015-06-02 15:20:49 11.127.2.128 50755 11.113.4.14 56272 HTTP/1.1 GET /HumanResourceServices/1_0_0/help/ – 2 Request_Cancelled HumanResourceServices 我审查了这个问题HTTPERR日志:Request_Cancelled(同时解决WCF服务) ,并做了build议的日志logging。 生成的svc日志文件,但它保持在0字节大小,永远不会改变。 我检查了在IIS中的工作进程,它得到了一个网站的请求,但我没有看到请求,当我去“查看当前请求”。 看起来像我的请求永远不会得到处理,取消和服务器永远不会回应状态码。 为了使事情更有趣,如果我通过https访问同一网站,它的工作原理! 所以这只是当我尝试通过HTTP访问时发生。 任何意见或build议,进一步解决这个问题是非常感谢。 更新 – 我能够让日志工作。 由于应用程序抛出exception,请求被取消。 错误消息是“服务器在发送HTTP标头之后无法设置状态”。 有没有人有任何想法,为什么我会通过http得到这个错误,但不是通过https? 另外请注意,这只发生在新的Windows 2008 R2服务器上。 我们的旧服务器Windows Server 2003(IIS 6.0)没有这个问题。 谢谢

Windows:如何获得相机支持的决议?

所以要获取摄像机列表并让用户select一个(C ++,Boost,dshow,windows),我使用这样的代码: #include "StdAfx.h" #include "list.h" #include <windows.h> #include <dshow.h> #include <boost/lexical_cast.hpp> HRESULT CamerasList::EnumerateDevices( REFGUID category, IEnumMoniker **ppEnum ) { // Create the System Device Enumerator. ICreateDevEnum *pDevEnum; HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pDevEnum)); if (SUCCEEDED(hr)) { // Create an enumerator for the category. hr = pDevEnum->CreateClassEnumerator(category, ppEnum, 0); if (hr == S_FALSE) { […]

FileExists超时

可能重复: 更快的DirectoryExistsfunction? 我想检查networking驱动器上是否存在某个文件。 但如果驱动器断开连接,则FileExists速度太慢。 我怎样才能检查一下超时? 欢迎举例。