+                       /** Determines if a packet is currently waiting for the device to read in and process.
+                        *
+                        *  \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or the
+                        *       call will fail.
+                        *
+                        *  \param[in,out] RNDISInterfaceInfo  Pointer to a structure containing an RNDIS Class configuration and state.
+                        *
+                        *  \return Boolean \c true if a packet is waiting to be read in by the host, \c false otherwise.
+                        */
+                       bool RNDIS_Device_IsPacketReceived(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo);
+
+                       /** Retrieves the next pending packet from the device, discarding the remainder of the RNDIS packet header to leave
+                        *  only the packet contents for processing by the device in the nominated buffer.
+                        *
+                        *  \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or the
+                        *       call will fail.
+                        *
+                        *  \param[in,out] RNDISInterfaceInfo  Pointer to a structure containing an RNDIS Class configuration and state.
+                        *  \param[out]    Buffer              Pointer to a buffer where the packer data is to be written to.
+                        *  \param[out]    PacketLength        Pointer to where the length in bytes of the read packet is to be stored.
+                        *
+                        *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
+                        */
+                       uint8_t RNDIS_Device_ReadPacket(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo,
+                                                                                       void* Buffer,
+                                                                                       uint16_t* const PacketLength);
+
+                       /** Sends the given packet to the attached RNDIS device, after adding a RNDIS packet message header.
+                        *
+                        *  \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or the
+                        *       call will fail.
+                        *
+                        *  \param[in,out] RNDISInterfaceInfo  Pointer to a structure containing an RNDIS Class configuration and state.
+                        *  \param[in]     Buffer              Pointer to a buffer where the packer data is to be read from.
+                        *  \param[in]     PacketLength        Length in bytes of the packet to send.
+                        *
+                        *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
+                        */
+                       uint8_t RNDIS_Device_SendPacket(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo,
+                                                                                       void* Buffer,
+                                                                                       const uint16_t PacketLength);
+