memcpy(&SetMessageData.ContiguousBuffer, Buffer, Length);
 
        if ((ErrorCode = RNDIS_SendEncapsulatedCommand(RNDISInterfaceInfo, &SetMessageData,
-                                                      SetMessageData.SetMessage.MessageLength)) != HOST_SENDCONTROL_Successful)
+                                                      (sizeof(RNDIS_Set_Message_t) + Length))) != HOST_SENDCONTROL_Successful)
        {
                return ErrorCode;
        }
 
        *PacketLength = (uint16_t)le32_to_cpu(DeviceMessage.DataLength);
 
-       Pipe_Discard_Stream(DeviceMessage.DataOffset -
+       Pipe_Discard_Stream(le32_to_cpu(DeviceMessage.DataOffset) -
                            (sizeof(RNDIS_Packet_Message_t) - sizeof(RNDIS_Message_Header_t)),
                            NULL);