阅读:1111回复:2
驱动程序中C语言得问题!
我在芯片商提供得驱动中发现一个这样得问题,有些疑惑:
PURB是这样定义的:typedef struct _URB { union { struct _URB_HEADER UrbHeader; struct _URB_SELECT_INTERFACE UrbSelectInterface; struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration; struct _URB_PIPE_REQUEST UrbPipeRequest; struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl; struct _URB_GET_FRAME_LENGTH UrbGetFrameLength; struct _URB_SET_FRAME_LENGTH UrbSetFrameLength; struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber; struct _URB_CONTROL_TRANSFER UrbControlTransfer; struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer; struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer; struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest; struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest; struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest; struct _URB_CONTROL_SYNC_FRAME_REQUEST UrbControlSyncFrameRequest; struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest; struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest; struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest; } } URB, *PURB ; 变量urb定义为:PURB urb; 为urb这样赋值的: urb->UrbHeader.Length = (USHORT) sizeof (struct _URB_PIPE_REQUEST); urb->UrbHeader.Function = URB_FUNCTION_RESET_PIPE; urb->UrbPipeRequest.PipeHandle = pipeHandle; 我的问题是:在PURB指向的结构中只是一个联合UNION,就是只有一个存储空间,这样的话,urb->UrbPipeRequest.PipeHandle = pipeHandle这句岂不覆盖掉对urb->UrbHeader的赋值?请高手回答! 谢谢! |
|
|
沙发#
发布于:2004-03-31 08:55
等待中..................................................................................................................
|
|
|
板凳#
发布于:2004-03-31 09:11
我明白了!呵呵!
因为除了 _URB_HEADER结构外,下面的每个结构中都包括一个 _URB_HEADER 结构,这样就把原来定义的header包括进去了! |
|
|