我在驱动中创建了个设备A....申请了个内存赋给一个全局的指针,对于这个设备的读写
全部
Irp->IoStatus.Status = STATUS_SUCCESS;
 
      Irp->IoStatus.Information = 0;     IoCompleteRequest(Irp, IO_NO_INCREMENT);
    
     KdPrint(("XXXX读写"));     return STATUS_SUCCESS;只定义的一个I/O控制码 用来接收应用层传下来的数据。并将这个数据拷贝到全局指针指的内存中。这个驱动还创建了其它一些设备....对于这些设备的读写操作放在了一个线程中来做。测试的时候发现使用这个驱动后产生了内存泄漏,通过查找发现只要我不创建设备A就不会,产生泄漏...但是我查找了半天也没有发现我的内存是在什么时候泄漏的在A设备的申请了内存我需要一直的使用我会在UnLoad中给释放掉。CreateDevice (
IN PDRIVER_OBJECT pDriverObject) 
{
NTSTATUS status;
PDEVICE_OBJECT pDevObj;
PKEYDEVICE_EXTENSION pDevExt;
UNICODE_STRING symLinkName;

//创建设备名称
UNICODE_STRING devName;
RtlInitUnicodeString(&devName,L"\\Device\\FileKeyDevice");

//创建设备
status = IoCreateDevice( pDriverObject,
sizeof(KEYDEVICE_EXTENSION),
&devName,
FILE_DEVICE_UNKNOWN,
0, TRUE,
&pDevObj );
if (!NT_SUCCESS(status))
return status; pDevObj->Flags |= DO_BUFFERED_IO;
pDevExt = (PKEYDEVICE_EXTENSION)pDevObj->DeviceExtension;
pDevExt->pDevice = pDevObj;
pDevExt->ustrDeviceName = devName; RtlInitUnicodeString(&symLinkName,L"\\??\\FileWriteKey");
pDevExt->ustrSymLinkName = symLinkName;
status = IoCreateSymbolicLink( &symLinkName,&devName );
if (!NT_SUCCESS(status)) 
{
IoDeleteDevice( pDevObj );
return status;
}
return STATUS_SUCCESS;
}
而且内存是16K的不断增加...哪位大侠知道可能是什么原因么?
驱动的中创建的线程是是针对设备而言的么???是全局的么(针对所有设备)???