<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.stridewiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Carriez</id>
	<title>STRIDE Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.stridewiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Carriez"/>
	<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Special:Contributions/Carriez"/>
	<updated>2026-06-13T20:28:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:Test_Script_Perl_Template&amp;diff=8262</id>
		<title>Studio:Test Script Perl Template</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:Test_Script_Perl_Template&amp;diff=8262"/>
		<updated>2008-11-12T23:53:09Z</updated>

		<summary type="html">&lt;p&gt;Carriez: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following sample represents a starting point for perl test scripts.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Source&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: white;&amp;quot; |&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
=nd&lt;br /&gt;
&lt;br /&gt;
Brief summary...&lt;br /&gt;
&lt;br /&gt;
About: Description&lt;br /&gt;
Here is some description text.  It can have text that is *bolded* and _underlined_.&lt;br /&gt;
&lt;br /&gt;
About: Tests&lt;br /&gt;
test case 1 - description of test case 1&lt;br /&gt;
test case 2 - description of test case 2&lt;br /&gt;
etc - more cases...&lt;br /&gt;
&lt;br /&gt;
About: Test Plan&lt;br /&gt;
See &amp;lt;http://project-portal.s2technologies.com/index.php/MyTestPlan&amp;gt;&lt;br /&gt;
&lt;br /&gt;
About: Copyright&lt;br /&gt;
Copyright 2008 S2 Technologies support@s2technologies.com.&lt;br /&gt;
&lt;br /&gt;
=cut&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
use Carp;&lt;br /&gt;
use Win32::TieRegistry(Delimiter=&amp;gt;&amp;quot;/&amp;quot;);&lt;br /&gt;
use File::Spec;&lt;br /&gt;
use Win32::OLE;&lt;br /&gt;
&lt;br /&gt;
Win32::OLE-&amp;gt;Option(Warn =&amp;gt; 3);&lt;br /&gt;
use vars qw( $StrideLibDirectory );&lt;br /&gt;
BEGIN {&lt;br /&gt;
    my $strideDir = $Registry-&amp;gt;{&amp;quot;LMachine/SOFTWARE/S2 Technologies/STRIDE/InstallDir&amp;quot;} || $ENV{&#039;STRIDE_DIR&#039;};&lt;br /&gt;
    $StrideLibDirectory = File::Spec-&amp;gt;catdir($strideDir, &#039;lib&#039;, &#039;perl&#039;);  &lt;br /&gt;
}&lt;br /&gt;
use lib $StrideLibDirectory;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This template uses [http://www.naturaldocs.org NaturalDocs] for documentation, which is a utility for documenting diverse codebases (including perl, c++, javascript). The documentation can be generated for your files by invoking the [http://www.naturaldocs.org/running.html NaturalDocs Utility].  The code above produces the following HTML output:&lt;br /&gt;
&lt;br /&gt;
[[Image:NaturalDocs_Out_1.JPG|frame|none|Example NaturalDocs Output]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Document Templates]]&lt;/div&gt;</summary>
		<author><name>Carriez</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:AutoScript_Functions&amp;diff=6753</id>
		<title>Studio:AutoScript Functions</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:AutoScript_Functions&amp;diff=6753"/>
		<updated>2008-07-31T00:46:49Z</updated>

		<summary type="html">&lt;p&gt;Carriez: /* CallBypassOverrideNonBlocking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This section describes basic functionality for ascript function processing. For ease of understanding, this section describes overall concepts and then describes the precise functionality that STRIDE provides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Interception ==&lt;br /&gt;
A powerful feature of STRIDE is the ability to intercept function calls. While this capability is known to most seasoned STRIDE users, it is not necessarily as known to STRIDE newbies. Comprehension of general STRIDE terms requires a small amount of knowledge as to what function interception means. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
STRIDE is generally used to debug remote hardware (e.g. a cellphone) from a Windows computer running STRIDE. The remote hardware is refered to as the target. The Windows computer is refered &lt;br /&gt;
to as the host. Scripts are used to communicate with STRIDE to pass data between the host and target.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
While there are several models for how to connect to host and target and to transfer data inbetween them, this wiki page is only to describe how perform this connectability via ascript. The following issues have to be resolved to communicate between host and target using two scripts:&lt;br /&gt;
* Which script owns a particular function (e.g. a script on the target)?&lt;br /&gt;
* Which script desires access to the function (e.g. a script on the host)?&lt;br /&gt;
* What is types of data (i.e. parameters, pointers, and return value payloads) will be passed between them?&lt;br /&gt;
* How will the owner and the user communicate to pass payloads?&lt;br /&gt;
&lt;br /&gt;
The how of questions will be answered in the following sections. The why will depend on a particular testing solution to each distinct type of hardware being developed.&lt;br /&gt;
&lt;br /&gt;
== Ownership vs. Usage ==&lt;br /&gt;
STRIDE has the concept of a Function Owner and a Function User. In general STRIDE usage the Owner and User imply the owner of a function on the target and the user of a function on the host. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function User ===&lt;br /&gt;
A [[ascript#ascript.Functions.Item.User|Function User]] may be any script that is not registered as the function owner or function override owner. The [[ascript#ascript.Functions.Item.User|Function User]] may be access via the message as [[ascript#ascript.Functions.Item.User|ascript.Functions.Item.User]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function Owner ===&lt;br /&gt;
The [[ascript#ascript.Functions.Item.Owner|Function Owner]] is the script that has successfully registered itself as the owner of the function (by calling the Register method). A function will only have one registered owner. Calls to register a second owner will result in an exception will be thrown. Ownership can be surrendered by calling the Unregister method (or by exiting the script that registered ownership). The [[ascript#ascript.Functions.Item.Owner|Function Owner]] may be accessed via [[ascript#ascript.Functions.Item.Owner|ascript.Functions.Item.Owner]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Override Owner ===&lt;br /&gt;
The Function Override Owner of a function is the script that successfully registered as the override owner (using the RegisterOverride method). An override owner is used to bypass the registered owner. If a function has an override owner registered, function calls are made to the registered override owner and not the registered owner. This allows the ability to code scripting with the registered owner, but to bypass the registered owner for certain processing for a variety of reasons (i.e. some code not implemented for the registered owner, some exception cases, etc.). It is legal for a script to declare both forms of function ownership. Thus, the same script may be both registered owner and the registered override owner.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Payloads ==&lt;br /&gt;
Payloads are [[Dynamic Objects|Dynamic Objects]] containing data related to a function&#039;s parameters, a function&#039;s return value, or pointer values passed for a function. These payloads are defined as properties for both a [[ascript#ascript.Functions.Item.User|Function User]] and a [[ascript#ascript.Functions.Item.Owner|Function Owner]]. By being part of both user and owner allows their values can be checked for validity in the event that a call did not pass correct data from user to owner (or visa-versa).  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OutPointers ===&lt;br /&gt;
This payload exists only if a function&#039;s payload has at least one pointer that is qualified as OUT or INOUT. In other words, the function returns an object via a pointer through its parameter list.&lt;br /&gt;
&lt;br /&gt;
If this property exists, its members are comprised of all the top-level parameters that are either OUT or INOUT pointers. This can also exist for structured types (structs or unions) that contain members that are OUT or INOUT. It can also exist if a structured type contains a nested structured type that contains members that are OUT or INOUT. In the case of structured type objects appearing in the OutPointers hierarchy, only members that are qualified as OUT or INOUT (or that themselves contain these qualified types) are available.&lt;br /&gt;
&lt;br /&gt;
Upon a function&#039;s return, the OutPointers property of the [[ascript#ascript.Functions.Item.User|Function User]] object (ascript.Functions.Item().User.OutPointers) will reflect (contain) the values set by the [[ascript#ascript.Functions.Item.Owner|Function Owner]] object (ascript.Functions.Item().Owner.OutPointers).&lt;br /&gt;
 &lt;br /&gt;
=== ParameterList ===&lt;br /&gt;
A ParameterList payload only exists if the given [[ascript#ascript.Functions.Item.Owner|Function Owner]] contains one or more parameters. This payload will contain the values of all ParameterList fields at the time the function User called the Owner (on the user side before a call). The ParameterList payload is a [[Dynamic Objects|Dynamic Object]]. This payload will contain all the ParameterList field results after a call (on the owner side after a call). &lt;br /&gt;
&lt;br /&gt;
=== ReturnValue ===&lt;br /&gt;
The ReturnValue Payload only exists if the given [[ascript#ascript.Functions.Item.Owner|Function Owner]] returns a value. Functions returning void will not have this property. The ReturnValue payload is a [[Dynamic Objects|Dynamic Object]]. After a call, the ReturnValue payload will contain the return results (on the owner side after a call).&lt;br /&gt;
&lt;br /&gt;
== Synchronous / Asynchronous Interception ==&lt;br /&gt;
Function calls that are made between a function [[Ascript#Ascript.Functions.Item.Owner|Owner]] and a function [[Ascript#Ascript.Functions.Item.Owner|User]] will be either asynchronous or synchronous.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Asynchronous Calls (non-blocking) ===&lt;br /&gt;
An asynchronous function call is also known as a &amp;quot;non-blocking&amp;quot; call. This is the type of call that occurs for both CallNonBlocking and CallBypassOverrideNonBlocking. &lt;br /&gt;
&lt;br /&gt;
==== CallBypassOverrideNonBlocking ====&lt;br /&gt;
Asynchronously calls the override registered owner of the function (Non-blocking call).&lt;br /&gt;
* Invokes call to registered function owner bypassing the registered override owner (if one exists).&lt;br /&gt;
* If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner.&lt;br /&gt;
* Current values of all fields of the ParameterList property are marshaled to the called function.&lt;br /&gt;
* This method returns to the caller immediately. When the function owner (running in a separate thread) returns, an event is placed in this script&#039;s queue by the STRIDE Runtime. The event (as a polymorphic object exposing Type and Name properties) is retrieved from the queue using [[Events#WaitForEvent|ascript.WaitForEvent()]].&lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
* The object returned from [[Events#WaitForEvent|WaitForEvent()]] in response to CallByPassOverrideNonBlocking() can be:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10&amp;quot; |&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
* The Function User Object corresponding to the function that was called. (Type = &amp;quot;FunctionUser&amp;quot;, Name=&amp;quot;function name&amp;quot;). The object&#039;s ReturnValue property and the OutPointers property (if present) will be populated with the values supplied by the Owner implementation.&lt;br /&gt;
* An [[Error Object|Error Object]] containing information about the error that occurred (Type=&amp;quot;Error&amp;quot;; Name=&amp;quot;error source&amp;quot;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== CallNonBlocking ====&lt;br /&gt;
&lt;br /&gt;
Asynchronously calls the registered owner of the function (Non-blocking call).&lt;br /&gt;
* This call invokes a call to the currently registered owner of the function. &lt;br /&gt;
**If there is a registered owner and there is not a registered override owner, the call is routed to the registered owner.&lt;br /&gt;
**If there is a registered owner and there is also a registered override owner, the call is routed to the registered override owner.&lt;br /&gt;
**If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner.&lt;br /&gt;
* The current values of all fields in the ParameterList property are marshaled to the called function.&lt;br /&gt;
* This method returns to the caller immediately. When the function owner (running in a separate thread) returns, an event is placed in this script&#039;s queue by the STRIDE Runtime. The event (as a polymorphic object exposing Type and Name properties) is retrieved from the queue using ascript.WaitForEvent().&lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
* The object returned from [[Events#WaitForEvent|WaitForEvent()]] in response to CallByPassOverrideNonBlocking() can be:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10&amp;quot; |&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
* The Function User Object corresponding to the function that was called. (Type = &amp;quot;FunctionUser&amp;quot;, Name=&amp;quot;function name&amp;quot;). The object&#039;s ReturnValue property and the OutPointers property (if present) will be populated with the values supplied by the Owner implementation.&lt;br /&gt;
* An [[Error Object|Error Object]] containing information about the error that occurred (Type=&amp;quot;Error&amp;quot;; Name=&amp;quot;error source&amp;quot;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Synchronous Calls (blocking) ===&lt;br /&gt;
A synchronous call is also known as a &amp;quot;blocking&amp;quot; call. Blocking calls a made using the Call or CallBypassOverride methods. These calls are made from the [[Ascript#Ascript.Functions.Item.User|User]]. &lt;br /&gt;
&lt;br /&gt;
==== Call ====&lt;br /&gt;
Synchronously calls the registered owner of the function (Blocking call).&lt;br /&gt;
* All current field values of the ParameterList property are marshaled to the function [[Ascript#Ascript.Functions.Item.Owner|Owner]]. &lt;br /&gt;
* If there is no registered owner or registered override owner, an exception is thrown. &lt;br /&gt;
* If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner. &lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
&lt;br /&gt;
==== CallBypassOverride ====&lt;br /&gt;
Synchronously calls the override registered owner of the function (Blocking call). &lt;br /&gt;
* The call is made to the registered owner of the function bypassing any existing registered override owner. &lt;br /&gt;
* The current values of all fields in the ParameterList property are marshaled to the called function [[Ascript#Ascript.Functions.Item.Owner|Owner]]. &lt;br /&gt;
* If there is no registered owner or registered override owner, an exception is thrown.&lt;br /&gt;
* If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner. &lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]] is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
&lt;br /&gt;
=== Returns ===&lt;br /&gt;
When the callee ([[Ascript#Ascript.Functions.Item.Owner|owner]]) wants to generate a function return, it makes a call to the Return method. This method is used for both synchronous and unsynchronous calls.&lt;/div&gt;</summary>
		<author><name>Carriez</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:AutoScript_Functions&amp;diff=6752</id>
		<title>Studio:AutoScript Functions</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:AutoScript_Functions&amp;diff=6752"/>
		<updated>2008-07-31T00:46:01Z</updated>

		<summary type="html">&lt;p&gt;Carriez: /* CallNonBlocking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This section describes basic functionality for ascript function processing. For ease of understanding, this section describes overall concepts and then describes the precise functionality that STRIDE provides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Interception ==&lt;br /&gt;
A powerful feature of STRIDE is the ability to intercept function calls. While this capability is known to most seasoned STRIDE users, it is not necessarily as known to STRIDE newbies. Comprehension of general STRIDE terms requires a small amount of knowledge as to what function interception means. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
STRIDE is generally used to debug remote hardware (e.g. a cellphone) from a Windows computer running STRIDE. The remote hardware is refered to as the target. The Windows computer is refered &lt;br /&gt;
to as the host. Scripts are used to communicate with STRIDE to pass data between the host and target.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
While there are several models for how to connect to host and target and to transfer data inbetween them, this wiki page is only to describe how perform this connectability via ascript. The following issues have to be resolved to communicate between host and target using two scripts:&lt;br /&gt;
* Which script owns a particular function (e.g. a script on the target)?&lt;br /&gt;
* Which script desires access to the function (e.g. a script on the host)?&lt;br /&gt;
* What is types of data (i.e. parameters, pointers, and return value payloads) will be passed between them?&lt;br /&gt;
* How will the owner and the user communicate to pass payloads?&lt;br /&gt;
&lt;br /&gt;
The how of questions will be answered in the following sections. The why will depend on a particular testing solution to each distinct type of hardware being developed.&lt;br /&gt;
&lt;br /&gt;
== Ownership vs. Usage ==&lt;br /&gt;
STRIDE has the concept of a Function Owner and a Function User. In general STRIDE usage the Owner and User imply the owner of a function on the target and the user of a function on the host. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function User ===&lt;br /&gt;
A [[ascript#ascript.Functions.Item.User|Function User]] may be any script that is not registered as the function owner or function override owner. The [[ascript#ascript.Functions.Item.User|Function User]] may be access via the message as [[ascript#ascript.Functions.Item.User|ascript.Functions.Item.User]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function Owner ===&lt;br /&gt;
The [[ascript#ascript.Functions.Item.Owner|Function Owner]] is the script that has successfully registered itself as the owner of the function (by calling the Register method). A function will only have one registered owner. Calls to register a second owner will result in an exception will be thrown. Ownership can be surrendered by calling the Unregister method (or by exiting the script that registered ownership). The [[ascript#ascript.Functions.Item.Owner|Function Owner]] may be accessed via [[ascript#ascript.Functions.Item.Owner|ascript.Functions.Item.Owner]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Override Owner ===&lt;br /&gt;
The Function Override Owner of a function is the script that successfully registered as the override owner (using the RegisterOverride method). An override owner is used to bypass the registered owner. If a function has an override owner registered, function calls are made to the registered override owner and not the registered owner. This allows the ability to code scripting with the registered owner, but to bypass the registered owner for certain processing for a variety of reasons (i.e. some code not implemented for the registered owner, some exception cases, etc.). It is legal for a script to declare both forms of function ownership. Thus, the same script may be both registered owner and the registered override owner.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Payloads ==&lt;br /&gt;
Payloads are [[Dynamic Objects|Dynamic Objects]] containing data related to a function&#039;s parameters, a function&#039;s return value, or pointer values passed for a function. These payloads are defined as properties for both a [[ascript#ascript.Functions.Item.User|Function User]] and a [[ascript#ascript.Functions.Item.Owner|Function Owner]]. By being part of both user and owner allows their values can be checked for validity in the event that a call did not pass correct data from user to owner (or visa-versa).  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OutPointers ===&lt;br /&gt;
This payload exists only if a function&#039;s payload has at least one pointer that is qualified as OUT or INOUT. In other words, the function returns an object via a pointer through its parameter list.&lt;br /&gt;
&lt;br /&gt;
If this property exists, its members are comprised of all the top-level parameters that are either OUT or INOUT pointers. This can also exist for structured types (structs or unions) that contain members that are OUT or INOUT. It can also exist if a structured type contains a nested structured type that contains members that are OUT or INOUT. In the case of structured type objects appearing in the OutPointers hierarchy, only members that are qualified as OUT or INOUT (or that themselves contain these qualified types) are available.&lt;br /&gt;
&lt;br /&gt;
Upon a function&#039;s return, the OutPointers property of the [[ascript#ascript.Functions.Item.User|Function User]] object (ascript.Functions.Item().User.OutPointers) will reflect (contain) the values set by the [[ascript#ascript.Functions.Item.Owner|Function Owner]] object (ascript.Functions.Item().Owner.OutPointers).&lt;br /&gt;
 &lt;br /&gt;
=== ParameterList ===&lt;br /&gt;
A ParameterList payload only exists if the given [[ascript#ascript.Functions.Item.Owner|Function Owner]] contains one or more parameters. This payload will contain the values of all ParameterList fields at the time the function User called the Owner (on the user side before a call). The ParameterList payload is a [[Dynamic Objects|Dynamic Object]]. This payload will contain all the ParameterList field results after a call (on the owner side after a call). &lt;br /&gt;
&lt;br /&gt;
=== ReturnValue ===&lt;br /&gt;
The ReturnValue Payload only exists if the given [[ascript#ascript.Functions.Item.Owner|Function Owner]] returns a value. Functions returning void will not have this property. The ReturnValue payload is a [[Dynamic Objects|Dynamic Object]]. After a call, the ReturnValue payload will contain the return results (on the owner side after a call).&lt;br /&gt;
&lt;br /&gt;
== Synchronous / Asynchronous Interception ==&lt;br /&gt;
Function calls that are made between a function [[Ascript#Ascript.Functions.Item.Owner|Owner]] and a function [[Ascript#Ascript.Functions.Item.Owner|User]] will be either asynchronous or synchronous.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Asynchronous Calls (non-blocking) ===&lt;br /&gt;
An asynchronous function call is also known as a &amp;quot;non-blocking&amp;quot; call. This is the type of call that occurs for both CallNonBlocking and CallBypassOverrideNonBlocking. &lt;br /&gt;
&lt;br /&gt;
==== CallBypassOverrideNonBlocking ====&lt;br /&gt;
Asynchronously calls the override registered owner of the function (Non-blocking call).&lt;br /&gt;
* Invokes call to registered function owner bypassing the registered override owner (if one exists).&lt;br /&gt;
* If there is no registered owner but there is an override registered owner, the call is routed to the override registered owner.&lt;br /&gt;
* Current values of all fields of the ParameterList property are marshaled to the called function.&lt;br /&gt;
* This method returns to the caller immediately. When the function owner (running in a separate thread) returns, an event is placed in this script&#039;s queue by the STRIDE Runtime. The event (as a polymorphic object exposing Type and Name properties) is retrieved from the queue using [[Events#WaitForEvent|ascript.WaitForEvent()]].&lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
* The object returned from [[Events#WaitForEvent|WaitForEvent()]] in response to CallByPassOverrideNonBlocking() can be:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10&amp;quot; |&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
* The Function User Object corresponding to the function that was called. (Type = &amp;quot;FunctionUser&amp;quot;, Name=&amp;quot;function name&amp;quot;). The object&#039;s ReturnValue property and the OutPointers property (if present) will be populated with the values supplied by the Owner implementation.&lt;br /&gt;
* An [[Error Object|Error Object]] containing information about the error that occurred (Type=&amp;quot;Error&amp;quot;; Name=&amp;quot;error source&amp;quot;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== CallNonBlocking ====&lt;br /&gt;
&lt;br /&gt;
Asynchronously calls the registered owner of the function (Non-blocking call).&lt;br /&gt;
* This call invokes a call to the currently registered owner of the function. &lt;br /&gt;
**If there is a registered owner and there is not a registered override owner, the call is routed to the registered owner.&lt;br /&gt;
**If there is a registered owner and there is also a registered override owner, the call is routed to the registered override owner.&lt;br /&gt;
**If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner.&lt;br /&gt;
* The current values of all fields in the ParameterList property are marshaled to the called function.&lt;br /&gt;
* This method returns to the caller immediately. When the function owner (running in a separate thread) returns, an event is placed in this script&#039;s queue by the STRIDE Runtime. The event (as a polymorphic object exposing Type and Name properties) is retrieved from the queue using ascript.WaitForEvent().&lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
* The object returned from [[Events#WaitForEvent|WaitForEvent()]] in response to CallByPassOverrideNonBlocking() can be:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10&amp;quot; |&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
* The Function User Object corresponding to the function that was called. (Type = &amp;quot;FunctionUser&amp;quot;, Name=&amp;quot;function name&amp;quot;). The object&#039;s ReturnValue property and the OutPointers property (if present) will be populated with the values supplied by the Owner implementation.&lt;br /&gt;
* An [[Error Object|Error Object]] containing information about the error that occurred (Type=&amp;quot;Error&amp;quot;; Name=&amp;quot;error source&amp;quot;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Synchronous Calls (blocking) ===&lt;br /&gt;
A synchronous call is also known as a &amp;quot;blocking&amp;quot; call. Blocking calls a made using the Call or CallBypassOverride methods. These calls are made from the [[Ascript#Ascript.Functions.Item.User|User]]. &lt;br /&gt;
&lt;br /&gt;
==== Call ====&lt;br /&gt;
Synchronously calls the registered owner of the function (Blocking call).&lt;br /&gt;
* All current field values of the ParameterList property are marshaled to the function [[Ascript#Ascript.Functions.Item.Owner|Owner]]. &lt;br /&gt;
* If there is no registered owner or registered override owner, an exception is thrown. &lt;br /&gt;
* If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner. &lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
&lt;br /&gt;
==== CallBypassOverride ====&lt;br /&gt;
Synchronously calls the override registered owner of the function (Blocking call). &lt;br /&gt;
* The call is made to the registered owner of the function bypassing any existing registered override owner. &lt;br /&gt;
* The current values of all fields in the ParameterList property are marshaled to the called function [[Ascript#Ascript.Functions.Item.Owner|Owner]]. &lt;br /&gt;
* If there is no registered owner or registered override owner, an exception is thrown.&lt;br /&gt;
* If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner. &lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]] is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
&lt;br /&gt;
=== Returns ===&lt;br /&gt;
When the callee ([[Ascript#Ascript.Functions.Item.Owner|owner]]) wants to generate a function return, it makes a call to the Return method. This method is used for both synchronous and unsynchronous calls.&lt;/div&gt;</summary>
		<author><name>Carriez</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:AutoScript_Functions&amp;diff=6751</id>
		<title>Studio:AutoScript Functions</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:AutoScript_Functions&amp;diff=6751"/>
		<updated>2008-07-31T00:42:32Z</updated>

		<summary type="html">&lt;p&gt;Carriez: /* Call */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This section describes basic functionality for ascript function processing. For ease of understanding, this section describes overall concepts and then describes the precise functionality that STRIDE provides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Interception ==&lt;br /&gt;
A powerful feature of STRIDE is the ability to intercept function calls. While this capability is known to most seasoned STRIDE users, it is not necessarily as known to STRIDE newbies. Comprehension of general STRIDE terms requires a small amount of knowledge as to what function interception means. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
STRIDE is generally used to debug remote hardware (e.g. a cellphone) from a Windows computer running STRIDE. The remote hardware is refered to as the target. The Windows computer is refered &lt;br /&gt;
to as the host. Scripts are used to communicate with STRIDE to pass data between the host and target.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
While there are several models for how to connect to host and target and to transfer data inbetween them, this wiki page is only to describe how perform this connectability via ascript. The following issues have to be resolved to communicate between host and target using two scripts:&lt;br /&gt;
* Which script owns a particular function (e.g. a script on the target)?&lt;br /&gt;
* Which script desires access to the function (e.g. a script on the host)?&lt;br /&gt;
* What is types of data (i.e. parameters, pointers, and return value payloads) will be passed between them?&lt;br /&gt;
* How will the owner and the user communicate to pass payloads?&lt;br /&gt;
&lt;br /&gt;
The how of questions will be answered in the following sections. The why will depend on a particular testing solution to each distinct type of hardware being developed.&lt;br /&gt;
&lt;br /&gt;
== Ownership vs. Usage ==&lt;br /&gt;
STRIDE has the concept of a Function Owner and a Function User. In general STRIDE usage the Owner and User imply the owner of a function on the target and the user of a function on the host. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function User ===&lt;br /&gt;
A [[ascript#ascript.Functions.Item.User|Function User]] may be any script that is not registered as the function owner or function override owner. The [[ascript#ascript.Functions.Item.User|Function User]] may be access via the message as [[ascript#ascript.Functions.Item.User|ascript.Functions.Item.User]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function Owner ===&lt;br /&gt;
The [[ascript#ascript.Functions.Item.Owner|Function Owner]] is the script that has successfully registered itself as the owner of the function (by calling the Register method). A function will only have one registered owner. Calls to register a second owner will result in an exception will be thrown. Ownership can be surrendered by calling the Unregister method (or by exiting the script that registered ownership). The [[ascript#ascript.Functions.Item.Owner|Function Owner]] may be accessed via [[ascript#ascript.Functions.Item.Owner|ascript.Functions.Item.Owner]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Override Owner ===&lt;br /&gt;
The Function Override Owner of a function is the script that successfully registered as the override owner (using the RegisterOverride method). An override owner is used to bypass the registered owner. If a function has an override owner registered, function calls are made to the registered override owner and not the registered owner. This allows the ability to code scripting with the registered owner, but to bypass the registered owner for certain processing for a variety of reasons (i.e. some code not implemented for the registered owner, some exception cases, etc.). It is legal for a script to declare both forms of function ownership. Thus, the same script may be both registered owner and the registered override owner.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Payloads ==&lt;br /&gt;
Payloads are [[Dynamic Objects|Dynamic Objects]] containing data related to a function&#039;s parameters, a function&#039;s return value, or pointer values passed for a function. These payloads are defined as properties for both a [[ascript#ascript.Functions.Item.User|Function User]] and a [[ascript#ascript.Functions.Item.Owner|Function Owner]]. By being part of both user and owner allows their values can be checked for validity in the event that a call did not pass correct data from user to owner (or visa-versa).  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OutPointers ===&lt;br /&gt;
This payload exists only if a function&#039;s payload has at least one pointer that is qualified as OUT or INOUT. In other words, the function returns an object via a pointer through its parameter list.&lt;br /&gt;
&lt;br /&gt;
If this property exists, its members are comprised of all the top-level parameters that are either OUT or INOUT pointers. This can also exist for structured types (structs or unions) that contain members that are OUT or INOUT. It can also exist if a structured type contains a nested structured type that contains members that are OUT or INOUT. In the case of structured type objects appearing in the OutPointers hierarchy, only members that are qualified as OUT or INOUT (or that themselves contain these qualified types) are available.&lt;br /&gt;
&lt;br /&gt;
Upon a function&#039;s return, the OutPointers property of the [[ascript#ascript.Functions.Item.User|Function User]] object (ascript.Functions.Item().User.OutPointers) will reflect (contain) the values set by the [[ascript#ascript.Functions.Item.Owner|Function Owner]] object (ascript.Functions.Item().Owner.OutPointers).&lt;br /&gt;
 &lt;br /&gt;
=== ParameterList ===&lt;br /&gt;
A ParameterList payload only exists if the given [[ascript#ascript.Functions.Item.Owner|Function Owner]] contains one or more parameters. This payload will contain the values of all ParameterList fields at the time the function User called the Owner (on the user side before a call). The ParameterList payload is a [[Dynamic Objects|Dynamic Object]]. This payload will contain all the ParameterList field results after a call (on the owner side after a call). &lt;br /&gt;
&lt;br /&gt;
=== ReturnValue ===&lt;br /&gt;
The ReturnValue Payload only exists if the given [[ascript#ascript.Functions.Item.Owner|Function Owner]] returns a value. Functions returning void will not have this property. The ReturnValue payload is a [[Dynamic Objects|Dynamic Object]]. After a call, the ReturnValue payload will contain the return results (on the owner side after a call).&lt;br /&gt;
&lt;br /&gt;
== Synchronous / Asynchronous Interception ==&lt;br /&gt;
Function calls that are made between a function [[Ascript#Ascript.Functions.Item.Owner|Owner]] and a function [[Ascript#Ascript.Functions.Item.Owner|User]] will be either asynchronous or synchronous.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Asynchronous Calls (non-blocking) ===&lt;br /&gt;
An asynchronous function call is also known as a &amp;quot;non-blocking&amp;quot; call. This is the type of call that occurs for both CallNonBlocking and CallBypassOverrideNonBlocking. &lt;br /&gt;
&lt;br /&gt;
==== CallBypassOverrideNonBlocking ====&lt;br /&gt;
Asynchronously calls the override registered owner of the function (Non-blocking call).&lt;br /&gt;
* Invokes call to registered function owner bypassing the registered override owner (if one exists).&lt;br /&gt;
* If there is no registered owner but there is an override registered owner, the call is routed to the override registered owner.&lt;br /&gt;
* Current values of all fields of the ParameterList property are marshaled to the called function.&lt;br /&gt;
* This method returns to the caller immediately. When the function owner (running in a separate thread) returns, an event is placed in this script&#039;s queue by the STRIDE Runtime. The event (as a polymorphic object exposing Type and Name properties) is retrieved from the queue using [[Events#WaitForEvent|ascript.WaitForEvent()]].&lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
* The object returned from [[Events#WaitForEvent|WaitForEvent()]] in response to CallByPassOverrideNonBlocking() can be:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10&amp;quot; |&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
* The Function User Object corresponding to the function that was called. (Type = &amp;quot;FunctionUser&amp;quot;, Name=&amp;quot;function name&amp;quot;). The object&#039;s ReturnValue property and the OutPointers property (if present) will be populated with the values supplied by the Owner implementation.&lt;br /&gt;
* An [[Error Object|Error Object]] containing information about the error that occurred (Type=&amp;quot;Error&amp;quot;; Name=&amp;quot;error source&amp;quot;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== CallNonBlocking ====&lt;br /&gt;
&lt;br /&gt;
Asynchronously calls the registered owner of the function (Non-blocking call).&lt;br /&gt;
* This call invokes a call to the currently registered owner of the function. &lt;br /&gt;
**If there is a registered owner and there is not an override registered owner, the call is routed to the registered owner.&lt;br /&gt;
**If there is a registered owner and there is also an override registered owner, the call is routed to the override registered owner.&lt;br /&gt;
**If there is no registered owner but there is an override registered owner, the call is routed to the override registered owner.&lt;br /&gt;
* The current values of all fields in the ParameterList property are marshaled to the called function.&lt;br /&gt;
* This method returns to the caller immediately. When the function owner (running in a separate thread) returns, an event is placed in this script&#039;s queue by the STRIDE Runtime. The event (as a polymorphic object exposing Type and Name properties) is retrieved from the queue using ascript.WaitForEvent().&lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
* The object returned from [[Events#WaitForEvent|WaitForEvent()]] in response to CallByPassOverrideNonBlocking() can be:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10&amp;quot; |&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
* The Function User Object corresponding to the function that was called. (Type = &amp;quot;FunctionUser&amp;quot;, Name=&amp;quot;function name&amp;quot;). The object&#039;s ReturnValue property and the OutPointers property (if present) will be populated with the values supplied by the Owner implementation.&lt;br /&gt;
* An [[Error Object|Error Object]] containing information about the error that occurred (Type=&amp;quot;Error&amp;quot;; Name=&amp;quot;error source&amp;quot;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Synchronous Calls (blocking) ===&lt;br /&gt;
A synchronous call is also known as a &amp;quot;blocking&amp;quot; call. Blocking calls a made using the Call or CallBypassOverride methods. These calls are made from the [[Ascript#Ascript.Functions.Item.User|User]]. &lt;br /&gt;
&lt;br /&gt;
==== Call ====&lt;br /&gt;
Synchronously calls the registered owner of the function (Blocking call).&lt;br /&gt;
* All current field values of the ParameterList property are marshaled to the function [[Ascript#Ascript.Functions.Item.Owner|Owner]]. &lt;br /&gt;
* If there is no registered owner or registered override owner, an exception is thrown. &lt;br /&gt;
* If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner. &lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
&lt;br /&gt;
==== CallBypassOverride ====&lt;br /&gt;
Synchronously calls the override registered owner of the function (Blocking call). &lt;br /&gt;
* The call is made to the registered owner of the function bypassing any existing registered override owner. &lt;br /&gt;
* The current values of all fields in the ParameterList property are marshaled to the called function [[Ascript#Ascript.Functions.Item.Owner|Owner]]. &lt;br /&gt;
* If there is no registered owner or registered override owner, an exception is thrown.&lt;br /&gt;
* If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner. &lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]] is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
&lt;br /&gt;
=== Returns ===&lt;br /&gt;
When the callee ([[Ascript#Ascript.Functions.Item.Owner|owner]]) wants to generate a function return, it makes a call to the Return method. This method is used for both synchronous and unsynchronous calls.&lt;/div&gt;</summary>
		<author><name>Carriez</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:AutoScript&amp;diff=6744</id>
		<title>Studio:AutoScript</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:AutoScript&amp;diff=6744"/>
		<updated>2008-07-31T00:14:58Z</updated>

		<summary type="html">&lt;p&gt;Carriez: /* ascript.Functions.Item.Owner */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
= Introduction&amp;amp;nbsp;  =&lt;br /&gt;
&lt;br /&gt;
Ascript is the definitive hierarchy of methods, objects, and properties provided by Autosense. While Autosense helps the user find the script methods/data desired in a script, Ascript is the definitive source of what is available from STRIDE when using Autosense. &lt;br /&gt;
&lt;br /&gt;
The ascript object provides functionality that allows host-based scripts to interact with target-based binaries through the STRIDE Runtime. Through ascript, you can: &lt;br /&gt;
&lt;br /&gt;
*call target-based functions and messages (synchronously or asynchronously) &lt;br /&gt;
*set and read parameter values of these functions and messages &lt;br /&gt;
*transparently emulate (mock) target-based functions&lt;br /&gt;
&lt;br /&gt;
= Ascript Wiki Pages =&lt;br /&gt;
* [[Ascript#Introduction|Ascript]]&lt;br /&gt;
* [[Dynamic Objects|Dynamic Objects]]&lt;br /&gt;
* [[Events|Events]]&lt;br /&gt;
* [[Functions|Functions]]&lt;br /&gt;
* [[Messaging|Messaging]]&lt;br /&gt;
* [[Timeout Considerations|Timeout Considerations]]&lt;br /&gt;
&lt;br /&gt;
= Ascript Automation Usage =&lt;br /&gt;
&lt;br /&gt;
Ascript is used to access STRIDE functionality within JScript or Perl. When creating a script, the user types in &#039;ascript&#039; followed by dot &#039;.&#039; to get Autosense to display (see below).&lt;br /&gt;
&lt;br /&gt;
[[Image:Ascriptpopup.jpg]]&lt;br /&gt;
&lt;br /&gt;
The user may select methods to be used within his script. The user may access property data within his script. Other data elements may be accessed using the Ascript API.&lt;br /&gt;
&lt;br /&gt;
= Ascript API =&lt;br /&gt;
The ascript object is the top-most object when accessing methods and properties related to Ascript. The following table describes what is available from the ascript object. Other nested properties and methods may be found under the ascript object.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;250&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Arguments|Arguments]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of arguments.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Constants|Constants]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of constants.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Database|Database]] &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Object&amp;amp;nbsp; &lt;br /&gt;
| Database settings.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Functions|Functions]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of functions.&lt;br /&gt;
|-&lt;br /&gt;
| void &#039;&#039;&#039;Initialize (&#039;&#039;&#039; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; String STIDName, &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; String databaseFile, &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; int&amp;amp;nbsp;MessageBoxTimeout [optional] &amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Initializes and ascript object instance that has been created outside of the STRIDE Studio environment. This call is needed only on an explicitly-created ascript instance. This call should not be made on an ascript instance automatically created and injected into a script by STRIDE Studio.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventPending &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains true if there is at least one event in this script&#039;s message queue. Events are retrieved from the queue using the [[Events#WaitForEvent|WaitForEvent]] method (ascript.WaitForEvent()).&lt;br /&gt;
|-&lt;br /&gt;
| LogicalPath &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains the script&#039;s path in the STRIDE Studio workspace tree.&lt;br /&gt;
|-&lt;br /&gt;
| String &#039;&#039;&#039;MessageBox(&#039;&#039;&#039;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; String Message, &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; String Title&amp;amp;nbsp;[optional],&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; String Type &amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Displays a model message box dialog. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Acceptable strings for type include:&lt;br /&gt;
* &amp;quot;OK&amp;quot;&lt;br /&gt;
* &amp;quot;OKCANCEL&amp;quot;&lt;br /&gt;
* &amp;quot;RETRYCANCEL&amp;quot;&lt;br /&gt;
* &amp;quot;YESNO&amp;quot;&lt;br /&gt;
* &amp;quot;YESNOCANCEL&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Returns a string indicating the action used to dismiss the message box. Strings returned include:&lt;br /&gt;
* &amp;quot;ABORT&amp;quot;&lt;br /&gt;
* &amp;quot;CANCEL&amp;quot;&lt;br /&gt;
* &amp;quot;IGNORE&amp;quot;&lt;br /&gt;
* &amp;quot;YES&amp;quot;&lt;br /&gt;
* &amp;quot;NO&amp;quot;&lt;br /&gt;
* &amp;quot;OK&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ascript.Messages|Messages]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of messages.&lt;br /&gt;
|-&lt;br /&gt;
| Output &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;(String, Integer, or Object) &lt;br /&gt;
| This is the return value from a RunBlocking() call that invoked this script. This works only when the script is invoked using RunBlocking() in the studio object model.&lt;br /&gt;
|-&lt;br /&gt;
| RspTimeoutPeriod &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;int &lt;br /&gt;
| This value controls the timeout threshold for synchronous function and two-way message calls (in milliseconds). A zero value indicates no timeout. For interactively run scripts the timeout behavior may be different. Specific calls affected by this value are:&lt;br /&gt;
* Call&lt;br /&gt;
* CallBypassOverride&lt;br /&gt;
* SendAndRead&lt;br /&gt;
* SendAndReadBypassOverride&lt;br /&gt;
|-&lt;br /&gt;
| ScriptName &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains the&amp;amp;nbsp;name of the currently&amp;amp;nbsp;running&amp;amp;nbsp;script with extension and without path. If the current ascript instance was instantiated and initialized outside of STRIDE Studio, this value will reflect the STIDName passed to ascript.Initialize().&lt;br /&gt;
|-&lt;br /&gt;
| void &#039;&#039;&#039;Sleep(&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; int Period&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Time to pause (in milliseconds). Allowable range is 0 -1440000 (24 hours).&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.TestUnits|Test Units]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of test units.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Timers|Timers]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of timers.&lt;br /&gt;
|-&lt;br /&gt;
| [[Events#WaitForEvent|Event]] &#039;&#039;&#039;WaitForEvent ( void )&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Pauses script execution until an event is detected in this script&#039;s event queue. See [[Events#WaitForEvent|WaitForEvent]] for more information on this method.&lt;br /&gt;
|-&lt;br /&gt;
| WaitTimeoutPeriod &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;String &lt;br /&gt;
| The timeout threshold (in milliseconds) for asynchronous function and message calls. A zero value indicates no timeout.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ascript.Arguments&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The Arguments collection manages a list of [[#ascript.Arguments.Item|Arguments]] passed to a script which has been invoked via one of the following methods of the Studio Object Model&#039;s File object:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* RunBlocking([arg1], [arg2], ...)&lt;br /&gt;
* RunNonBlocking([arg1], [arg2], ...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The default sort order of the member argument objects is the order in which the arguments were given in the call where the script was invoked.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Arguments in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Arguments.Item|Argument]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the argument at the given index. An exception is thrown if the index is out of range.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Arguments.Item|Argument]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String Name&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the argument with the given name. If a named argument doesn&#039;t exist, null is returned.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;br&amp;gt;ascript.Arguments.Item&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The ascript [[#ascript.Arguments|Arguments]] Collection&#039;s Item() method returns an Argument Object. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Name &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;, &amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
The argument name. The name may have been specified in the studio automation RunBlocking() or RunNonBlocking() call that launched the script or if not specified the name is synthesized by the ascript object. &lt;br /&gt;
&lt;br /&gt;
When synthesized, the name is of the form &amp;quot;Unnamed_N&amp;quot; where &#039;N&#039; is a monotonically incremented number starting from 0.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Value&amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;, &amp;lt;br&amp;gt;String, Integer, or Object &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | The argument value.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ascript.Constants&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The Constants collection contains [[#ascript.Constants.Item|Constants]] objects that represent all constants in C/C++ source code compiled by the STRIDE compiler. Constants include all #define symbols and enumerated constants. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;void ArrangeBy (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String By [optional], &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String Order [optional]&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Sorts the Constants collection so that indexing by position yields predictable results.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;By&#039; parameter may only be &amp;quot;Name&amp;quot;. If not specified, the default is &amp;quot;Name&amp;quot;. This represents how Constants should be sorted in the collection.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;Order&#039; parameter may be either &amp;quot;Ascending&amp;quot; or &amp;quot;Descending&amp;quot;. If not specified, the default is &amp;quot;Ascending&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Exception thrown if either argument is outside legal values.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Constants in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Constants.Item|Constant]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the constant at the given index. An exception is thrown if the index is out of range.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Constants.Item|Constant]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String Name&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the constant with the given name. If a named constant doesn&#039;t exist, null is returned.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;br&amp;gt;ascript.Constants.Item&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The ascript [[#ascript.Constants|Constants]] Collection&#039;s Item() method returns a Constant object. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Name &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;, &amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | The name of the constant.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Value&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;, &amp;lt;br&amp;gt;String&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | The value of the constant.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;ascript.Database  ==&lt;br /&gt;
&lt;br /&gt;
The Database object represents the currently-loaded STRIDE database managed by ascript. You can combine the values of the database path and name to construct a fully-qualified filename. For example: &lt;br /&gt;
&lt;br /&gt;
var dbFullPath = ascript.Database.Path + &amp;quot;\\&amp;quot; + ascript.Database.Name; &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Name &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | The name of the database in use. The database name includes the &amp;quot;.sidb&amp;quot; extension.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Path&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | The path to the STRIDE database in use. The path does not contain a trailing backslash. &amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ascript.Functions&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The Functions collection represents all captured [[#ascript.Functions.Item|Function]] interfaces in the active database.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;void ArrangeBy (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String By [optional], &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String Order [optional]&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Sorts the Functions collection so that indexing by position yields predictable results.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;By&#039; parameter may be either &amp;quot;Name&amp;quot; or &amp;quot;SUID&amp;quot;. If not specified, the default is &amp;quot;Name&amp;quot;. This represents how Functions should be sorted in the collection.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;Order&#039; parameter may be either &amp;quot;Ascending&amp;quot; or &amp;quot;Descending&amp;quot;. If not specified, the default is &amp;quot;Ascending&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Exception thrown if either argument is outside legal values.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Functions in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Functions.Item|Function]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the function at the given index. An exception is thrown if the index is out of range.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Functions.Item|Function]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;String Name&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the function with the given name. A null value is returned if there is no function with the given name.&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ascript.Functions.Item  ===&lt;br /&gt;
&lt;br /&gt;
The Function object represents a captured function interface in the currently active STRIDE database. A Function object always exists as a member of the [[#ascript.Functions|Functions]] collection.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Name &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Function&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Functions.Item.Owner|Owner]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Function&#039;s owner object. The owner object provides access to properties and methods used by the owner-side of the function interface. The owner-side of the interface is used by the implementor of the function.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-Only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| STRIDE Unique IDentifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-Only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains the string &amp;quot;Function&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Functions.Item.User|User]] &lt;br /&gt;
| Property&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-Only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Function&#039;s user object. The user object provides access to properties and methods used by the user-side of the function interface. The user-side of the interface is used by the caller of the function.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ascript.Functions.Item.Owner  ====&lt;br /&gt;
The Function Owner object represents the Owner (callee) side of a function. The Owner object is used to implement a function in script that can be called through the STRIDE Runtime. The Function Owner object is reachable from a [[#ascript.Functions.Item|Function]] object&#039;s owner property. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;200&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| IsOverrideRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-Only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains true if there is a registered override owner. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains true if there is a registered owner, a registered override owner, or both. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| Name &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Owner name.&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#OutPointers|OutPointers]]&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Contains the [[Functions#OutPointers|OutPointers]] payload of the Function User object. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#ParameterList|ParameterList]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Contains the object representing the [[Functions#ParameterList|ParameterList]] payload of the Function Owner. Functions without parameters will not have this property. Before calling the function, all relevent fields in the ParameterList property must be set (includeing the fields of any child objects). These values are marshaled to the currently registered Owner of the function when it is called. This property is a [[Dynamic Objects|Dynamic Object]]. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Register (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Registers the script from which it is called as the active owner of the function. If there is a currently registered owner or another registration failure, an exception is thrown. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void RegisterOverride (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Registers the script as the override registered owner. If the function already has an override registered owner or if there is another registration error, an exception is thrown. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Return ()&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Causes a return from a function call made from another script. See [[Functions#Returns|Return]] for more information. The values of OutPointers and ReturnValue will be reflected to the caller (as long as they are consistent with the input values).&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#ReturnValue|ReturnValue]]  &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Integer &lt;br /&gt;
| Contains the object representing the [[Functions#ReturnValue|ReturnValue]] payload of the Function Owner. Functions returning void will not have this property. Upon return this property will reflect the ReturnValue set by the function Owner. This property is a [[Dynamic Objects|Dynamic Object]]. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| STRIDE-unique identifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains &amp;quot;FunctionOwner&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Unregister (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Unregisters the script that was registered as the owner of the function from a prior Register call. If the current script is not the owner or if unregistration fails, an exception is thrown. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void UnregisterOverride (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Unregisters the script that was registered as the override owner of the function from a prior RegisterOverride call. If the current script is not the registered override owner or if unregistration fails, an exception is thrown. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ascript.Functions.Item.User  ====&lt;br /&gt;
The Function User object represents the User (caller) side of a function. The User object is used to call a function through the STRIDE Runtime. The Function User object is reachable from a [[#ascript.Functions.Item|Function]] object&#039;s User property. &lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;280&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;90&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Call (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Synchronously calls the registered owner of the function (Blocking call). See [[Functions#Synchronous Calls (blocking)|Synchronous Calls]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void CallBypassOverride (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Synchronously calls the registered owner bypassing the registered override owner of the function (Blocking call). See [[Functions#Synchronous Calls (blocking)|Synchronous Calls]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void CallBypassOverrideNonBlocking (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Asynchronously calls the registered owner bypassing the registered override owner of the function (Non-blocking call). See [[Functions#Asynchronous Calls (non-blocking)|Asynchronous Calls]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void CallNonBlocking (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Asynchronously calls the registered owner of the function (Non-blocking call). See [[Functions#Asynchronous Calls (non-blocking)|Asynchronous Calls]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsOverrideRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains true if there is a registered override owner. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains true if there is a registered owner, a registered override owner, or both. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| Name &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| User function name.&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#OutPointers|OutPointers]]&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Contains the [[Functions#OutPointers|OutPointers]] payload of the Function User object. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#ParameterList|ParameterList]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Contains the object representing the [[Functions#ParameterList|ParameterList]] payload of the Function Owner. Functions without parameters will not have this property. Before calling the function, all relevent fields in the ParameterList property must be set (includeing the fields of any child objects). These values are marshaled to the currently registered Owner of the function when it is called. This property is a [[Dynamic Objects|Dynamic Object]]. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#ReturnValue|ReturnValue]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Contains the object representing the [[Functions#ReturnValue|ReturnValue]] payload of the Function Owner. Functions returning void will not have this property. Upon return this property will reflect the ReturnValue set by the function Owner. This property is a [[Dynamic Objects|Dynamic Object]]. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;,int&lt;br /&gt;
| STRIDE-unique identifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains &amp;quot;FunctionUser&amp;quot;. This property is typically used to classify an object that is returned from [[Events#WaitForEvent|WaitForEvent]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;ascript.Messages&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The Messages Collection is a collection of captured [[#ascript.Messages.Item|Message]] objects. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;void ArrangeBy (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String By [optional], &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String Order [optional]&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Sorts the Messages collection so that indexing by position yields predictable results.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;By&#039; parameter may one of the following: &amp;quot;Name&amp;quot;, &amp;quot;SMID&amp;quot;, &amp;quot;SUID&amp;quot;, &amp;quot;Type&amp;quot;. The default sorting order is by &amp;quot;Name&amp;quot;. This represents how Timers should be sorted in the collection. A runtime exception is thrown if an invalid value is passed&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;Order&#039; parameter may be either &amp;quot;Ascending&amp;quot; or &amp;quot;Descending&amp;quot; and is not case sensitive. If not specified, the default is &amp;quot;Ascending&amp;quot;. A runtime exception is thrown if a invalid value is passed.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Messages in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Messages.Item|Message]]&amp;amp;nbsp;&#039;&#039;&#039;Item &#039;&#039;&#039;(&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the message at the given index.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Messages.Item|Message]]&amp;amp;nbsp;&#039;&#039;&#039;Item &#039;&#039;&#039;(&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String Name&amp;lt;br&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the message with the given name.&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;br&amp;gt;ascript.Messages.Item&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The Message object represents a captured message interface in the currently active STRIDE database. A Message object is always a member of the [[#ascript.Messages|Messages]] collection.&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;120&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Message name.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Messages.Item.Owner|Owner]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Message&#039;s owner object.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| STRIDE Unique Identifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains message type defined by the SCL declaration. Legal values include:&lt;br /&gt;
* &amp;quot;OneWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;OneWayResponse&amp;quot;&lt;br /&gt;
* &amp;quot;TwoWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;BroadcastMessage&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Messages.Item.User|User]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Message&#039;s user object.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ascript.Messages.Item.Owner&amp;lt;br&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The Message Owner object represents the Owner-side of a [[#ascript.Messages.Item|Message]]. This may be a receiver of a one-way or two-way message. It may also be the broadcaster of a broadcast message. The Owner object may be used to implement the message owner in a script that can be called through the STRIDE Runtime.&amp;lt;br&amp;gt;&lt;br /&gt;
This object allows access to the message destination. The message can be routed to any of the following:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* the original on-target receiver&lt;br /&gt;
* a window in STRIDE Studio&lt;br /&gt;
* a script running in Studio&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;210&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;80&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Broadcast (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Broadcast method exists only for Broadcast Messages. This method broadcasts this message to all message users that have subscribed to this message. The Response payload values are marshaled to all subscribed message users. See [[Messaging#Broadcast Messaging|Broadcast Messaging]] for more information. &lt;br /&gt;
|-&lt;br /&gt;
| [[Dynamic Objects|Command]]&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| This property is a [[Dynamic Objects|Dynamic Object]] representing the Command payload of the Message Owner. The property exists only if the captured message took one or more parameters. The property contains all the values of the Message User Command fields at the time that the message User called the Owner. See [[Messaging#Message Payloads|Message Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsOverrideRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains the override Owner registration state of the message. True only if there is a registered override owner. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains the Owner registration state of the message. True only if there is a registered owner, a registered override owner, or both. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| Name &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains Message name.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Register (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method only exists for One-Way Command or Two-Way Messages. The calling script is registered as the active owner of the message. If there is already a registered owner or if there is some other registration failure, an exception is thrown. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void RegisterOverride (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method only for One-Way Command or Two-Way Messages. The calling script is registered as the registered override owner (such that all future messages are routed to this owner over and above the registered owner). If there is already an override owner or if there is another registration failure, an exception is thrown. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Dynamic Objects|Response]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| This property is a [[Dynamic Objects|Dynamic Object]] representing the Response payload of the Message Owner. The property exists only if the message is defined with a response payload. See [[Messaging#Message Payloads|Message Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void SendRsp (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Send response method exists only for One-Way Response or Two-Way Messages. The method sends the message as a response to a prior message command from a message user. If there is not pending message response expected an exception is thrown. After setting values of the response payload, a script that implements an Owner message calls SendRsp() to reply to an earlier two-way message (or one-way response). The effect of this call on the calling (User) script depends on how the earlier user message was sent. See [[Messaging#Point-to-Point Messaging|Point-to-Point Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| STRIDE Unique Identifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains message type defined by the SCL declaration. Legal values include:&lt;br /&gt;
* &amp;quot;OneWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;OneWayResponse&amp;quot;&lt;br /&gt;
* &amp;quot;TwoWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;BroadcastMessage&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Unregister (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method only exists for One-Way Command or Two-Way Messages. This method unregisters the current script as the owner of the message. If the current script is not the registered owner or if unregistration fails, an exception is thrown. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void UnregisterOverride (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for One-Way Command or Two-Way Messages. This method unregisters the current script as registered override owner. If the current script is not the registered override owner or if registration fails, an exception is thrown. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ascript.Messages.Item.User&amp;lt;br&amp;gt; ====&lt;br /&gt;
The Message User object represents the User-side of a [[#ascript.Messages.Item|Message]]. This may be a sender of a one-way or two-way message. It may also be the receiver of a broadcast message. The User object may be used to send a message from a script to the registered message owner through the STRIDE Runtime.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;240&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;90&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Dynamic Objects|Command]]  &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| This property is a [[Dynamic Objects|Dynamic Object]] representing the Command payload of the Message User. The property exists only if the captured message took one or more parameters. The values of all Message User Command payload fields should be set before the Message Owner is called. See [[Messaging#Message Payloads|Message Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsOverrideRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains the override Owner registration state of the message. True only if there is a registered override owner. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains the Owner registration state of the message. True only if there is a registered owner, a registered override owner, or both. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| Name &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains Message name.&lt;br /&gt;
|-&lt;br /&gt;
| [[Dynamic Objects|Response]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| This property is a [[Dynamic Objects|Dynamic Object]] representing the Response payload of the Message User. The property exists only if the message is defined with a response payload. See [[Messaging#Message Payloads|Message Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void SendAndRead (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;boolean Value&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for Two-Way Messages. See [[Messaging#Two-Way Messaging|Two-Way Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void SendAndReadBypassOverride (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;boolean Value &amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for Two-Way Messages. See [[Messaging#Two-Way Messaging|Two-Way Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void SendCmd (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for Two-Way and One-Way Command Messages. See [[Messaging#Two-Way Messaging|Two-Way Messaging]] and [[Messaging#One-Way Messaging|One-Way Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void SendCmdBypassOverride (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; boolean Value &amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for Two-Way and One-Way Command Messages. See [[Messaging#Two-Way Messaging|Two-Way Messaging]] and [[Messaging#One-Way Messaging|One-Way Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Subscribe (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for Broadcast Messages. This method subscribes this message owner to receive message broadcasts from the given message. See [[Messaging#Broadcast Messaging|Broadcast Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| STRIDE Unique Identifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains message type defined by the SCL declaration. Legal values include:&lt;br /&gt;
* &amp;quot;OneWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;OneWayResponse&amp;quot;&lt;br /&gt;
* &amp;quot;TwoWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;BroadcastMessage&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Unsubscribe (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Unsubscribe method exists only for Broadcast Messages. This method unsubscribes this message owner from given message&#039;s broadcasts. See [[Messaging#Broadcast Messaging|Broadcast Messaging]] for more information.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;ascript.TestUnits&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
TestUnits is a collection of [[#ascript.TestUnits.Item|TestUnit]] Objects contained and managed through ascript. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;void ArrangeBy (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String By [optional], &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String Order [optional]&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Sorts the Test Units collection so that indexing by position yields predictable results.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;By&#039; parameter may be either &amp;quot;Name&amp;quot; or &amp;quot;SUID&amp;quot;. If not specified, the default is &amp;quot;Name&amp;quot;. This represents how Test Units should be sorted in the collection.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;Order&#039; parameter may be either &amp;quot;Ascending&amp;quot; or &amp;quot;Descending&amp;quot;. If not specified, the default is &amp;quot;Ascending&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Exception thrown if either argument is outside legal values.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Test Units in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.TestUnits.Item|TestUnit]]&amp;amp;nbsp;&#039;&#039;&#039;Item &#039;&#039;&#039;(&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the test unit at the given index.&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;br&amp;gt;ascript.TestUnits.Item&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The TestUnit Object represents a captured Test Unit interface in the currently active STRIDE database. A Test Unit object always exists as a member of the [[#ascript.TestUnits|TestUnits]] collection and is accessed from the collection using the item(#) interface. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Arguments &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Object &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains the Test Unit&#039;s parameter list payload.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | IsRegistered&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains true if the Test Unit owner has registered on the target side.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Name &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Test Unit name.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &#039;&#039;&#039;void Run (void)&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method to run the test unit. Calling this method will run the test unit in a blocking call until the test unit completes processing.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | [[Reporter#reporter.Suites.Item|Suite]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | An object of type Reporter&#039;s [[Reporter#reporter.Suites.Item|Suite]]. By default after a run this object is a sub-Suite of ascript.TestSuite with the same name as the Test Unit (null if no reporting performed). Setting Suite to a concrete external TestSuite prior to execution will override default creation behavior (set to null to revert to default behavior).&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Summary &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;int &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains static payload object of type srTestCaseTotals_t with one of the following:&lt;br /&gt;
* srTEST_PASS&lt;br /&gt;
* srTEST_FAIL&lt;br /&gt;
* srTEST_NOTINUSE&lt;br /&gt;
* srTEST_INPROGRESS&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Type&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains test unit type:&lt;br /&gt;
* &amp;quot;TestClass&amp;quot; &lt;br /&gt;
* &amp;quot;TestCClass&amp;quot; &lt;br /&gt;
* &amp;quot;TestFList&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;ascript.Timers&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The Timers collection manages a set of [[#ascript.Timers.Item|Timer]] Objects. The Timers allow scripts to generate periodic or &#039;one-shot&#039; timed events. Upon creation, the Timers collection is empty. The Timers collection is the only read/write collection in STRIDE; member Timer objects can be added (implicitly created) and removed by scripts.  From the collection&#039;s point of view, member Timers have two states: dead and alive. Timers are alive upon creation and remain so as long as they exist in the collection. A Timer object that is removed from the collection is considered dead. Any operation on a dead timer will cause an exception to be thrown.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | [[#ascript.Timers.Item|Timer]] &#039;&#039;&#039;Add&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String Name&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Creates and adds a new timer object with the given name. Returns the new Timer object. An exception is thrown if a Timer was already created with the given name.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;void ArrangeBy (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String By [optional], &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String Order [optional]&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Sorts the Timers collection so that indexing by position yields predictable results.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;By&#039; parameter may only be &amp;quot;Name&amp;quot;. If not specified, the default is &amp;quot;Name&amp;quot;. This represents how Timers should be sorted in the collection.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;Order&#039; parameter may be either &amp;quot;Ascending&amp;quot; or &amp;quot;Descending&amp;quot;. If not specified, the default is &amp;quot;Ascending&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;An exception is thrown if either argument is outside legal values.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Timers in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | [[#ascript.Timers.Item|Timer]]&amp;amp;nbsp;&#039;&#039;&#039;Item (&amp;lt;br&amp;gt;&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Retrieves the Timer object for the given index.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | [[#ascript.Timers.Item|Timer]] &#039;&#039;&#039;Remove (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Removes the timer at the given index.&amp;lt;br&amp;gt;A timer object that is removed from the collection is automatically stopped before removal if it is active. No event is generated in this case.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;br&amp;gt;ascript.Timers.Item&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The ascript [[#ascript.Timers|Timers]] Collection&#039;s Item() method returns a Timer Object. The Timer object enables scripting clients to synthesize and receive timer-based periodic or one-shot events.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a timer expires and rires its event, the event is queued and can be accessed by the [[Events#WaitForEvent|WaitForEvent]] method. The expired timer object will be returned by WaitForEvent.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Active &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only,&#039;&#039;&#039;&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains timer operation state. True if timer is in operation (i.e. it will generate an event at some time in the future). A newly created timer is inactive by default.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Duration &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;int &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Timer duration in milliseconds.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Id &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only,&#039;&#039;&#039;&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains timer identifier.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Name&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Name assigned when the timer was created. Default names are &amp;quot;Timer_n&amp;quot; where &#039;n&#039; is the nth named time created by this ascript object.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Periodic &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;boolean&amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | When false, the time will fire only once (one-shot mode). When true, the time automatically restarts after each event is fired. This property can be changed regardless of the state of the timer.&amp;amp;nbsp;This field is false by default when a&amp;amp;nbsp;timer is created.&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &#039;&#039;&#039;void Start&amp;amp;nbsp;(void)&#039;&#039;&#039; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Transitions an inactive timer to active. Once started, the timer will run for the length of time specified by its Duration property. Calling Start on a timer with a zero/negative duration will cause an exception to be thrown. Calling Start on a timer that has already started will also cause an exception to be thrown.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &#039;&#039;&#039;void Stop&amp;amp;nbsp;(void)&#039;&#039;&#039; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Transitions an active timer to inactive. Calling Stop on a timer that is not active will cause an exception to be thrown.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Type&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains the string &amp;quot;Timer&amp;quot;. This property is typically used to classify an object that is returned from the [[Events#WaitForEvent|WaitForEvent]] method.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Carriez</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:AutoScript_Functions&amp;diff=6734</id>
		<title>Studio:AutoScript Functions</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:AutoScript_Functions&amp;diff=6734"/>
		<updated>2008-07-30T23:46:14Z</updated>

		<summary type="html">&lt;p&gt;Carriez: /* CallNonBlocking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This section describes basic functionality for ascript function processing. For ease of understanding, this section describes overall concepts and then describes the precise functionality that STRIDE provides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Interception ==&lt;br /&gt;
A powerful feature of STRIDE is the ability to intercept function calls. While this capability is known to most seasoned STRIDE users, it is not necessarily as known to STRIDE newbies. Comprehension of general STRIDE terms requires a small amount of knowledge as to what function interception means. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
STRIDE is generally used to debug remote hardware (e.g. a cellphone) from a Windows computer running STRIDE. The remote hardware is refered to as the target. The Windows computer is refered &lt;br /&gt;
to as the host. Scripts are used to communicate with STRIDE to pass data between the host and target.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
While there are several models for how to connect to host and target and to transfer data inbetween them, this wiki page is only to describe how perform this connectability via ascript. The following issues have to be resolved to communicate between host and target using two scripts:&lt;br /&gt;
* Which script owns a particular function (e.g. a script on the target)?&lt;br /&gt;
* Which script desires access to the function (e.g. a script on the host)?&lt;br /&gt;
* What is types of data (i.e. parameters, pointers, and return value payloads) will be passed between them?&lt;br /&gt;
* How will the owner and the user communicate to pass payloads?&lt;br /&gt;
&lt;br /&gt;
The how of questions will be answered in the following sections. The why will depend on a particular testing solution to each distinct type of hardware being developed.&lt;br /&gt;
&lt;br /&gt;
== Ownership vs. Usage ==&lt;br /&gt;
STRIDE has the concept of a Function Owner and a Function User. In general STRIDE usage the Owner and User imply the owner of a function on the target and the user of a function on the host. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function User ===&lt;br /&gt;
A [[ascript#ascript.Functions.Item.User|Function User]] may be any script that is not registered as the function owner or function override owner. The [[ascript#ascript.Functions.Item.User|Function User]] may be access via the message as [[ascript#ascript.Functions.Item.User|ascript.Functions.Item.User]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function Owner ===&lt;br /&gt;
The [[ascript#ascript.Functions.Item.Owner|Function Owner]] is the script that has successfully registered itself as the owner of the function (by calling the Register method). A function will only have one registered owner. Calls to register a second owner will result in an exception will be thrown. Ownership can be surrendered by calling the Unregister method (or by exiting the script that registered ownership). The [[ascript#ascript.Functions.Item.Owner|Function Owner]] may be accessed via [[ascript#ascript.Functions.Item.Owner|ascript.Functions.Item.Owner]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Override Owner ===&lt;br /&gt;
The Function Override Owner of a function is the script that successfully registered as the override owner (using the RegisterOverride method). An override owner is used to bypass the registered owner. If a function has an override owner registered, function calls are made to the registered override owner and not the registered owner. This allows the ability to code scripting with the registered owner, but to bypass the registered owner for certain processing for a variety of reasons (i.e. some code not implemented for the registered owner, some exception cases, etc.). It is legal for a script to declare both forms of function ownership. Thus, the same script may be both registered owner and the registered override owner.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Payloads ==&lt;br /&gt;
Payloads are [[Dynamic Objects|Dynamic Objects]] containing data related to a function&#039;s parameters, a function&#039;s return value, or pointer values passed for a function. These payloads are defined as properties for both a [[ascript#ascript.Functions.Item.User|Function User]] and a [[ascript#ascript.Functions.Item.Owner|Function Owner]]. By being part of both user and owner allows their values can be checked for validity in the event that a call did not pass correct data from user to owner (or visa-versa).  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OutPointers ===&lt;br /&gt;
This payload exists only if a function&#039;s payload has at least one pointer that is qualified as OUT or INOUT. In other words, the function returns an object via a pointer through its parameter list.&lt;br /&gt;
&lt;br /&gt;
If this property exists, its members are comprised of all the top-level parameters that are either OUT or INOUT pointers. This can also exist for structured types (structs or unions) that contain members that are OUT or INOUT. It can also exist if a structured type contains a nested structured type that contains members that are OUT or INOUT. In the case of structured type objects appearing in the OutPointers hierarchy, only members that are qualified as OUT or INOUT (or that themselves contain these qualified types) are available.&lt;br /&gt;
&lt;br /&gt;
Upon a function&#039;s return, the OutPointers property of the [[ascript#ascript.Functions.Item.User|Function User]] object (ascript.Functions.Item().User.OutPointers) will reflect (contain) the values set by the [[ascript#ascript.Functions.Item.Owner|Function Owner]] object (ascript.Functions.Item().Owner.OutPointers).&lt;br /&gt;
 &lt;br /&gt;
=== ParameterList ===&lt;br /&gt;
A ParameterList payload only exists if the given [[ascript#ascript.Functions.Item.Owner|Function Owner]] contains one or more parameters. This payload will contain the values of all ParameterList fields at the time the function User called the Owner (on the user side before a call). The ParameterList payload is a [[Dynamic Objects|Dynamic Object]]. This payload will contain all the ParameterList field results after a call (on the owner side after a call). &lt;br /&gt;
&lt;br /&gt;
=== ReturnValue ===&lt;br /&gt;
The ReturnValue Payload only exists if the given [[ascript#ascript.Functions.Item.Owner|Function Owner]] returns a value. Functions returning void will not have this property. The ReturnValue payload is a [[Dynamic Objects|Dynamic Object]]. After a call, the ReturnValue payload will contain the return results (on the owner side after a call).&lt;br /&gt;
&lt;br /&gt;
== Synchronous / Asynchronous Interception ==&lt;br /&gt;
Function calls that are made between a function [[Ascript#Ascript.Functions.Item.Owner|Owner]] and a function [[Ascript#Ascript.Functions.Item.Owner|User]] will be either asynchronous or synchronous.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Asynchronous Calls (non-blocking) ===&lt;br /&gt;
An asynchronous function call is also known as a &amp;quot;non-blocking&amp;quot; call. This is the type of call that occurs for both CallNonBlocking and CallBypassOverrideNonBlocking. &lt;br /&gt;
&lt;br /&gt;
==== CallBypassOverrideNonBlocking ====&lt;br /&gt;
Asynchronously calls the override registered owner of the function (Non-blocking call).&lt;br /&gt;
* Invokes call to registered function owner bypassing the registered override owner (if one exists).&lt;br /&gt;
* If there is no registered owner but there is an override registered owner, the call is routed to the override registered owner.&lt;br /&gt;
* Current values of all fields of the ParameterList property are marshaled to the called function.&lt;br /&gt;
* This method returns to the caller immediately. When the function owner (running in a separate thread) returns, an event is placed in this script&#039;s queue by the STRIDE Runtime. The event (as a polymorphic object exposing Type and Name properties) is retrieved from the queue using [[Events#WaitForEvent|ascript.WaitForEvent()]].&lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
* The object returned from [[Events#WaitForEvent|WaitForEvent()]] in response to CallByPassOverrideNonBlocking() can be:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10&amp;quot; |&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
* The Function User Object corresponding to the function that was called. (Type = &amp;quot;FunctionUser&amp;quot;, Name=&amp;quot;function name&amp;quot;). The object&#039;s ReturnValue property and the OutPointers property (if present) will be populated with the values supplied by the Owner implementation.&lt;br /&gt;
* An [[Error Object|Error Object]] containing information about the error that occurred (Type=&amp;quot;Error&amp;quot;; Name=&amp;quot;error source&amp;quot;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== CallNonBlocking ====&lt;br /&gt;
&lt;br /&gt;
Asynchronously calls the registered owner of the function (Non-blocking call).&lt;br /&gt;
* This call invokes a call to the currently registered owner of the function. &lt;br /&gt;
**If there is a registered owner and there is not an override registered owner, the call is routed to the registered owner.&lt;br /&gt;
**If there is a registered owner and there is also an override registered owner, the call is routed to the override registered owner.&lt;br /&gt;
**If there is no registered owner but there is an override registered owner, the call is routed to the override registered owner.&lt;br /&gt;
* The current values of all fields in the ParameterList property are marshaled to the called function.&lt;br /&gt;
* This method returns to the caller immediately. When the function owner (running in a separate thread) returns, an event is placed in this script&#039;s queue by the STRIDE Runtime. The event (as a polymorphic object exposing Type and Name properties) is retrieved from the queue using ascript.WaitForEvent().&lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
* The object returned from [[Events#WaitForEvent|WaitForEvent()]] in response to CallByPassOverrideNonBlocking() can be:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10&amp;quot; |&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
* The Function User Object corresponding to the function that was called. (Type = &amp;quot;FunctionUser&amp;quot;, Name=&amp;quot;function name&amp;quot;). The object&#039;s ReturnValue property and the OutPointers property (if present) will be populated with the values supplied by the Owner implementation.&lt;br /&gt;
* An [[Error Object|Error Object]] containing information about the error that occurred (Type=&amp;quot;Error&amp;quot;; Name=&amp;quot;error source&amp;quot;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Synchronous Calls (blocking) ===&lt;br /&gt;
A synchronous call is also known as a &amp;quot;blocking&amp;quot; call. Blocking calls a made using the Call or CallBypassOverride methods. These calls are made from the [[Ascript#Ascript.Functions.Item.User|User]]. &lt;br /&gt;
&lt;br /&gt;
==== Call ====&lt;br /&gt;
Synchronously calls the registered owner of the function (Blocking call).&lt;br /&gt;
* All current field values of the ParameterList property are marshaled to the function [[Ascript#Ascript.Functions.Item.Owner|Owner]]. &lt;br /&gt;
* If there is no registered owner or registered override owner, an exception is thrown. &lt;br /&gt;
* If there is no registered owner but there is an override registered owner, the call is routed to the override registered owner. &lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
&lt;br /&gt;
==== CallBypassOverride ====&lt;br /&gt;
Synchronously calls the override registered owner of the function (Blocking call). &lt;br /&gt;
* The call is made to the registered owner of the function bypassing any existing registered override owner. &lt;br /&gt;
* The current values of all fields in the ParameterList property are marshaled to the called function [[Ascript#Ascript.Functions.Item.Owner|Owner]]. &lt;br /&gt;
* If there is no registered owner or registered override owner, an exception is thrown.&lt;br /&gt;
* If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner. &lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]] is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
&lt;br /&gt;
=== Returns ===&lt;br /&gt;
When the callee ([[Ascript#Ascript.Functions.Item.Owner|owner]]) wants to generate a function return, it makes a call to the Return method. This method is used for both synchronous and unsynchronous calls.&lt;/div&gt;</summary>
		<author><name>Carriez</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:AutoScript_Functions&amp;diff=6717</id>
		<title>Studio:AutoScript Functions</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:AutoScript_Functions&amp;diff=6717"/>
		<updated>2008-07-30T23:22:15Z</updated>

		<summary type="html">&lt;p&gt;Carriez: /* CallBypassOverride */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This section describes basic functionality for ascript function processing. For ease of understanding, this section describes overall concepts and then describes the precise functionality that STRIDE provides.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Interception ==&lt;br /&gt;
A powerful feature of STRIDE is the ability to intercept function calls. While this capability is known to most seasoned STRIDE users, it is not necessarily as known to STRIDE newbies. Comprehension of general STRIDE terms requires a small amount of knowledge as to what function interception means. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
STRIDE is generally used to debug remote hardware (e.g. a cellphone) from a Windows computer running STRIDE. The remote hardware is refered to as the target. The Windows computer is refered &lt;br /&gt;
to as the host. Scripts are used to communicate with STRIDE to pass data between the host and target.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
While there are several models for how to connect to host and target and to transfer data inbetween them, this wiki page is only to describe how perform this connectability via ascript. The following issues have to be resolved to communicate between host and target using two scripts:&lt;br /&gt;
* Which script owns a particular function (e.g. a script on the target)?&lt;br /&gt;
* Which script desires access to the function (e.g. a script on the host)?&lt;br /&gt;
* What is types of data (i.e. parameters, pointers, and return value payloads) will be passed between them?&lt;br /&gt;
* How will the owner and the user communicate to pass payloads?&lt;br /&gt;
&lt;br /&gt;
The how of questions will be answered in the following sections. The why will depend on a particular testing solution to each distinct type of hardware being developed.&lt;br /&gt;
&lt;br /&gt;
== Ownership vs. Usage ==&lt;br /&gt;
STRIDE has the concept of a Function Owner and a Function User. In general STRIDE usage the Owner and User imply the owner of a function on the target and the user of a function on the host. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function User ===&lt;br /&gt;
A [[ascript#ascript.Functions.Item.User|Function User]] may be any script that is not registered as the function owner or function override owner. The [[ascript#ascript.Functions.Item.User|Function User]] may be access via the message as [[ascript#ascript.Functions.Item.User|ascript.Functions.Item.User]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function Owner ===&lt;br /&gt;
The [[ascript#ascript.Functions.Item.Owner|Function Owner]] is the script that has successfully registered itself as the owner of the function (by calling the Register method). A function will only have one registered owner. Calls to register a second owner will result in an exception will be thrown. Ownership can be surrendered by calling the Unregister method (or by exiting the script that registered ownership). The [[ascript#ascript.Functions.Item.Owner|Function Owner]] may be accessed via [[ascript#ascript.Functions.Item.Owner|ascript.Functions.Item.Owner]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Override Owner ===&lt;br /&gt;
The Function Override Owner of a function is the script that successfully registered as the override owner (using the RegisterOverride method). An override owner is used to bypass the registered owner. If a function has an override owner registered, function calls are made to the registered override owner and not the registered owner. This allows the ability to code scripting with the registered owner, but to bypass the registered owner for certain processing for a variety of reasons (i.e. some code not implemented for the registered owner, some exception cases, etc.). It is legal for a script to declare both forms of function ownership. Thus, the same script may be both registered owner and the registered override owner.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function Payloads ==&lt;br /&gt;
Payloads are [[Dynamic Objects|Dynamic Objects]] containing data related to a function&#039;s parameters, a function&#039;s return value, or pointer values passed for a function. These payloads are defined as properties for both a [[ascript#ascript.Functions.Item.User|Function User]] and a [[ascript#ascript.Functions.Item.Owner|Function Owner]]. By being part of both user and owner allows their values can be checked for validity in the event that a call did not pass correct data from user to owner (or visa-versa).  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OutPointers ===&lt;br /&gt;
This payload exists only if a function&#039;s payload has at least one pointer that is qualified as OUT or INOUT. In other words, the function returns an object via a pointer through its parameter list.&lt;br /&gt;
&lt;br /&gt;
If this property exists, its members are comprised of all the top-level parameters that are either OUT or INOUT pointers. This can also exist for structured types (structs or unions) that contain members that are OUT or INOUT. It can also exist if a structured type contains a nested structured type that contains members that are OUT or INOUT. In the case of structured type objects appearing in the OutPointers hierarchy, only members that are qualified as OUT or INOUT (or that themselves contain these qualified types) are available.&lt;br /&gt;
&lt;br /&gt;
Upon a function&#039;s return, the OutPointers property of the [[ascript#ascript.Functions.Item.User|Function User]] object (ascript.Functions.Item().User.OutPointers) will reflect (contain) the values set by the [[ascript#ascript.Functions.Item.Owner|Function Owner]] object (ascript.Functions.Item().Owner.OutPointers).&lt;br /&gt;
 &lt;br /&gt;
=== ParameterList ===&lt;br /&gt;
A ParameterList payload only exists if the given [[ascript#ascript.Functions.Item.Owner|Function Owner]] contains one or more parameters. This payload will contain the values of all ParameterList fields at the time the function User called the Owner (on the user side before a call). The ParameterList payload is a [[Dynamic Objects|Dynamic Object]]. This payload will contain all the ParameterList field results after a call (on the owner side after a call). &lt;br /&gt;
&lt;br /&gt;
=== ReturnValue ===&lt;br /&gt;
The ReturnValue Payload only exists if the given [[ascript#ascript.Functions.Item.Owner|Function Owner]] returns a value. Functions returning void will not have this property. The ReturnValue payload is a [[Dynamic Objects|Dynamic Object]]. After a call, the ReturnValue payload will contain the return results (on the owner side after a call).&lt;br /&gt;
&lt;br /&gt;
== Synchronous / Asynchronous Interception ==&lt;br /&gt;
Function calls that are made between a function [[Ascript#Ascript.Functions.Item.Owner|Owner]] and a function [[Ascript#Ascript.Functions.Item.Owner|User]] will be either asynchronous or synchronous.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Asynchronous Calls (non-blocking) ===&lt;br /&gt;
An asynchronous function call is also known as a &amp;quot;non-blocking&amp;quot; call. This is the type of call that occurs for both CallNonBlocking and CallBypassOverrideNonBlocking. &lt;br /&gt;
&lt;br /&gt;
==== CallBypassOverrideNonBlocking ====&lt;br /&gt;
Asynchronously calls the override registered owner of the function (Non-blocking call).&lt;br /&gt;
* Invokes call to registered function owner bypassing the registered override owner (if one exists).&lt;br /&gt;
* If there is no registered owner but there is an override registered owner, the call is routed to the override registered owner.&lt;br /&gt;
* Current values of all fields of the ParameterList property are marshaled to the called function.&lt;br /&gt;
* This method returns to the caller immediately. When the function owner (running in a separate thread) returns, an event is placed in this script&#039;s queue by the STRIDE Runtime. The event (as a polymorphic object exposing Type and Name properties) is retrieved from the queue using [[Events#WaitForEvent|ascript.WaitForEvent()]].&lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
* The object returned from [[Events#WaitForEvent|WaitForEvent()]] in response to CallByPassOverrideNonBlocking() can be:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10&amp;quot; |&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
* The Function User Object corresponding to the function that was called. (Type = &amp;quot;FunctionUser&amp;quot;, Name=&amp;quot;function name&amp;quot;). The object&#039;s ReturnValue property and the OutPointers property (if present) will be populated with the values supplied by the Owner implementation.&lt;br /&gt;
* An [[Error Object|Error Object]] containing information about the error that occurred (Type=&amp;quot;Error&amp;quot;; Name=&amp;quot;error source&amp;quot;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== CallNonBlocking ====&lt;br /&gt;
&lt;br /&gt;
Asynchronously calls the registered owner of the function (Non-blocking call).&lt;br /&gt;
* This call invokes a call to the currently registered owner of the function. If there is an override registered owner, it is called. If there is no override registered owner, but there is a registered owner, the registered owner is called.&lt;br /&gt;
* The current values of all fields in the ParameterList property are marshaled to the called function.&lt;br /&gt;
* This method returns to the caller immediately. When the function owner (running in a separate thread) returns, an event is placed in this script&#039;s queue by the STRIDE Runtime. The event (as a polymorphic object exposing Type and Name properties) is retrieved from the queue using ascript.WaitForEvent().&lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
* The object returned from [[Events#WaitForEvent|WaitForEvent()]] in response to CallByPassOverrideNonBlocking() can be:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;10&amp;quot; |&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
* The Function User Object corresponding to the function that was called. (Type = &amp;quot;FunctionUser&amp;quot;, Name=&amp;quot;function name&amp;quot;). The object&#039;s ReturnValue property and the OutPointers property (if present) will be populated with the values supplied by the Owner implementation.&lt;br /&gt;
* An [[Error Object|Error Object]] containing information about the error that occurred (Type=&amp;quot;Error&amp;quot;; Name=&amp;quot;error source&amp;quot;).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Synchronous Calls (blocking) ===&lt;br /&gt;
A synchronous call is also known as a &amp;quot;blocking&amp;quot; call. Blocking calls a made using the Call or CallBypassOverride methods. These calls are made from the [[Ascript#Ascript.Functions.Item.User|User]]. &lt;br /&gt;
&lt;br /&gt;
==== Call ====&lt;br /&gt;
Synchronously calls the registered owner of the function (Blocking call).&lt;br /&gt;
* All current field values of the ParameterList property are marshaled to the function [[Ascript#Ascript.Functions.Item.Owner|Owner]]. &lt;br /&gt;
* If there is no registered owner or registered override owner, an exception is thrown. &lt;br /&gt;
* If there is no registered owner but there is an override registered owner, the call is routed to the override registered owner. &lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]]  is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
&lt;br /&gt;
==== CallBypassOverride ====&lt;br /&gt;
Synchronously calls the override registered owner of the function (Blocking call). &lt;br /&gt;
* The call is made to the registered owner of the function bypassing any existing registered override owner. &lt;br /&gt;
* The current values of all fields in the ParameterList property are marshaled to the called function [[Ascript#Ascript.Functions.Item.Owner|Owner]]. &lt;br /&gt;
* If there is no registered owner or registered override owner, an exception is thrown.&lt;br /&gt;
* If there is no registered owner but there is a registered override owner, the call is routed to the registered override owner. &lt;br /&gt;
* If the [[Ascript#Ascript API|RspTimeoutPeriod]] is non-zero and the call does not complete in the specified time, an exception is thrown. For interactively run scripts the timeout behavior differ; see [[Timeout Considerations|Timeout Considerations]].&lt;br /&gt;
&lt;br /&gt;
=== Returns ===&lt;br /&gt;
When the callee ([[Ascript#Ascript.Functions.Item.Owner|owner]]) wants to generate a function return, it makes a call to the Return method. This method is used for both synchronous and unsynchronous calls.&lt;/div&gt;</summary>
		<author><name>Carriez</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Studio:AutoScript&amp;diff=6704</id>
		<title>Studio:AutoScript</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Studio:AutoScript&amp;diff=6704"/>
		<updated>2008-07-30T23:00:29Z</updated>

		<summary type="html">&lt;p&gt;Carriez: /* Introduction&amp;amp;nbsp; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
= Introduction&amp;amp;nbsp;  =&lt;br /&gt;
&lt;br /&gt;
Ascript is the definitive hierarchy of methods, objects, and properties provided by Autosense. While Autosense helps the user find the script methods/data desired in a script, Ascript is the definitive source of what is available from STRIDE when using Autosense. &lt;br /&gt;
&lt;br /&gt;
The ascript object provides functionality that allows host-based scripts to interact with target-based binaries through the STRIDE Runtime. Through ascript, you can: &lt;br /&gt;
&lt;br /&gt;
*call target-based functions and messages (synchronously or asynchronously) &lt;br /&gt;
*set and read parameter values of these functions and messages &lt;br /&gt;
*transparently emulate (mock) target-based functions&lt;br /&gt;
&lt;br /&gt;
= Ascript Wiki Pages =&lt;br /&gt;
* [[Ascript#Introduction|Ascript]]&lt;br /&gt;
* [[Dynamic Objects|Dynamic Objects]]&lt;br /&gt;
* [[Events|Events]]&lt;br /&gt;
* [[Functions|Functions]]&lt;br /&gt;
* [[Messaging|Messaging]]&lt;br /&gt;
* [[Timeout Considerations|Timeout Considerations]]&lt;br /&gt;
&lt;br /&gt;
= Ascript Automation Usage =&lt;br /&gt;
&lt;br /&gt;
Ascript is used to access STRIDE functionality within JScript or Perl. When creating a script, the user types in &#039;ascript&#039; followed by dot &#039;.&#039; to get Autosense to display (see below).&lt;br /&gt;
&lt;br /&gt;
[[Image:Ascriptpopup.jpg]]&lt;br /&gt;
&lt;br /&gt;
The user may select methods to be used within his script. The user may access property data within his script. Other data elements may be accessed using the Ascript API.&lt;br /&gt;
&lt;br /&gt;
= Ascript API =&lt;br /&gt;
The ascript object is the top-most object when accessing methods and properties related to Ascript. The following table describes what is available from the ascript object. Other nested properties and methods may be found under the ascript object.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;250&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Arguments|Arguments]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of arguments.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Constants|Constants]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of constants.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Database|Database]] &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Object&amp;amp;nbsp; &lt;br /&gt;
| Database settings.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Functions|Functions]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of functions.&lt;br /&gt;
|-&lt;br /&gt;
| void &#039;&#039;&#039;Initialize (&#039;&#039;&#039; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; String STIDName, &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; String databaseFile, &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; int&amp;amp;nbsp;MessageBoxTimeout [optional] &amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Initializes and ascript object instance that has been created outside of the STRIDE Studio environment. This call is needed only on an explicitly-created ascript instance. This call should not be made on an ascript instance automatically created and injected into a script by STRIDE Studio.&lt;br /&gt;
|-&lt;br /&gt;
| IsEventPending &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains true if there is at least one event in this script&#039;s message queue. Events are retrieved from the queue using the [[Events#WaitForEvent|WaitForEvent]] method (ascript.WaitForEvent()).&lt;br /&gt;
|-&lt;br /&gt;
| LogicalPath &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains the script&#039;s path in the STRIDE Studio workspace tree.&lt;br /&gt;
|-&lt;br /&gt;
| String &#039;&#039;&#039;MessageBox(&#039;&#039;&#039;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; String Message, &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; String Title&amp;amp;nbsp;[optional],&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; String Type &amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Displays a model message box dialog. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Acceptable strings for type include:&lt;br /&gt;
* &amp;quot;OK&amp;quot;&lt;br /&gt;
* &amp;quot;OKCANCEL&amp;quot;&lt;br /&gt;
* &amp;quot;RETRYCANCEL&amp;quot;&lt;br /&gt;
* &amp;quot;YESNO&amp;quot;&lt;br /&gt;
* &amp;quot;YESNOCANCEL&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Returns a string indicating the action used to dismiss the message box. Strings returned include:&lt;br /&gt;
* &amp;quot;ABORT&amp;quot;&lt;br /&gt;
* &amp;quot;CANCEL&amp;quot;&lt;br /&gt;
* &amp;quot;IGNORE&amp;quot;&lt;br /&gt;
* &amp;quot;YES&amp;quot;&lt;br /&gt;
* &amp;quot;NO&amp;quot;&lt;br /&gt;
* &amp;quot;OK&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[ascript.Messages|Messages]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of messages.&lt;br /&gt;
|-&lt;br /&gt;
| Output &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;(String, Integer, or Object) &lt;br /&gt;
| This is the return value from a RunBlocking() call that invoked this script. This works only when the script is invoked using RunBlocking() in the studio object model.&lt;br /&gt;
|-&lt;br /&gt;
| RspTimeoutPeriod &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;int &lt;br /&gt;
| This value controls the timeout threshold for synchronous function and two-way message calls (in milliseconds). A zero value indicates no timeout. For interactively run scripts the timeout behavior may be different. Specific calls affected by this value are:&lt;br /&gt;
* Call&lt;br /&gt;
* CallBypassOverride&lt;br /&gt;
* SendAndRead&lt;br /&gt;
* SendAndReadBypassOverride&lt;br /&gt;
|-&lt;br /&gt;
| ScriptName &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains the&amp;amp;nbsp;name of the currently&amp;amp;nbsp;running&amp;amp;nbsp;script with extension and without path. If the current ascript instance was instantiated and initialized outside of STRIDE Studio, this value will reflect the STIDName passed to ascript.Initialize().&lt;br /&gt;
|-&lt;br /&gt;
| void &#039;&#039;&#039;Sleep(&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; int Period&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Time to pause (in milliseconds). Allowable range is 0 -1440000 (24 hours).&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.TestUnits|Test Units]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of test units.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Timers|Timers]] &lt;br /&gt;
| Collection &lt;br /&gt;
| Collection of timers.&lt;br /&gt;
|-&lt;br /&gt;
| [[Events#WaitForEvent|Event]] &#039;&#039;&#039;WaitForEvent ( void )&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Pauses script execution until an event is detected in this script&#039;s event queue. See [[Events#WaitForEvent|WaitForEvent]] for more information on this method.&lt;br /&gt;
|-&lt;br /&gt;
| WaitTimeoutPeriod &lt;br /&gt;
| Property, &amp;lt;br&amp;gt;String &lt;br /&gt;
| The timeout threshold (in milliseconds) for asynchronous function and message calls. A zero value indicates no timeout.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ascript.Arguments&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The Arguments collection manages a list of [[#ascript.Arguments.Item|Arguments]] passed to a script which has been invoked via one of the following methods of the Studio Object Model&#039;s File object:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* RunBlocking([arg1], [arg2], ...)&lt;br /&gt;
* RunNonBlocking([arg1], [arg2], ...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The default sort order of the member argument objects is the order in which the arguments were given in the call where the script was invoked.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Arguments in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Arguments.Item|Argument]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the argument at the given index. An exception is thrown if the index is out of range.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Arguments.Item|Argument]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String Name&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the argument with the given name. If a named argument doesn&#039;t exist, null is returned.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;br&amp;gt;ascript.Arguments.Item&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The ascript [[#ascript.Arguments|Arguments]] Collection&#039;s Item() method returns an Argument Object. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Name &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;, &amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | &lt;br /&gt;
The argument name. The name may have been specified in the studio automation RunBlocking() or RunNonBlocking() call that launched the script or if not specified the name is synthesized by the ascript object. &lt;br /&gt;
&lt;br /&gt;
When synthesized, the name is of the form &amp;quot;Unnamed_N&amp;quot; where &#039;N&#039; is a monotonically incremented number starting from 0.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Value&amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;, &amp;lt;br&amp;gt;String, Integer, or Object &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | The argument value.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ascript.Constants&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The Constants collection contains [[#ascript.Constants.Item|Constants]] objects that represent all constants in C/C++ source code compiled by the STRIDE compiler. Constants include all #define symbols and enumerated constants. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;void ArrangeBy (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String By [optional], &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String Order [optional]&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Sorts the Constants collection so that indexing by position yields predictable results.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;By&#039; parameter may only be &amp;quot;Name&amp;quot;. If not specified, the default is &amp;quot;Name&amp;quot;. This represents how Constants should be sorted in the collection.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;Order&#039; parameter may be either &amp;quot;Ascending&amp;quot; or &amp;quot;Descending&amp;quot;. If not specified, the default is &amp;quot;Ascending&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Exception thrown if either argument is outside legal values.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Constants in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Constants.Item|Constant]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the constant at the given index. An exception is thrown if the index is out of range.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Constants.Item|Constant]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String Name&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the constant with the given name. If a named constant doesn&#039;t exist, null is returned.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;br&amp;gt;ascript.Constants.Item&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The ascript [[#ascript.Constants|Constants]] Collection&#039;s Item() method returns a Constant object. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Name &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;, &amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | The name of the constant.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Value&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;, &amp;lt;br&amp;gt;String&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | The value of the constant.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;ascript.Database  ==&lt;br /&gt;
&lt;br /&gt;
The Database object represents the currently-loaded STRIDE database managed by ascript. You can combine the values of the database path and name to construct a fully-qualified filename. For example: &lt;br /&gt;
&lt;br /&gt;
var dbFullPath = ascript.Database.Path + &amp;quot;\\&amp;quot; + ascript.Database.Name; &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Name &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | The name of the database in use. The database name includes the &amp;quot;.sidb&amp;quot; extension.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Path&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | The path to the STRIDE database in use. The path does not contain a trailing backslash. &amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ascript.Functions&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The Functions collection represents all captured [[#ascript.Functions.Item|Function]] interfaces in the active database.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;void ArrangeBy (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String By [optional], &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String Order [optional]&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Sorts the Functions collection so that indexing by position yields predictable results.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;By&#039; parameter may be either &amp;quot;Name&amp;quot; or &amp;quot;SUID&amp;quot;. If not specified, the default is &amp;quot;Name&amp;quot;. This represents how Functions should be sorted in the collection.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;Order&#039; parameter may be either &amp;quot;Ascending&amp;quot; or &amp;quot;Descending&amp;quot;. If not specified, the default is &amp;quot;Ascending&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Exception thrown if either argument is outside legal values.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Functions in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Functions.Item|Function]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the function at the given index. An exception is thrown if the index is out of range.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Functions.Item|Function]]&amp;amp;nbsp;&#039;&#039;&#039;Item&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;String Name&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the function with the given name. A null value is returned if there is no function with the given name.&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== ascript.Functions.Item  ===&lt;br /&gt;
&lt;br /&gt;
The Function object represents a captured function interface in the currently active STRIDE database. A Function object always exists as a member of the [[#ascript.Functions|Functions]] collection.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Name &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Function&#039;s name.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Functions.Item.Owner|Owner]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Function&#039;s owner object. The owner object provides access to properties and methods used by the owner-side of the function interface. The owner-side of the interface is used by the implementor of the function.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-Only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| STRIDE Unique IDentifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-Only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains the string &amp;quot;Function&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Functions.Item.User|User]] &lt;br /&gt;
| Property&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-Only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Function&#039;s user object. The user object provides access to properties and methods used by the user-side of the function interface. The user-side of the interface is used by the caller of the function.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ascript.Functions.Item.Owner  ====&lt;br /&gt;
The Function Owner object represents the Owner (callee) side of a function. The Owner object is used to implement a function in script that can be called through the STRIDE Runtime. The Function Owner object is reachable from a [[#ascript.Functions.Item|Function]] object&#039;s owner property. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;200&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| IsOverrideRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-Only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains true if there is a registered override owner. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains true if there is a registered owner, a registered override owner, or both. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| Name &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Owner name.&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#OutPointers|OutPointers]]&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Contains the [[Functions#OutPointers|OutPointers]] payload of the Function User object. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#ParameterList|ParameterList]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Contains the object representing the [[Functions#ParameterList|ParameterList]] payload of the Function Owner. Functions without parameters will not have this property. Before calling the function, all relevent fields in the ParameterList property must be set (includeing the fields of any child objects). These values are marshaled to the currently registered Owner of the function when it is called. This property is a [[Dynamic Objects|Dynamic Object]]. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Register (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Registers the script from which it is called as the active owner of the function. If there is a currently registered owner or another registration failure, an exception is thrown. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void RegisterOverride (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Registers the script as the override registered owner. If the function already has an override registered owner or if there is another registration error, an exception is thrown. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Return ()&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Causes a return from a function call made from another script. See [[Functions#Returns|Return]] for more information. The values of OutPointers and ReturnValue will be reflected to the caller (as long as they are consistent with the input values).&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#ReturnValue|ReturnValue]]  &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Integer &lt;br /&gt;
| Contains the object representing the [[Functions#ReturnValue|ReturnValue]] payload of the Function Owner. Functions returning void will not have this property. Upon return this property will reflect the ReturnValue set by the function Owner. This property is a [[Dynamic Objects|Dynamic Object]]. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| STRIDE-unique identifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains &amp;quot;Function&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Unregister (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Unregisters the script that was registered as the owner of the function from a prior Register call. If the current script is not the owner or if unregistration fails, an exception is thrown. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void UnregisterOverride (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Unregisters the script that was registered as the override owner of the function from a prior RegisterOverride call. If the current script is not the registered override owner or if unregistration fails, an exception is thrown. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ascript.Functions.Item.User  ====&lt;br /&gt;
The Function User object represents the User (caller) side of a function. The User object is used to call a function through the STRIDE Runtime. The Function User object is reachable from a [[#ascript.Functions.Item|Function]] object&#039;s User property. &lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;280&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;90&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Call (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Synchronously calls the registered owner of the function (Blocking call). See [[Functions#Synchronous Calls (blocking)|Synchronous Calls]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void CallBypassOverride (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Synchronously calls the registered owner bypassing the registered override owner of the function (Blocking call). See [[Functions#Synchronous Calls (blocking)|Synchronous Calls]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void CallBypassOverrideNonBlocking (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Asynchronously calls the registered owner bypassing the registered override owner of the function (Non-blocking call). See [[Functions#Asynchronous Calls (non-blocking)|Asynchronous Calls]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void CallNonBlocking (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Asynchronously calls the registered owner of the function (Non-blocking call). See [[Functions#Asynchronous Calls (non-blocking)|Asynchronous Calls]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsOverrideRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains true if there is a registered override owner. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains true if there is a registered owner, a registered override owner, or both. See [[Functions#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| Name &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| User function name.&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#OutPointers|OutPointers]]&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Contains the [[Functions#OutPointers|OutPointers]] payload of the Function User object. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#ParameterList|ParameterList]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Contains the object representing the [[Functions#ParameterList|ParameterList]] payload of the Function Owner. Functions without parameters will not have this property. Before calling the function, all relevent fields in the ParameterList property must be set (includeing the fields of any child objects). These values are marshaled to the currently registered Owner of the function when it is called. This property is a [[Dynamic Objects|Dynamic Object]]. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Functions#ReturnValue|ReturnValue]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Contains the object representing the [[Functions#ReturnValue|ReturnValue]] payload of the Function Owner. Functions returning void will not have this property. Upon return this property will reflect the ReturnValue set by the function Owner. This property is a [[Dynamic Objects|Dynamic Object]]. See [[Functions#Function Payloads|Function Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;,int&lt;br /&gt;
| STRIDE-unique identifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains &amp;quot;FunctionUser&amp;quot;. This property is typically used to classify an object that is returned from [[Events#WaitForEvent|WaitForEvent]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;ascript.Messages&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The Messages Collection is a collection of captured [[#ascript.Messages.Item|Message]] objects. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;void ArrangeBy (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String By [optional], &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String Order [optional]&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Sorts the Messages collection so that indexing by position yields predictable results.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;By&#039; parameter may one of the following: &amp;quot;Name&amp;quot;, &amp;quot;SMID&amp;quot;, &amp;quot;SUID&amp;quot;, &amp;quot;Type&amp;quot;. The default sorting order is by &amp;quot;Name&amp;quot;. This represents how Timers should be sorted in the collection. A runtime exception is thrown if an invalid value is passed&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;Order&#039; parameter may be either &amp;quot;Ascending&amp;quot; or &amp;quot;Descending&amp;quot; and is not case sensitive. If not specified, the default is &amp;quot;Ascending&amp;quot;. A runtime exception is thrown if a invalid value is passed.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Messages in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Messages.Item|Message]]&amp;amp;nbsp;&#039;&#039;&#039;Item &#039;&#039;&#039;(&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the message at the given index.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.Messages.Item|Message]]&amp;amp;nbsp;&#039;&#039;&#039;Item &#039;&#039;&#039;(&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String Name&amp;lt;br&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the message with the given name.&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;br&amp;gt;ascript.Messages.Item&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The Message object represents a captured message interface in the currently active STRIDE database. A Message object is always a member of the [[#ascript.Messages|Messages]] collection.&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;120&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Message name.&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Messages.Item.Owner|Owner]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Message&#039;s owner object.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| STRIDE Unique Identifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains message type defined by the SCL declaration. Legal values include:&lt;br /&gt;
* &amp;quot;OneWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;OneWayResponse&amp;quot;&lt;br /&gt;
* &amp;quot;TwoWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;BroadcastMessage&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[#ascript.Messages.Item.User|User]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| Message&#039;s user object.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ascript.Messages.Item.Owner&amp;lt;br&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
The Message Owner object represents the Owner-side of a [[#ascript.Messages.Item|Message]]. This may be a receiver of a one-way or two-way message. It may also be the broadcaster of a broadcast message. The Owner object may be used to implement the message owner in a script that can be called through the STRIDE Runtime.&amp;lt;br&amp;gt;&lt;br /&gt;
This object allows access to the message destination. The message can be routed to any of the following:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* the original on-target receiver&lt;br /&gt;
* a window in STRIDE Studio&lt;br /&gt;
* a script running in Studio&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;210&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;80&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Broadcast (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Broadcast method exists only for Broadcast Messages. This method broadcasts this message to all message users that have subscribed to this message. The Response payload values are marshaled to all subscribed message users. See [[Messaging#Broadcast Messaging|Broadcast Messaging]] for more information. &lt;br /&gt;
|-&lt;br /&gt;
| [[Dynamic Objects|Command]]&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| This property is a [[Dynamic Objects|Dynamic Object]] representing the Command payload of the Message Owner. The property exists only if the captured message took one or more parameters. The property contains all the values of the Message User Command fields at the time that the message User called the Owner. See [[Messaging#Message Payloads|Message Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsOverrideRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains the override Owner registration state of the message. True only if there is a registered override owner. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains the Owner registration state of the message. True only if there is a registered owner, a registered override owner, or both. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| Name &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains Message name.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Register (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method only exists for One-Way Command or Two-Way Messages. The calling script is registered as the active owner of the message. If there is already a registered owner or if there is some other registration failure, an exception is thrown. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void RegisterOverride (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method only for One-Way Command or Two-Way Messages. The calling script is registered as the registered override owner (such that all future messages are routed to this owner over and above the registered owner). If there is already an override owner or if there is another registration failure, an exception is thrown. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| [[Dynamic Objects|Response]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| This property is a [[Dynamic Objects|Dynamic Object]] representing the Response payload of the Message Owner. The property exists only if the message is defined with a response payload. See [[Messaging#Message Payloads|Message Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void SendRsp (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Send response method exists only for One-Way Response or Two-Way Messages. The method sends the message as a response to a prior message command from a message user. If there is not pending message response expected an exception is thrown. After setting values of the response payload, a script that implements an Owner message calls SendRsp() to reply to an earlier two-way message (or one-way response). The effect of this call on the calling (User) script depends on how the earlier user message was sent. See [[Messaging#Point-to-Point Messaging|Point-to-Point Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| STRIDE Unique Identifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains message type defined by the SCL declaration. Legal values include:&lt;br /&gt;
* &amp;quot;OneWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;OneWayResponse&amp;quot;&lt;br /&gt;
* &amp;quot;TwoWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;BroadcastMessage&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Unregister (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method only exists for One-Way Command or Two-Way Messages. This method unregisters the current script as the owner of the message. If the current script is not the registered owner or if unregistration fails, an exception is thrown. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void UnregisterOverride (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for One-Way Command or Two-Way Messages. This method unregisters the current script as registered override owner. If the current script is not the registered override owner or if registration fails, an exception is thrown. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ascript.Messages.Item.User&amp;lt;br&amp;gt; ====&lt;br /&gt;
The Message User object represents the User-side of a [[#ascript.Messages.Item|Message]]. This may be a sender of a one-way or two-way message. It may also be the receiver of a broadcast message. The User object may be used to send a message from a script to the registered message owner through the STRIDE Runtime.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;240&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;90&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Dynamic Objects|Command]]  &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| This property is a [[Dynamic Objects|Dynamic Object]] representing the Command payload of the Message User. The property exists only if the captured message took one or more parameters. The values of all Message User Command payload fields should be set before the Message Owner is called. See [[Messaging#Message Payloads|Message Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsOverrideRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains the override Owner registration state of the message. True only if there is a registered override owner. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| IsRegistered &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| Contains the Owner registration state of the message. True only if there is a registered owner, a registered override owner, or both. See [[Messaging#Ownership vs. Usage|Ownership vs. Usage]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| Name &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains Message name.&lt;br /&gt;
|-&lt;br /&gt;
| [[Dynamic Objects|Response]] &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| This property is a [[Dynamic Objects|Dynamic Object]] representing the Response payload of the Message User. The property exists only if the message is defined with a response payload. See [[Messaging#Message Payloads|Message Payloads]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void SendAndRead (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;boolean Value&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for Two-Way Messages. See [[Messaging#Two-Way Messaging|Two-Way Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void SendAndReadBypassOverride (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;boolean Value &amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for Two-Way Messages. See [[Messaging#Two-Way Messaging|Two-Way Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void SendCmd (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for Two-Way and One-Way Command Messages. See [[Messaging#Two-Way Messaging|Two-Way Messaging]] and [[Messaging#One-Way Messaging|One-Way Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void SendCmdBypassOverride (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; boolean Value &amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for Two-Way and One-Way Command Messages. See [[Messaging#Two-Way Messaging|Two-Way Messaging]] and [[Messaging#One-Way Messaging|One-Way Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Subscribe (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| This method exists only for Broadcast Messages. This method subscribes this message owner to receive message broadcasts from the given message. See [[Messaging#Broadcast Messaging|Broadcast Messaging]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
| SUID &lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| STRIDE Unique Identifier assigned by compiler.&lt;br /&gt;
|-&lt;br /&gt;
| Type&lt;br /&gt;
| Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| Contains message type defined by the SCL declaration. Legal values include:&lt;br /&gt;
* &amp;quot;OneWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;OneWayResponse&amp;quot;&lt;br /&gt;
* &amp;quot;TwoWayMessage&amp;quot;&lt;br /&gt;
* &amp;quot;BroadcastMessage&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;void Unsubscribe (void)&#039;&#039;&#039; &lt;br /&gt;
| Method &lt;br /&gt;
| Unsubscribe method exists only for Broadcast Messages. This method unsubscribes this message owner from given message&#039;s broadcasts. See [[Messaging#Broadcast Messaging|Broadcast Messaging]] for more information.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;ascript.TestUnits&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
TestUnits is a collection of [[#ascript.TestUnits.Item|TestUnit]] Objects contained and managed through ascript. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;void ArrangeBy (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String By [optional], &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String Order [optional]&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Sorts the Test Units collection so that indexing by position yields predictable results.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;By&#039; parameter may be either &amp;quot;Name&amp;quot; or &amp;quot;SUID&amp;quot;. If not specified, the default is &amp;quot;Name&amp;quot;. This represents how Test Units should be sorted in the collection.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;Order&#039; parameter may be either &amp;quot;Ascending&amp;quot; or &amp;quot;Descending&amp;quot;. If not specified, the default is &amp;quot;Ascending&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Exception thrown if either argument is outside legal values.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Test Units in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &lt;br /&gt;
[[#ascript.TestUnits.Item|TestUnit]]&amp;amp;nbsp;&#039;&#039;&#039;Item &#039;&#039;&#039;(&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Retrieves the test unit at the given index.&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;br&amp;gt;ascript.TestUnits.Item&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The TestUnit Object represents a captured Test Unit interface in the currently active STRIDE database. A Test Unit object always exists as a member of the [[#ascript.TestUnits|TestUnits]] collection and is accessed from the collection using the item(#) interface. &lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Arguments &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Object &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains the Test Unit&#039;s parameter list payload.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | IsRegistered&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains true if the Test Unit owner has registered on the target side.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Name &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Test Unit name.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &#039;&#039;&#039;void Run (void)&#039;&#039;&#039;&amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method to run the test unit. Calling this method will run the test unit in a blocking call until the test unit completes processing.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | [[Reporter#reporter.Suites.Item|Suite]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;Object &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | An object of type Reporter&#039;s [[Reporter#reporter.Suites.Item|Suite]]. By default after a run this object is a sub-Suite of ascript.TestSuite with the same name as the Test Unit (null if no reporting performed). Setting Suite to a concrete external TestSuite prior to execution will override default creation behavior (set to null to revert to default behavior).&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Summary &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;int &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains static payload object of type srTestCaseTotals_t with one of the following:&lt;br /&gt;
* srTEST_PASS&lt;br /&gt;
* srTEST_FAIL&lt;br /&gt;
* srTEST_NOTINUSE&lt;br /&gt;
* srTEST_INPROGRESS&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Type&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains test unit type:&lt;br /&gt;
* &amp;quot;TestClass&amp;quot; &lt;br /&gt;
* &amp;quot;TestCClass&amp;quot; &lt;br /&gt;
* &amp;quot;TestFList&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;ascript.Timers&amp;lt;br&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
The Timers collection manages a set of [[#ascript.Timers.Item|Timer]] Objects. The Timers allow scripts to generate periodic or &#039;one-shot&#039; timed events. Upon creation, the Timers collection is empty. The Timers collection is the only read/write collection in STRIDE; member Timer objects can be added (implicitly created) and removed by scripts.  From the collection&#039;s point of view, member Timers have two states: dead and alive. Timers are alive upon creation and remain so as long as they exist in the collection. A Timer object that is removed from the collection is considered dead. Any operation on a dead timer will cause an exception to be thrown.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | [[#ascript.Timers.Item|Timer]] &#039;&#039;&#039;Add&#039;&#039;&#039; (&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; String Name&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Creates and adds a new timer object with the given name. Returns the new Timer object. An exception is thrown if a Timer was already created with the given name.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;void ArrangeBy (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String By [optional], &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;String Order [optional]&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Sorts the Timers collection so that indexing by position yields predictable results.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;By&#039; parameter may only be &amp;quot;Name&amp;quot;. If not specified, the default is &amp;quot;Name&amp;quot;. This represents how Timers should be sorted in the collection.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The &#039;Order&#039; parameter may be either &amp;quot;Ascending&amp;quot; or &amp;quot;Descending&amp;quot;. If not specified, the default is &amp;quot;Ascending&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;An exception is thrown if either argument is outside legal values.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Count&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Returns the number of Timers in this collection.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | [[#ascript.Timers.Item|Timer]]&amp;amp;nbsp;&#039;&#039;&#039;Item (&amp;lt;br&amp;gt;&#039;&#039;&#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Retrieves the Timer object for the given index.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | [[#ascript.Timers.Item|Timer]] &#039;&#039;&#039;Remove (&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; int Index&amp;lt;br&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | Removes the timer at the given index.&amp;lt;br&amp;gt;A timer object that is removed from the collection is automatically stopped before removal if it is active. No event is generated in this case.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;br&amp;gt;ascript.Timers.Item&amp;lt;br&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
The ascript [[#ascript.Timers|Timers]] Collection&#039;s Item() method returns a Timer Object. The Timer object enables scripting clients to synthesize and receive timer-based periodic or one-shot events.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a timer expires and rires its event, the event is queued and can be accessed by the [[Events#WaitForEvent|WaitForEvent]] method. The expired timer object will be returned by WaitForEvent.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Member&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
| bgcolor=&amp;quot;#66ff99&amp;quot; | &#039;&#039;&#039;Description&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Active &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only,&#039;&#039;&#039;&amp;lt;br&amp;gt;boolean &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains timer operation state. True if timer is in operation (i.e. it will generate an event at some time in the future). A newly created timer is inactive by default.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Duration &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;int &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Timer duration in milliseconds.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Id &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only,&#039;&#039;&#039;&amp;lt;br&amp;gt;int&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains timer identifier.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Name&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Name assigned when the timer was created. Default names are &amp;quot;Timer_n&amp;quot; where &#039;n&#039; is the nth named time created by this ascript object.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Periodic &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;boolean&amp;amp;nbsp; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | When false, the time will fire only once (one-shot mode). When true, the time automatically restarts after each event is fired. This property can be changed regardless of the state of the timer.&amp;amp;nbsp;This field is false by default when a&amp;amp;nbsp;timer is created.&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &#039;&#039;&#039;void Start&amp;amp;nbsp;(void)&#039;&#039;&#039; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Transitions an inactive timer to active. Once started, the timer will run for the length of time specified by its Duration property. Calling Start on a timer with a zero/negative duration will cause an exception to be thrown. Calling Start on a timer that has already started will also cause an exception to be thrown.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | &#039;&#039;&#039;void Stop&amp;amp;nbsp;(void)&#039;&#039;&#039; &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Method&amp;lt;br&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Transitions an active timer to inactive. Calling Stop on a timer that is not active will cause an exception to be thrown.&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; width=&amp;quot;150&amp;quot; | Type&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Property,&amp;lt;br&amp;gt;&#039;&#039;&#039;Read-only&#039;&#039;&#039;,&amp;lt;br&amp;gt;String &lt;br /&gt;
| valign=&amp;quot;top&amp;quot; align=&amp;quot;left&amp;quot; | Contains the string &amp;quot;Timer&amp;quot;. This property is typically used to classify an object that is returned from the [[Events#WaitForEvent|WaitForEvent]] method.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Carriez</name></author>
	</entry>
</feed>