|
bool | cancel () |
|
virtual void | completion (os_result) |
|
::NTSTATUS __stdcall | ConnectOutput (::IMXF *sink) override final |
|
os_result | ctl (unsigned int ioctl, bool internal=false) |
|
::NTSTATUS __stdcall | DisconnectOutput (::IMXF *sink) override final |
|
template<class receipt_t > |
os_result | ictl (unsigned int ioctl, receipt_t &receipt, bool internal=false) |
|
template<class post_t , class receipt_t > |
os_result | ioctl (const post_t &post, unsigned int ioctl, receipt_t &receipt, bool internal=false) |
|
os_result | ioctl (const void *post, size_t post_size, unsigned int ioctl, void *receipt, size_t receipt_size, bool internal=false) |
| IOCTL IRP http://msdn.microsoft.com/en-us/library/windows/hardware/ff540663(v=vs.85).aspx.
|
|
template<class post_t > |
os_result | octl (const post_t &post, unsigned int ioctl, bool internal=false) |
|
os_result | octl (unsigned int post, unsigned int ioctl, bool internal=false) |
|
os_result | prio (priority priority) |
|
os_result | run () |
| IOKit process thread start.
|
|
os_result | run () |
|
::NTSTATUS __stdcall | SetState (::KSSTATE state) override final |
| Sets the state of the channel.
|
|
os_result | submit (unsigned int ioctl, void *others) |
| submit other IRP
|
|
template<typename circular_t, typename bus_t, typename stream_desc_t>
class dxd::dmus::stream< circular_t, bus_t, stream_desc_t >
dmus::stream
template<typename circular_t , typename bus_t , typename stream_desc_t >
portcls::stream destructor
stop streaming
Following sequence is only needed if stream was not disconnected: stops the streaming-from-device thread,
and waits for its termination while deconstruction.
If destructor waits here, it must reset the event! otherwise the stream process destructor will stall.
closes the endpoint,
stops streaming,
and closes the stream
Reimplemented from dxd::portcls::stream< circular_t, bus_t, stream_desc_t >.
template<typename circular_t , typename bus_t , typename stream_desc_t >
::NTSTATUS __stdcall dxd::dmus::stream< circular_t, bus_t, stream_desc_t >::ConnectOutput |
( |
::IMXF * | sink | ) |
|
|
inlinefinaloverrideprotected |
Checks if this stream is not already connected,
checks if sink is valid,
this is a from-device-to-applicatopn stream: start device reader thread
template<typename circular_t , typename bus_t , typename stream_desc_t >
::NTSTATUS __stdcall dxd::dmus::stream< circular_t, bus_t, stream_desc_t >::DisconnectOutput |
( |
::IMXF * | sink | ) |
|
|
inlinefinaloverrideprotected |
stops the streaming-from-device thread
and waits for its termination to ensure the stream is still connected.
If DisconnectOutput() waits here, it must reset the event! otherwise the stream cannot be deleted.