# WindowsDeviceWatcher

<a id="windowsdevicewatcher"></a>

# WindowsDeviceWatcher

```cpp
#include <icy/av/win32/mediafoundation.h>

class WindowsDeviceWatcher
```

[Defined in src/av/include/icy/av/win32/mediafoundation.h:61](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/win32/mediafoundation.h#L61)

> **Inherits:** [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher)

Monitors device add/remove events via IMMNotificationClient (audio) and RegisterDeviceNotification (video).

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`WindowsDeviceWatcher`](#windowsdevicewatcher-1) | `function` | Declared here |
| [`~WindowsDeviceWatcher`](#windowsdevicewatcher-2) | `function` | Declared here |
| [`start`](#start-20) | `function` | Declared here |
| [`stop`](#stop-11) | `function` | Declared here |
| [`_impl`](#_impl-2) | `variable` | Declared here |
| [`_manager`](#_manager-2) | `variable` | Declared here |
| [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher-1) | `function` | Inherited from [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher) |
| [`~DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher-2) | `function` | Inherited from [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher) |
| [`start`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#start-19) | `function` | Inherited from [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher) |
| [`stop`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#stop-10) | `function` | Inherited from [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher) |

## Inherited from [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher-1) `inline` `explicit` |  |
| `function` | [`~DeviceWatcher`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#devicewatcher-2) `virtual` `noexcept` | Defaulted destructor. |
| `function` | [`start`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#start-19) `virtual` `inline` |  |
| `function` | [`stop`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#stop-10) `virtual` `inline` |  |

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`WindowsDeviceWatcher`](#windowsdevicewatcher-1) `explicit` |  |
|  | [`~WindowsDeviceWatcher`](#windowsdevicewatcher-2) `noexcept` `override` |  |
| `bool` | [`start`](#start-20) `virtual` `override` | Begin monitoring via IMMNotificationClient and RegisterDeviceNotification. |
| `void` | [`stop`](#stop-11) `virtual` `override` | Stop monitoring and unregister all device notifications. |

---

<a id="windowsdevicewatcher-1"></a>

### WindowsDeviceWatcher

`explicit`

```cpp
explicit WindowsDeviceWatcher(DeviceManager * manager)
```

[Defined in src/av/include/icy/av/win32/mediafoundation.h:65](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/win32/mediafoundation.h#L65)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `manager` | [`DeviceManager`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceManager.md#devicemanager) * | The [DeviceManager](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceManager.md#devicemanager) whose DevicesChanged signal will be emitted on changes. |

---

<a id="windowsdevicewatcher-2"></a>

### ~WindowsDeviceWatcher

`noexcept` `override`

```cpp
~WindowsDeviceWatcher() noexcept override
```

[Defined in src/av/include/icy/av/win32/mediafoundation.h:66](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/win32/mediafoundation.h#L66)

---

<a id="start-20"></a>

### start

`virtual` `override`

```cpp
virtual bool start() override
```

[Defined in src/av/include/icy/av/win32/mediafoundation.h:70](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/win32/mediafoundation.h#L70)

Begin monitoring via IMMNotificationClient and RegisterDeviceNotification. 
#### Returns
True if monitoring was successfully started.

#### Reimplements

- [`DeviceWatcher::start`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#start-19)

---

<a id="stop-11"></a>

### stop

`virtual` `override`

```cpp
virtual void stop() override
```

[Defined in src/av/include/icy/av/win32/mediafoundation.h:73](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/win32/mediafoundation.h#L73)

Stop monitoring and unregister all device notifications.

#### Reimplements

- [`DeviceWatcher::stop`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceWatcher.md#stop-10)

## Private Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::unique_ptr< Impl >` | [`_impl`](#_impl-2)  |  |
| [`DeviceManager`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceManager.md#devicemanager) * | [`_manager`](#_manager-2)  |  |

---

<a id="_impl-2"></a>

### _impl

```cpp
std::unique_ptr< Impl > _impl
```

[Defined in src/av/include/icy/av/win32/mediafoundation.h:78](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/win32/mediafoundation.h#L78)

---

<a id="_manager-2"></a>

### _manager

```cpp
DeviceManager * _manager
```

Type: [`DeviceManager`](https://auscaster.com/icey/docs/api-reference/icy-av-DeviceManager.md#devicemanager) *

[Defined in src/av/include/icy/av/win32/mediafoundation.h:79](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/win32/mediafoundation.h#L79)
