Windows驱动程序中Write函数的有关问题

Windows驱动程序中Write函数的问题
开发一个PCI板卡的驱动程序,其中Write函数用于向内存中写数据。函数的代码如下:
NTSTATUS DataCardDevice::Write(KIrp I)
{
KMemory Mem(I.Mdl());
PUCHAR pBuffer=(PUCHAR)Mem.VirtualAddress();
ULONG dwWriteOffset = I.WriteOffset(CURRENT);
ULONG dwWriteSize = I.WriteSize(CURRENT);
Resource0.outb(dwWriteOffset,pBuffer,dwWriteSize/4);
I.Information()=dwWriteSize;
I.PnpComplete(this, status);
return status;
}

编译时出现错误,在代码第五行,粗体部分。错误为error C2440: 'initializing' : cannot convert from 'LARGE_INTEGER' to 'ULONG'

这个查资料说WriteOffset是取得地址偏移量,函数返回值类型是LARGE_INTEGER,若把dwWriteOffset类型改为LARGE_INTEGER,则这个参数又没有办法在outb函数中使用,这个问题该怎么解决呀? 谢谢

------解决方案--------------------
根据错误应该是返回类型和接收类型不匹配。你确认一下函数使用是否正确,如果正确看一下函数的返回值类型,根据需要是否需要做强制类型转换。

希望能够帮到你!
------解决方案--------------------
这样好看些:
LARGE_INTEGER li = I.WriteOffset(CURRENT);
ULONG dwWriteOffset = (ULONG)li.QuadPart;
可能会有数据溢出,你自己注意下