niFgen_UnlockSession

NI-FGEN C Function

niFgen_UnlockSession

ViStatus niFgen_UnlockSession (ViSession vi, ViBoolean* callerHasLock);

Purpose

Releases a lock that you acquired on an instrument session using the cviniFgen_LockSession function.

Parameters

Input
Name Type Description
vi ViSession Identifies your instrument session. vi is obtained from the niFgen_init or the niFgen_InitWithOptions functions and identifies a particular instrument session.
Output
Name Type Description
callerHasLock ViBoolean* Keeps track of whether you obtain a lock and therefore need to unlock the session.

This parameter serves as a convenience. If you do not want to use this parameter, pass VI_NULL.

Pass the address of a local ViBoolean variable. In the declaration of the local variable, initialize it to VI_FALSE. Pass the address of the same local variable to any other calls you make to the niFgen_LockSession function or the niFgen_UnlockSession function in the same function.

The parameter is an input/output parameter. The niFgen_LockSession function and the niFgen_UnlockSession function each inspect the current value and take the following actions:

  • If the value is VI_TRUE, the niFgen_LockSession function does not lock the session again. If the value is VI_FALSE, the niFgen_LockSession function obtains the lock and sets the value of the parameter to VI_TRUE.
  • If the value is VI_FALSE, the niFgen_UnlockSession function does not attempt to unlock the session. If the value is VI_TRUE, the niFgen_UnlockSession function releases the lock and sets the value of the parameter to VI_FALSE.

Thus, you can, call the niFgen_UnlockSession function at the end of your function without worrying about whether you actually have the lock.

Example:

ViStatus TestFunc (ViSession vi, ViInt32 flags)
{

ViStatus error = VI_SUCCESS;
ViBoolean haveLock = VI_FALSE;

if (flags & BIT_1)
{

viCheckErr(niFgen_LockSession(vi, &haveLock));
viCheckErr( TakeAction1(vi));
if (flags & BIT_2)
{

viCheckErr( niFgen_UnlockSession(vi, &haveLock));
viCheckErr( TakeAction2(vi));
viCheckErr( niFgen_LockSession(vi, &haveLock);

}
if (flags & BIT_3)

viCheckErr( TakeAction3(vi));

}

Error:


/*
At this point, you cannot really be sure that
you have the lock. Fortunately, the haveLock
variable takes care of that for you.
*/
niFgen_UnlockSession(vi, &haveLock);
return error;

}

Return Value

Name Type Description
Status ViStatus Returns the status code of this operation. The status code either indicates success or describes an error or warning condition. You can examine the status code from each call to an NI-FGEN function to determine if an error occurred. To obtain a text description of the status code, call the niFgen_error_message function. To obtain additional information about the error condition, call the niFgen_GetError function. To clear the error information from NI-FGEN, call the niFgen_ClearError function.

The general meaning of the status code is as follows:

Value Meaning
0 Success
Positive Values Warnings
Negative Values Errors