void Socket::ProcessWrite(void) { #if 0 m_lock->Retain(); { #endif unsigned writtenBytes; systemWrite(m_writeBuf, m_writeBufSize, writtenBytes); (void) ::memcpy(m_writeBuf, m_writeBuf + writtenBytes, m_writeBufSize - writtenBytes); m_writeBufSize -= writtenBytes; #if 0 } m_lock->Release(); #endif }
// 这是我们自己处理IRP_MJ_WRITE的方法 NTSTATUS myWrite( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ) { // 判断是不是我们的设备 if(DeviceObject == gDeviceObject){ // NTSTATUS status = STATUS_SUCCESS; // // 这里做处理,要对IRP中的数据进行相应的保存、解析 // // 直接返回 return status; } // 不要忘了系统过程 return systemWrite(DeviceObject, Irp); }