/* Consumer API - dat_extension_op()
*
- * Handle == IA, EP, EVD, etc
+ * Handle == IA, EP, EVD, etc
* !Handle == direct extension operation to provider without device open
* provider name supplied for linkage to library
*
IN DAT_EXTENDED_OP ext_op, IN ...)
{
DAT_RETURN status;
- DAT_IA_HANDLE dapl_handle;
+ DAT_IA_HANDLE dapl_handle = handle;
va_list args;
dat_os_dbg_print(DAT_OS_DBG_TYPE_CONSUMER_API,
" dat_extension_op: (handle %p, op %d) called\n",
handle, ext_op);
- /* If not IA handle then just passthrough */
- if (dats_get_ia_handle(handle, &dapl_handle) != DAT_SUCCESS)
- dapl_handle = handle;
+ /* only convert if ia_handle vector */
+ if (handle && dats_is_ia_handle(handle)) {
+ if (dats_get_ia_handle(handle, &dapl_handle))
+ return DAT_ERROR(DAT_INVALID_HANDLE,
+ DAT_INVALID_HANDLE1);
+ }
dat_os_dbg_print(DAT_OS_DBG_TYPE_CONSUMER_API,
" dat_extension_op: dapl_handle %p \n", handle);