> For the complete documentation index, see [llms.txt](https://sandbox-docs.verifone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sandbox-docs.verifone.com/s-adk-5.1-programmers-guide/readme/modules/group__vfiipc/namespacevfiipc.md).

# vfiipc

[Data Structures](#nested-classes) | [Typedefs](#typedef-members) | [Enumerations](#enum-members) | [Functions](#func-members)

|                 |                                                                                                                    |
| --------------- | ------------------------------------------------------------------------------------------------------------------ |
| Data Structures |                                                                                                                    |
| class           | [IPC](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_i_p_c.md)           |
| class           | [JSObject](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_j_s_object.md) |
| class           | [Pipe](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_pipe.md)           |
| class           | [TCP](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_t_c_p.md)           |
| class           | [TLS](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_t_l_s.md)           |

|                 |                                                                                                                                                                                                                                                                                                                       |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Typedefs        |                                                                                                                                                                                                                                                                                                                       |
| typedef void(\* | [ipcCallback](#ad81e4165dd387a02aacdb8a57c4fdd4f)) (void \*data, [IPC](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_i_p_c.md) \*ipc)                                                                                                                                      |
| typedef void(\* | [NotifyCallback](#ab377f9e2a200c707731b1984626d70c9)) (void \*data, const std::string \&from, const std::string \&to, const std::string \&notification\_id, const [vfiipc::JSObject](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_j_s_object.md) \&param, unsigned flags) |
| typedef void(\* | [NotifyObserver](#a74917bd8d91bec1ff98234834e531071)) (void \*data, const std::string \&from, const std::string \&to, const std::string \&notification\_id, unsigned flags)                                                                                                                                           |

|              |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Enumerations |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| enum         | <p><a href="#a7eda24f6e23d0f36491cc949c16ac4c3">NotifyResult</a> {<br>  <a href="#a7eda24f6e23d0f36491cc949c16ac4c3ad787ef779aa8d69677c23222002f0bed">NOTIFY\_OK</a> =0, <a href="#a7eda24f6e23d0f36491cc949c16ac4c3a3332b9f23fcc102341e551348f714940">NOTIFY\_ERR\_SERVER</a> =-1, <a href="#a7eda24f6e23d0f36491cc949c16ac4c3a91002612e8cdf73185b9c15f283f4334">NOTIFY\_ERR\_APP\_ID</a> =-2, <a href="#a7eda24f6e23d0f36491cc949c16ac4c3acc5931c8ff064376a30c0bf608775174">NOTIFY\_ERR\_PERMISSION</a> =-3,<br>  <a href="#a7eda24f6e23d0f36491cc949c16ac4c3a9d00b7fe7320736555c91922fe04b8d3">NOTIFY\_ERR\_CONFIG\_FILE</a> =-4, <a href="#a7eda24f6e23d0f36491cc949c16ac4c3a04b9ff1a6a62d1ebbdf6322081a8a963">NOTIFY\_ERR\_CONFIG\_SYNTAX</a> =-5<br>}</p> |

|                                                                                                                                                                                                                                                                                                                                                                 |                                                                                                                                                                                                                                                                                                         |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Functions                                                                                                                                                                                                                                                                                                                                                       |                                                                                                                                                                                                                                                                                                         |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) void                                                                                                                                          | [ipcSetAppID](#a88455cb389891217791604f188ac0fa5) (const std::string \&app\_id)                                                                                                                                                                                                                         |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) std::string                                                                                                                                   | [ipcGetAppID](#a80d9206c7e76f24c2e2176308dbc3e06) ()                                                                                                                                                                                                                                                    |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3)                                                                                       | [ipcNotify](#a3ad101cda0c973d26791bd8f194d4b80) (const std::string \&to, const std::string \&notification\_id, const [vfiipc::JSObject](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_j_s_object.md) \&param, unsigned flags=0, const std::string \&from="") |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3)                                                                                       | [ipcRegisterNotificationCB](#a625ae82cd0bc99851ccb8a8ffdcaea1e) (const std::string \&notification\_id, [NotifyCallback](#ab377f9e2a200c707731b1984626d70c9) cb, void \*data, int priority=0, const std::string \&to="")                                                                                 |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3)                                                                                       | [ipcUnregisterNotificationCB](#a3fd5ffbe7bd9aa056c2400bd0a01e142) (const std::string \&notification\_id, [NotifyCallback](#ab377f9e2a200c707731b1984626d70c9) cb, void \*data=0, const std::string \&to="")                                                                                             |
| [DEPRECATED](/s-adk-5.1-programmers-guide/readme/files/dir_16ebd1d2d73191fda1ea8e9cfc03e012/dir_8266e5c14dc74e90f33f07ca932afbf0/dir_b923322e571c7bbbdf8ca0235601f24c/dir_a4bd7de3367ab1637f06ad0eeada778b/dir_f7f8126e2ed8b92f6435c9f330cc6acf/libseccmd-comp_8h.md#ac1e8a42306d8e67cb94ca31c3956ee78) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3) | [ipcUnregisterNotificationCB](#a861c0397a3c9754cd574d97e62da4d62) (const std::string \&notification\_id, const std::string \&to="")                                                                                                                                                                     |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3)                                                                                       | [ipcRegisterUnicastError](#a16b6627aaac4d6edab93696292c8b7a6) ([NotifyCallback](#ab377f9e2a200c707731b1984626d70c9) cb, void \*data)                                                                                                                                                                    |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3)                                                                                       | [ipcUnregisterUnicastError](#a1bcfa904cfacfc8687ddca2204b2f778) ([NotifyCallback](#ab377f9e2a200c707731b1984626d70c9) cb, void \*data)                                                                                                                                                                  |
| [DEPRECATED](/s-adk-5.1-programmers-guide/readme/files/dir_16ebd1d2d73191fda1ea8e9cfc03e012/dir_8266e5c14dc74e90f33f07ca932afbf0/dir_b923322e571c7bbbdf8ca0235601f24c/dir_a4bd7de3367ab1637f06ad0eeada778b/dir_f7f8126e2ed8b92f6435c9f330cc6acf/libseccmd-comp_8h.md#ac1e8a42306d8e67cb94ca31c3956ee78) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3) | [ipcUnregisterUnicastError](#a0c523049653bf25c7dfae093f75704c8) ()                                                                                                                                                                                                                                      |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3)                                                                                       | [ipcRegisterObserver](#a5cb6705e4d5e2d94225eac66c760e872) ([NotifyObserver](#a74917bd8d91bec1ff98234834e531071) cb, void \*data)                                                                                                                                                                        |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3)                                                                                       | [ipcUnregisterObserver](#ab259b3fce42df166ecc267066af9b105) ([NotifyObserver](#a74917bd8d91bec1ff98234834e531071) cb, void \*data)                                                                                                                                                                      |
| [DEPRECATED](/s-adk-5.1-programmers-guide/readme/files/dir_16ebd1d2d73191fda1ea8e9cfc03e012/dir_8266e5c14dc74e90f33f07ca932afbf0/dir_b923322e571c7bbbdf8ca0235601f24c/dir_a4bd7de3367ab1637f06ad0eeada778b/dir_f7f8126e2ed8b92f6435c9f330cc6acf/libseccmd-comp_8h.md#ac1e8a42306d8e67cb94ca31c3956ee78) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3) | [ipcUnregisterObserver](#a6c2855f19aa443ef85c42b02d296268b) ()                                                                                                                                                                                                                                          |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3)                                                                                       | [ipcNotificationServer](#a1862bc6c0fe6d07d60c677292cbc9619) ()                                                                                                                                                                                                                                          |
| [DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum [NotifyResult](#a7eda24f6e23d0f36491cc949c16ac4c3)                                                                                       | [ipcNotificationServer](#a7b8f16e995dfe57edad4cd97676a2eae) (const char \*config\_file)                                                                                                                                                                                                                 |

### DetailedDescription <a href="#detailed-description" id="detailed-description"></a>

[IPC](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_i_p_c.md) namespace

### TypedefDocumentation <a href="#typedef-documentation" id="typedef-documentation"></a>

### ipcCallback <a href="#ad81e4165dd387a02aacdb8a57c4fdd4f" id="ad81e4165dd387a02aacdb8a57c4fdd4f"></a>

typedef void(\\\* ipcCallback) (void \\\*data, [IPC](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_i_p_c.md) \\\*ipc)

### NotifyCallback <a href="#ab377f9e2a200c707731b1984626d70c9" id="ab377f9e2a200c707731b1984626d70c9"></a>

typedef void(\\\* NotifyCallback) (void \\\*data, const std::string \&from, const std::string \&to, const std::string ¬ification\_id, const [vfiipc::JSObject](https://github.com/verifoneone/verifone-git-book-adk/tree/ADK5.1_staging/classvfiipc_1_1_j_s_object.md) ¶m, unsigned flags)

Notify callback. The callback gets invoked when a matching notification has been sent.

**Parameters**

\[in] **data** opaque data pointer that was passed by the application when registering the callback. \[in] **from** source application ID \[in] **to** destination application ID that was used to send the notification. This may be used to distinguish the different cases send to application, send to single, send to all. \[in] **notification\_id** notification ID \[in] **param** parameters to send along the notification \[in] **flags** optional flags for future extensions

{% hint style="info" %}
All notification and error callbacks are run in separate threads. These are started on demand and terminate when the callback terminates.
{% endhint %}

### NotifyObserver <a href="#a74917bd8d91bec1ff98234834e531071" id="a74917bd8d91bec1ff98234834e531071"></a>

typedef void(\\\* NotifyObserver) (void \\\*data, const std::string \&from, const std::string \&to, const std::string ¬ification\_id, unsigned flags)

Observer callback, will be called for all delivered notifications. If no receiver has been found the callback is called with an empty *to* parameter.

**Parameters**

\[in] **data** opaque data pointer that was passed by the application when registering the callback. \[in] **from** source application ID \[in] **to** resolved destination application ID \[in] **notification\_id** notification ID \[in] **flags** optional flags for future extensions

{% hint style="info" %}
All observer callbacks are run in separate threads. These are started on demand and terminate when the callback terminates.
{% endhint %}

### EnumerationType Documentation <a href="#enumeration-type-documentation" id="enumeration-type-documentation"></a>

### NotifyResult <a href="#a7eda24f6e23d0f36491cc949c16ac4c3" id="a7eda24f6e23d0f36491cc949c16ac4c3"></a>

enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3)

Notify result code

|                             |                                                                    |
| --------------------------- | ------------------------------------------------------------------ |
| Enumerator                  |                                                                    |
| NOTIFY\_OK                  | No error.                                                          |
| NOTIFY\_ERR\_SERVER         | notification server is not running                                 |
| NOTIFY\_ERR\_APP\_ID        | the application ID has not been set yet, use ipcSetAppID to set it |
| NOTIFY\_ERR\_PERMISSION     | No permission to create the notification pipe                      |
| NOTIFY\_ERR\_CONFIG\_FILE   | The configuration file could not be opened for reading             |
| NOTIFY\_ERR\_CONFIG\_SYNTAX | The configuration file contained invalid input                     |

### FunctionDocumentation <a href="#function-documentation" id="function-documentation"></a>

### ipcGetAppID() <a href="#a80d9206c7e76f24c2e2176308dbc3e06" id="a80d9206c7e76f24c2e2176308dbc3e06"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) std::string vfiipc::ipcGetAppID

read application ID that has been set using ipcSetAppID

#### Returns

application ID

### ipcNotificationServer()\[1/2] <a href="#a1862bc6c0fe6d07d60c677292cbc9619" id="a1862bc6c0fe6d07d60c677292cbc9619"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcNotificationServer

start the notification server. Only one notification server may exist in the system. Normally it is started from the multi application controller.

#### Returns

error code

{% hint style="info" %}
This function only returns in case of error.
{% endhint %}

### ipcNotificationServer()\[2/2] <a href="#a7b8f16e995dfe57edad4cd97676a2eae" id="a7b8f16e995dfe57edad4cd97676a2eae"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcNotificationServer

start the notification server. Only one notification server may exist in the system. Normally it is started from the multi application controller. The config\_file names a configuration file that contains a whitelist of notifications that may be received from external IP addresses and that may be sent to external ones.

**Parameters**

\[in] **config\_file** name of the configuration file. May be NULL in which case it is identical to ipcNotificationServer().

#### Returns

error code

{% hint style="info" %}
This function only returns in case of error.
{% endhint %}

{% hint style="info" %}
If there is a configuration, then the notification server binds to IPADDR\_ANY so that notifications from external IP addresses may be accepted depending on the configuration. If config\_file is NULL or the configuration is empty, then the notification server binds to localhost so that only connects from localhost are supported.
{% endhint %}

{% hint style="info" %}
On Verix connecting from external IP addresses is not supported, *config\_file* is ignored.
{% endhint %}

### ipcNotify() <a href="#a3ad101cda0c973d26791bd8f194d4b80" id="a3ad101cda0c973d26791bd8f194d4b80"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcNotify

Send notification

**Parameters**

\[in] **to** destination application ID or '1' to send notifications to exactly one receiver or '\*' to broadcast to all registered receivers \[in] **notification\_id** notification ID \[in] **param** parameters to send along the notification \[in] **flags** optional flags for future extensions \[in] **from** optional source application ID. If empty the application ID set by ipcSetAppID is used. This parameter is only required if a process needs to impersonate as another application, e.g. the multi app controller may use it to send notifications on behalf of CP apps

#### Returns

error code

#### Examples

[mac\_demo2.cpp](/s-adk-5.1-programmers-guide/readme/examples/mac_demo2_8cpp-example.md#a12), and [pm-demo.cpp](/s-adk-5.1-programmers-guide/readme/examples/pm-demo_8cpp-example.md#a58).

### ipcRegisterNotificationCB() <a href="#a625ae82cd0bc99851ccb8a8ffdcaea1e" id="a625ae82cd0bc99851ccb8a8ffdcaea1e"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcRegisterNotificationCB

Register notification callback. New registrations will overwrite old ones for the same notification ID and destination app ID.

**Parameters**

\[in] **notification\_id** notification ID \[in] **cb** notification callback to be invoked. If NULL the registration will be discarded \[in] **data** opaque data pointer passed on to the callback \[in] **priority** priority of the callback. If several matching callbacks are found and the notification is not sent as a broadcast, then only the callback with the highest priority (highest value) will be called. \[in] **to** optional destination application ID. If empty then the application ID set by ipcSetAppID is used. This parameter is only required if a process needs to impersonate as another application, e.g. the multi app controller may use it to receive notifications on behalf of CP apps

#### Returns

error code

#### Examples

[mac\_demo1.cpp](/s-adk-5.1-programmers-guide/readme/examples/mac_demo1_8cpp-example.md#a15), [mac\_demo2.cpp](/s-adk-5.1-programmers-guide/readme/examples/mac_demo2_8cpp-example.md#a9), and [mac\_demo3.cpp](/s-adk-5.1-programmers-guide/readme/examples/mac_demo3_8cpp-example.md#a5).

### ipcRegisterObserver() <a href="#a5cb6705e4d5e2d94225eac66c760e872" id="a5cb6705e4d5e2d94225eac66c760e872"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcRegisterObserver

register notification observer callback. The callback will be invoked for each notification delivered.

**Parameters**

\[in] **cb** notification callback to be invoked. \[in] **data** opaque data pointer passed on to the callback

#### Returns

error code

### ipcRegisterUnicastError() <a href="#a16b6627aaac4d6edab93696292c8b7a6" id="a16b6627aaac4d6edab93696292c8b7a6"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcRegisterUnicastError

Register error callback. The error callback is invoked if the notification server cannot deliver a unicast notification to any receiver. Broadcast notifications are not considered.

**Parameters**

\[in] **cb** notification callback to be invoked. \[in] **data** opaque data pointer passed on to the callback

#### Returns

error code

{% hint style="info" %}
In case a receiver process terminates there is some risk that the failure to deliver a notification will go unnoticed: If the process terminates after receiving a notification but before sending an error, this error cannot be detected.
{% endhint %}

### ipcSetAppID() <a href="#a88455cb389891217791604f188ac0fa5" id="a88455cb389891217791604f188ac0fa5"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) void vfiipc::ipcSetAppID

application ID that will be used as source address when sending notifications

**Parameters**

\[in] **app\_id** application ID, the app ID should match the application ID used in the manifest.

#### Examples

[mac\_demo1.cpp](/s-adk-5.1-programmers-guide/readme/examples/mac_demo1_8cpp-example.md#a6), [mac\_demo2.cpp](/s-adk-5.1-programmers-guide/readme/examples/mac_demo2_8cpp-example.md#a6), [mac\_demo3.cpp](/s-adk-5.1-programmers-guide/readme/examples/mac_demo3_8cpp-example.md#a4), and [pm-demo.cpp](/s-adk-5.1-programmers-guide/readme/examples/pm-demo_8cpp-example.md#a10).

### ipcUnregisterNotificationCB()\[1/2] <a href="#a861c0397a3c9754cd574d97e62da4d62" id="a861c0397a3c9754cd574d97e62da4d62"></a>

[DEPRECATED](/s-adk-5.1-programmers-guide/readme/files/dir_16ebd1d2d73191fda1ea8e9cfc03e012/dir_8266e5c14dc74e90f33f07ca932afbf0/dir_b923322e571c7bbbdf8ca0235601f24c/dir_a4bd7de3367ab1637f06ad0eeada778b/dir_f7f8126e2ed8b92f6435c9f330cc6acf/libseccmd-comp_8h.md#ac1e8a42306d8e67cb94ca31c3956ee78) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcUnregisterNotificationCB

inline

unregister a notification callback, shortcut for ipcRegisterNotificationCB(notification\_id,0,0,0,to);

**Parameters**

\[in] **notification\_id** notification ID \[in] **to** optional destination application ID. If null then the application ID set by ipcSetAppID is used. This parameter is only required if a process needs to impersonate as another application, e.g. the multi app controller may use it to receive notifications on behalf of CP apps

#### Returns

error code

{% hint style="info" %}
ipcUnregisterNotificationCB cannot be used within a callback to remove the callback itself: A deadlock occurs since it waits for the callback to terminate before removing it.
{% endhint %}

### ipcUnregisterNotificationCB()\[2/2] <a href="#a3fd5ffbe7bd9aa056c2400bd0a01e142" id="a3fd5ffbe7bd9aa056c2400bd0a01e142"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcUnregisterNotificationCB

unregister a notification callback. When the function returns, it is guaranteed, that the callback has terminated and will not be invoked any longer.

**Parameters**

\[in] **notification\_id** notification ID, must match the value passed to ipcRegisterNotificationCB \[in] **cb** notification callback used during registration. If NULL all callbacks registered for the notification ID are discarded. Use with care to not unintentionally discard registrations of other threads or libraries. \[in] **data** opaque data pointer used during registration. If NULL only cb is checked for finding the matching callback function. \[in] **to** optional destination application ID. If empty then the application ID set by ipcSetAppID is used, must match the value passed to ipcRegisterNotificationCB.

#### Returns

error code

{% hint style="info" %}
ipcUnregisterNotificationCB cannot be used within a callback to remove the callback itself: A deadlock occurs since it waits for the callback to terminate before removing it.
{% endhint %}

### ipcUnregisterObserver()\[1/2] <a href="#a6c2855f19aa443ef85c42b02d296268b" id="a6c2855f19aa443ef85c42b02d296268b"></a>

[DEPRECATED](/s-adk-5.1-programmers-guide/readme/files/dir_16ebd1d2d73191fda1ea8e9cfc03e012/dir_8266e5c14dc74e90f33f07ca932afbf0/dir_b923322e571c7bbbdf8ca0235601f24c/dir_a4bd7de3367ab1637f06ad0eeada778b/dir_f7f8126e2ed8b92f6435c9f330cc6acf/libseccmd-comp_8h.md#ac1e8a42306d8e67cb94ca31c3956ee78) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcUnregisterObserver

inline

unregister notification observer callback. When the function returns, it is guaranteed, that the callback has terminated and will not be invoked any longer.

#### Returns

error code

{% hint style="info" %}
ipcUnregisterObserver cannot be used within a callback to remove the callback itself: A deadlock occurs since it waits for the callback to terminate before removing it.
{% endhint %}

### ipcUnregisterObserver()\[2/2] <a href="#ab259b3fce42df166ecc267066af9b105" id="ab259b3fce42df166ecc267066af9b105"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcUnregisterObserver

unregister notification observer callback. When the function returns, it is guaranteed, that the callback has terminated and will not be invoked any longer.

**Parameters**

\[in] **cb** notification callback used during registration. If NULL all registrations will be discarded \[in] **data** opaque data pointer passed used during registration. If NULL only cb is checked for finding the matching callback function.

#### Returns

error code

{% hint style="info" %}
ipcUnregisterObserver cannot be used within a callback to remove the callback itself: A deadlock occurs since it waits for the callback to terminate before removing it.
{% endhint %}

### ipcUnregisterUnicastError()\[1/2] <a href="#a0c523049653bf25c7dfae093f75704c8" id="a0c523049653bf25c7dfae093f75704c8"></a>

[DEPRECATED](/s-adk-5.1-programmers-guide/readme/files/dir_16ebd1d2d73191fda1ea8e9cfc03e012/dir_8266e5c14dc74e90f33f07ca932afbf0/dir_b923322e571c7bbbdf8ca0235601f24c/dir_a4bd7de3367ab1637f06ad0eeada778b/dir_f7f8126e2ed8b92f6435c9f330cc6acf/libseccmd-comp_8h.md#ac1e8a42306d8e67cb94ca31c3956ee78) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcUnregisterUnicastError

inline

unregister an error callback, shortcut for ipcRegisterUnicastError(0,0);

#### Returns

error code

{% hint style="info" %}
ipcUnregisterUnicastError cannot be used within a callback to remove the callback itself: A deadlock occurs since it waits for the callback to terminate before removing it.
{% endhint %}

### ipcUnregisterUnicastError()\[2/2] <a href="#a1bcfa904cfacfc8687ddca2204b2f778" id="a1bcfa904cfacfc8687ddca2204b2f778"></a>

[DllSpec](/s-adk-5.1-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md#ad7c2e1cb200073ed64c64285a5f37231) enum \[NotifyResult]\(#a7eda24f6e23d0f36491cc949c16ac4c3) vfiipc::ipcUnregisterUnicastError

Unregister error callback. When the function returns, it is guaranteed, that the callback has terminated and will not be invoked any longer.

**Parameters**

\[in] **cb** notification callback used during registration. If NULL all callbacks registered for the notification ID are discarded. Use with care to not unintentionally discard registrations of other threads or libraries. \[in] **data** opaque data pointer used during registration. If NULL only cb is checked for finding the matching callback function.

#### Returns

error code

{% hint style="info" %}
In case a receiver process terminates there is some risk that the failure to deliver a notification will go unnoticed: If the process terminates after receiving a notification but before sending an error, this error cannot be detected.
{% endhint %}

{% hint style="info" %}
ipcUnregisterUnicastError cannot be used within a callback to remove the callback itself: A deadlock occurs since it waits for the callback to terminate before removing it.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://sandbox-docs.verifone.com/s-adk-5.1-programmers-guide/readme/modules/group__vfiipc/namespacevfiipc.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
