阅读:897回复:3
这两段代码有什么不一样?
第一个:
PDEVICE_EXTENSION pDevExt=(PDEVICE_EXTENSION) pDevObj->DeviceExtension; UCHAR userBuffer; userBuffer=(PUCHAR)pIrp->AssociatedIrp.SystemBuffer; *userBuffer=READ_PORT_UCHAR((PUCHAR)pDevExt->portBase); pIrp->IoStatus.Status=STATUS_SUCCESS; pIrp->IoStatus.Information=1; IoCompleteRequest(pIrp,IO_NO_INCREMENT); return STATUS_SUCCESS; 第二个: NTSTATUS status=STATUS_SUCCESS; PDEVICE_EXTENSION pDevExt=(PDEVICE_EXTENSION)pDevObj->DeviceExtension; PIO_STACK_LOCATION pIrpStack=IoGetCurrentIrpStackLocation(pIrp); ULONG transferSize; PVOID userBuffer; transferSize=pIrpStack->Parameters.Read.Length; userBuffer=pIrp->AssociatedIrp.SystemBuffer; transferSize=(transferSize<8)? transferSize:8; ULONG port[2]={0x01010101,0x10101010}; port[0]=(ULONG)pDevExt->portBase; port[1]=pDevExt->portLength; RtlCopyMemory(userBuffer,(PVOID)port,transferSize); pIrp->IoStatus.Status=status; pIrp->IoStatus.Information=transferSize; IoCompleteRequest(pIrp,IO_NO_INCREMENT); return status; 我是初学者,总觉得这两个实现的功能是一样的。。。 请大侠们指点~~~~~~~~~~~~~ [编辑 - 6/6/04 by modernhill] |
|
沙发#
发布于:2004-06-07 09:46
第一个: 第一肺 只有坐取一 |
|
板凳#
发布于:2004-06-07 11:02
以我的经验来看,PORT ARRAY 是为了让AP 或者FIRMWARE容易知道数据的大小
|
|
地板#
发布于:2004-06-08 21:09
问题是如果我仅仅需要DevExt->PortBase的时候,第二种还有必要吗?还有,第一种写法正确吗?
|
|