at least 1 CLSCompliant overload per function. EfxReverb.cs sample plays fine with int overloads.

This commit is contained in:
chrisbrandtner 2008-02-11 10:11:58 +00:00
parent 15a97e4628
commit ed2bd2b0b6
3 changed files with 372 additions and 10 deletions

View file

@ -13,6 +13,8 @@ using System.Security;
using OpenTK.Math;
[assembly:CLSCompliant(true)]
/* Type Mapping
// 8-bit boolean
typedef char ALboolean;
@ -68,7 +70,7 @@ namespace OpenTK.OpenAL
// AL = Audio Library
[CLSCompliant( true )]
public static partial class AL
public static class AL
{
#region Constants

View file

@ -31,6 +31,15 @@ namespace OpenTK.OpenAL
Imported_alEffecti(eid,Enums.EfxEffecti.EffectType,(int) type);
}
/// <summary>(Helper) Selects the Effect type used by this Effect handle.</summary>
/// <param name="eid">Effect id returned from a successful call to GenEffects.</param>
/// <param name="type">Effect type.</param>
[CLSCompliant( true )]
public void BindEffect( int eid, Enums.EfxEffectType type )
{
Imported_alEffecti( (uint)eid, Enums.EfxEffecti.EffectType, (int) type );
}
#endregion BindEffect
#region BindFilterToSource
@ -44,6 +53,15 @@ namespace OpenTK.OpenAL
AL.Source(source,Enums.ALSourcei.EfxDirectFilter,(int) filter);
}
/// <summary>(Helper) reroutes the output of a Source through a Filter.</summary>
/// <param name="source">A valid Source handle.</param>
/// <param name="filter">A valid Filter handle.</param>
[CLSCompliant( true )]
public void BindFilterToSource( int source, int filter )
{
AL.Source( (uint)source, Enums.ALSourcei.EfxDirectFilter, (int) filter );
}
#endregion BindFilterToSource
#region BindEffectToAuxiliarySlot
@ -57,6 +75,15 @@ namespace OpenTK.OpenAL
AuxiliaryEffectSlot(auxiliaryeffectslot,Enums.EfxAuxiliaryi.EffectslotEffect,(int) effect);
}
/// <summary>(Helper) Attaches an Effect to an Auxiliary Effect Slot.</summary>
/// <param name="auxiliaryeffectslot">The slot handle to attach the Effect to.</param>
/// <param name="effect">The Effect handle that is being attached.</param>
[CLSCompliant( true )]
public void BindEffectToAuxiliarySlot( int auxiliaryeffectslot, int effect )
{
AuxiliaryEffectSlot( (uint)auxiliaryeffectslot, Enums.EfxAuxiliaryi.EffectslotEffect, (int) effect );
}
#endregion BindEffectToAuxiliarySlot
#region BindSourceToAuxiliarySlot
@ -69,7 +96,18 @@ namespace OpenTK.OpenAL
[CLSCompliant(false)]
public void BindSourceToAuxiliarySlot( uint source,uint slot,int slotnumber,uint filter )
{
AL.Source(source,Enums.ALSource3i.EfxAuxiliarySendFilter,(int) slot,slotnumber,(int) filter);
AL.Source( source, Enums.ALSource3i.EfxAuxiliarySendFilter, (int) slot, (int) slotnumber, (int) filter );
}
/// <summary>(Helper) Reroutes a Source's output into an Auxiliary Effect Slot.</summary>
/// <param name="source">The Source handle who's output is forwarded.</param>
/// <param name="slot">The Auxiliary Effect Slot handle that receives input from the Source.</param>
/// <param name="slotnumber">Every Source has only a limited number of slots it can feed data to. The number must stay below AlcContextAttributes.EfxMaxAuxiliarySends</param>
/// <param name="filter">Filter handle to be attached between Source ouput and Auxiliary Slot input. Use 0 or EfxFilterType.FilterNull for no filter. </param>
[CLSCompliant( true )]
public void BindSourceToAuxiliarySlot( int source, int slot, int slotnumber, int filter )
{
AL.Source( (uint)source, Enums.ALSource3i.EfxAuxiliarySendFilter, (int) slot,(int) slotnumber, (int) filter );
}
#endregion BindSourceToAuxiliarySlot
@ -104,9 +142,25 @@ namespace OpenTK.OpenAL
}
}
[CLSCompliant(false)]
/// <summary>The GenEffects function is used to create one or more Effect objects. An Effect object stores an effect type and a set of parameter values to control that Effect. In order to use an Effect it must be attached to an Auxiliary Effect Slot object</summary>
/// <remarks>After creation an Effect has no type (EfxEffectType.Null), so before it can be used to store a set of parameters, the application must specify what type of effect should be stored in the object, using Effect() with EfxEffecti.</remarks>
/// <param name="n">Number of Effects to be created.</param>
/// <param name="effects">Pointer addressing sufficient memory to store n Effect object identifiers.</param>
[CLSCompliant( true )]
public void GenEffects( int n, out int[] effects )
{
uint[] temp = new uint[n];
GenEffects( n, out temp[0] );
effects = new int[n];
for ( int i = 0; i < n; i++ )
{
effects[i] = (int) temp[i];
}
}
/// <summary>This function generates only one Effect.</summary>
/// <param name="effect">Storage UInt32 for the new effect name/handle.</param>
[CLSCompliant( false )]
public void GenEffects( out uint effect )
{
unsafe
@ -118,6 +172,16 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function generates only one Effect.</summary>
/// <param name="effect">Storage UInt32 for the new effect name/handle.</param>
[CLSCompliant( true )]
public void GenEffects( out int effect )
{
uint temp;
GenEffects( out temp );
effect = (int) temp;
}
#endregion alGenEffects
#region alDeleteEffects
@ -144,6 +208,20 @@ namespace OpenTK.OpenAL
}
}
/// <summary>The DeleteEffects function is used to delete and free resources for Effect objects previously created with GenEffects.</summary>
/// <param name="n">Number of Effects to be deleted.</param>
/// <param name="effects">Pointer to n Effect object identifiers.</param>
[CLSCompliant( true )]
public void DeleteEffects( int n, ref int[] effects )
{
uint[] temp = new uint[n];
for ( int i = 0; i < n; i++ )
{
temp[i] = (uint) effects[i];
}
DeleteEffects( n, ref temp );
}
/// <summary>This function deletes one Effect only.</summary>
/// <param name="effect">Pointer to an effect name/handle identifying the Effect Object to be deleted.</param>
[CLSCompliant(false)]
@ -158,6 +236,15 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function deletes one Effect only.</summary>
/// <param name="effect">Pointer to an effect name/handle identifying the Effect Object to be deleted.</param>
[CLSCompliant( false )]
public void DeleteEffects( ref int effect )
{
uint temp = (uint) effect;
DeleteEffects( ref temp );
}
#endregion alDeleteEffects
#region alIsEffect
@ -178,6 +265,15 @@ namespace OpenTK.OpenAL
return Imported_alIsEffect(eid);
}
/// <summary>The IsEffect function is used to determine if an object identifier is a valid Effect object.</summary>
/// <param name="eid">Effect identifier to validate.</param>
/// <returns>True if the identifier is a valid Effect, False otherwise.</returns>
[CLSCompliant( true )]
public bool IsEffect( int eid )
{
return Imported_alIsEffect( (uint) eid );
}
#endregion alIsEffect
#region alEffecti
@ -199,6 +295,16 @@ namespace OpenTK.OpenAL
Imported_alEffecti(eid,param,value);
}
/// <summary>This function is used to set integer properties on Effect objects.</summary>
/// <param name="eid">Effect object identifier.</param>
/// <param name="param">Effect property to set.</param>
/// <param name="value">Integer value.</param>
[CLSCompliant( true )]
public void Effect( int eid, Enums.EfxEffecti param, int value )
{
Imported_alEffecti( (uint)eid, param, value );
}
#endregion alEffecti
#region alEffectf
@ -220,6 +326,16 @@ namespace OpenTK.OpenAL
Imported_alEffectf(eid,param,value);
}
/// <summary>This function is used to set floating point properties on Effect objects.</summary>
/// <param name="eid">Effect object identifier.</param>
/// <param name="param">Effect property to set.</param>
/// <param name="value">Floating point value.</param>
[CLSCompliant( true )]
public void Effect( int eid, Enums.EfxEffectf param, float value )
{
Imported_alEffectf((uint) eid, param, value );
}
#endregion alEffectf
#region alEffectfv
@ -231,6 +347,10 @@ namespace OpenTK.OpenAL
//[CLSCompliant(false)]
private Delegate_alEffectfv Imported_alEffectfv;
/// <summary>This function is used to set 3 floating point properties on Effect objects.</summary>
/// <param name="eid">Effect object identifier.</param>
/// <param name="param">Effect property to set.</param>
/// <param name="values">Pointer to Math.Vector3.</param>
[CLSCompliant(false)]
public void Effect( uint eid,Enums.EfxEffect3f param,ref Vector3 values )
{
@ -243,6 +363,16 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function is used to set 3 floating point properties on Effect objects.</summary>
/// <param name="eid">Effect object identifier.</param>
/// <param name="param">Effect property to set.</param>
/// <param name="values">Pointer to Math.Vector3.</param>
[CLSCompliant( true )]
public void Effect( int eid, Enums.EfxEffect3f param, ref Vector3 values )
{
Effect( (uint) eid, param, ref values );
}
#endregion alEffectfv
#region alGetEffecti
@ -270,6 +400,16 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function is used to retrieve integer properties from Effect objects.</summary>
/// <param name="eid">Effect object identifier.</param>
/// <param name="pname">Effect property to retrieve.</param>
/// <param name="value">Address where integer value will be stored.</param>
[CLSCompliant( true )]
public void GetEffect( int eid, Enums.EfxEffecti pname, out int value )
{
GetEffect((uint)eid, pname, out value );
}
#endregion alGetEffecti
#region alGetEffectf
@ -297,6 +437,16 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function is used to retrieve floating point properties from Effect objects.</summary>
/// <param name="eid">Effect object identifier.</param>
/// <param name="pname">Effect property to retrieve.</param>
/// <param name="value">Address where floating point value will be stored.</param>
[CLSCompliant( true )]
public void GetEffect( int eid, Enums.EfxEffectf pname, out float value )
{
GetEffect( (uint) eid, pname, out value );
}
#endregion alGetEffectf
#region alGetEffectfv
@ -308,6 +458,10 @@ namespace OpenTK.OpenAL
//[CLSCompliant(false)]
private Delegate_alGetEffectfv Imported_alGetEffectfv;
/// <summary>This function is used to retrieve 3 floating point properties from Effect objects.</summary>
/// <param name="eid">Effect object identifier.</param>
/// <param name="pname">Effect property to retrieve.</param>
/// <param name="value">A Math.Vector3 to hold the values.</param>
[CLSCompliant(false)]
public void GetEffect( uint eid,Enums.EfxEffect3f param,out Vector3 values )
{
@ -323,6 +477,16 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function is used to retrieve 3 floating point properties from Effect objects.</summary>
/// <param name="eid">Effect object identifier.</param>
/// <param name="pname">Effect property to retrieve.</param>
/// <param name="value">A Math.Vector3 to hold the values.</param>
[CLSCompliant( true )]
public void GetEffect( int eid, Enums.EfxEffect3f param, out Vector3 values )
{
GetEffect( (uint) eid, param, out values );
}
#endregion alGetEffectfv
// Not used:
@ -359,9 +523,25 @@ namespace OpenTK.OpenAL
}
}
[CLSCompliant(false)]
/// <summary>The GenFilters function is used to create one or more Filter objects. A Filter object stores a filter type and a set of parameter values to control that Filter. Filter objects can be attached to Sources as Direct Filters or Auxiliary Send Filters.</summary>
/// <remarks>After creation a Filter has no type (EfxFilterType.Null), so before it can be used to store a set of parameters, the application must specify what type of filter should be stored in the object, using Filter() with EfxFilteri.</remarks>
/// <param name="n">Number of Filters to be created.</param>
/// <param name="filters">Pointer addressing sufficient memory to store n Filter object identifiers.</param>
[CLSCompliant( true )]
public void GenFilters( int n, out int[] filters )
{
uint[] temp = new uint[n];
GenFilters( n, out temp[0] );
filters = new int[n];
for ( int i = 0; i < n; i++ )
{
filters[i] = (int) temp[i];
}
}
/// <summary>This function generates only one Filter.</summary>
/// <param name="filter">Storage UInt32 for the new filter name/handle.</param>
[CLSCompliant( false )]
public void GenFilters( out uint filter )
{
unsafe
@ -373,6 +553,16 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function generates only one Filter.</summary>
/// <param name="filter">Storage UInt32 for the new filter name/handle.</param>
[CLSCompliant( true )]
public void GenFilters( out int filter )
{
uint temp;
GenFilters( out temp );
filter = (int) temp;
}
#endregion alGenFilters
#region alDeleteFilters
@ -399,6 +589,20 @@ namespace OpenTK.OpenAL
}
}
/// <summary>The DeleteFilters function is used to delete and free resources for Filter objects previously created with GenFilters.</summary>
/// <param name="n">Number of Filters to be deleted.</param>
/// <param name="filters">Pointer to n Filter object identifiers.</param>
[CLSCompliant( true )]
public void DeleteFilters( int n, ref int[] filters )
{
uint[] temp = new uint[n];
for ( int i = 0; i < n; i++ )
{
temp[i] = (uint) filters[i];
}
DeleteFilters( n, ref temp );
}
/// <summary>This function deletes one Filter only.</summary>
/// <param name="filter">Pointer to an filter name/handle identifying the Filter Object to be deleted.</param>
[CLSCompliant(false)]
@ -413,6 +617,15 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function deletes one Filter only.</summary>
/// <param name="filter">Pointer to an filter name/handle identifying the Filter Object to be deleted.</param>
[CLSCompliant( true )]
public void DeleteFilters( ref int filter )
{
uint temp = (uint) filter;
DeleteFilters( ref temp );
}
#endregion alDeleteFilters
#region alIsFilter
@ -433,6 +646,15 @@ namespace OpenTK.OpenAL
return Imported_alIsFilter(fid);
}
/// <summary>The IsFilter function is used to determine if an object identifier is a valid Filter object.</summary>
/// <param name="fid">Effect identifier to validate.</param>
/// <returns>True if the identifier is a valid Filter, False otherwise.</returns>
[CLSCompliant( true )]
public bool IsFilter( int fid )
{
return Imported_alIsFilter( (uint) fid );
}
#endregion alIsFilter
#region alFilteri
@ -454,6 +676,16 @@ namespace OpenTK.OpenAL
Imported_alFilteri(fid,param,value);
}
/// <summary>This function is used to set integer properties on Filter objects.</summary>
/// <param name="fid">Filter object identifier.</param>
/// <param name="param">Effect property to set.</param>
/// <param name="value">Integer value.</param>
[CLSCompliant( true )]
public void Filter( int fid, Enums.EfxFilteri param, int value )
{
Imported_alFilteri( (uint)fid, param, value );
}
#endregion alFilteri
#region alFilterf
@ -475,6 +707,16 @@ namespace OpenTK.OpenAL
Imported_alFilterf(fid,param,value);
}
/// <summary>This function is used to set floating point properties on Filter objects.</summary>
/// <param name="fid">Filter object identifier.</param>
/// <param name="param">Effect property to set.</param>
/// <param name="value">Floating point value.</param>
[CLSCompliant( true )]
public void Filter( int fid, Enums.EfxFilterf param, float value )
{
Imported_alFilterf( (uint)fid, param, value );
}
#endregion alFilterf
#region alGetFilteri
@ -502,6 +744,16 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function is used to retrieve integer properties from Filter objects.</summary>
/// <param name="fid">Filter object identifier.</param>
/// <param name="pname">Effect property to retrieve.</param>
/// <param name="value">Address where integer value will be stored.</param>
[CLSCompliant( true )]
public void GetFilter( int fid, Enums.EfxFilteri pname, out int value )
{
GetFilter( (uint) fid, pname, out value );
}
#endregion alGetFilteri
#region alGetFilterf
@ -529,6 +781,16 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function is used to retrieve floating point properties from Filter objects.</summary>
/// <param name="fid">Filter object identifier.</param>
/// <param name="pname">Effect property to retrieve.</param>
/// <param name="value">Address where floating point value will be stored.</param>
[CLSCompliant( true )]
public void GetFilter( int fid, Enums.EfxFilterf pname, out float value )
{
GetFilter( (uint) fid, pname, out value );
}
#endregion alGetFilterf
// Not used:
@ -541,8 +803,6 @@ namespace OpenTK.OpenAL
#region Auxiliary Effect Slot Object
#region alGenAuxiliaryEffectSlots
//[CLSCompliant(false)]
@ -569,10 +829,27 @@ namespace OpenTK.OpenAL
}
}
[CLSCompliant(false)]
/// <summary>The GenAuxiliaryEffectSlots function is used to create one or more Auxiliary Effect Slots. The number of slots that can be created will be dependant upon the Open AL device used.</summary>
/// <remarks>An application should check the OpenAL error state after making this call to determine if the Effect Slot was successfully created. If the function call fails then none of the requested Effect Slots are created. A good strategy for creating any OpenAL object is to use a for-loop and generate one object each loop iteration and then check for an error condition. If an error is set then the loop can be broken and the application can determine if sufficient resources are available.</remarks>
/// <param name="n">Number of Auxiliary Effect Slots to be created.</param>
/// <param name="slots">Pointer addressing sufficient memory to store n Effect Slot object identifiers.</param>
[CLSCompliant( true )]
public void GenAuxiliaryEffectSlots( int n, out int[] slots )
{
uint[] temp = new uint[n];
GenAuxiliaryEffectSlots( n, out temp[0] );
slots = new int[n];
for ( int i = 0; i < n; i++ )
{
slots[i] = (int) temp[i];
}
}
/// <summary>This function generates only one Auxiliary Effect Slot.</summary>
/// <param name="slot">Storage UInt32 for the new auxiliary effect slot name/handle.</param>
public void GenAuxiliaryEffectSlots( out uint slot )
[CLSCompliant( false )]
public void GenAuxiliaryEffectSlots( out uint slot )
{
unsafe
{
@ -583,6 +860,17 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function generates only one Auxiliary Effect Slot.</summary>
/// <param name="slot">Storage UInt32 for the new auxiliary effect slot name/handle.</param>
[CLSCompliant( true)]
public void GenAuxiliaryEffectSlots( out int slot )
{
uint temp;
GenAuxiliaryEffectSlots( out temp );
slot = (int) temp;
}
#endregion alGenAuxiliaryEffectSlots
#region alDeleteAuxiliaryEffectSlots
@ -609,6 +897,20 @@ namespace OpenTK.OpenAL
}
}
/// <summary>The DeleteAuxiliaryEffectSlots function is used to delete and free resources for Auxiliary Effect Slots previously created with GenAuxiliaryEffectSlots.</summary>
/// <param name="n">Number of Auxiliary Effect Slots to be deleted.</param>
/// <param name="slots">Pointer to n Effect Slot object identifiers.</param>
[CLSCompliant( true )]
public void DeleteAuxiliaryEffectSlots( int n, ref int[] slots )
{
uint[] temp = new uint[n];
for ( int i = 0; i < n; i++ )
{
temp[i] = (uint) slots[i];
}
DeleteAuxiliaryEffectSlots( n, ref temp );
}
/// <summary>This function deletes one AuxiliaryEffectSlot only.</summary>
/// <param name="slot">Pointer to an auxiliary effect slot name/handle identifying the Auxiliary Effect Slot Object to be deleted.</param>
[CLSCompliant(false)]
@ -623,6 +925,15 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function deletes one AuxiliaryEffectSlot only.</summary>
/// <param name="slot">Pointer to an auxiliary effect slot name/handle identifying the Auxiliary Effect Slot Object to be deleted.</param>
[CLSCompliant( true )]
public void DeleteAuxiliaryEffectSlots( ref int slot )
{
uint temp = (uint) slot;
DeleteAuxiliaryEffectSlots( ref temp );
}
#endregion alDeleteAuxiliaryEffectSlots
#region alIsAuxiliaryEffectSlot
@ -643,6 +954,15 @@ namespace OpenTK.OpenAL
return Imported_alIsAuxiliaryEffectSlot(slot);
}
/// <summary>The IsAuxiliaryEffectSlot function is used to determine if an object identifier is a valid Auxiliary Effect Slot object.</summary>
/// <param name="slot">Effect Slot object identifier to validate.</param>
/// <returns>True if the identifier is a valid Auxiliary Effect Slot, False otherwise.</returns>
[CLSCompliant(true)]
public bool IsAuxiliaryEffectSlot( int slot )
{
return Imported_alIsAuxiliaryEffectSlot( (uint)slot );
}
#endregion alIsAuxiliaryEffectSlot
#region alAuxiliaryEffectSloti
@ -664,6 +984,16 @@ namespace OpenTK.OpenAL
Imported_alAuxiliaryEffectSloti(asid,param,value);
}
/// <summary>This function is used to set integer properties on Auxiliary Effect Slot objects.</summary>
/// <param name="asid">Auxiliary Effect Slot object identifier.</param>
/// <param name="param">Auxiliary Effect Slot property to set.</param>
/// <param name="value">Integer value.</param>
[CLSCompliant( true )]
public void AuxiliaryEffectSlot( int asid, Enums.EfxAuxiliaryi param, int value )
{
Imported_alAuxiliaryEffectSloti( (uint)asid, param, value );
}
#endregion alAuxiliaryEffectSloti
#region alAuxiliaryEffectSlotf
@ -685,6 +1015,16 @@ namespace OpenTK.OpenAL
Imported_alAuxiliaryEffectSlotf(asid,param,value);
}
/// <summary>This function is used to set floating point properties on Auxiliary Effect Slot objects.</summary>
/// <param name="asid">Auxiliary Effect Slot object identifier.</param>
/// <param name="param">Auxiliary Effect Slot property to set.</param>
/// <param name="value">Floating point value.</param>
[CLSCompliant( true )]
public void AuxiliaryEffectSlot( int asid, Enums.EfxAuxiliaryf param, float value )
{
Imported_alAuxiliaryEffectSlotf( (uint)asid, param, value );
}
#endregion alAuxiliaryEffectSlotf
#region alGetAuxiliaryEffectSloti
@ -712,6 +1052,16 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function is used to retrieve integer properties on Auxiliary Effect Slot objects.</summary>
/// <param name="asid">Auxiliary Effect Slot object identifier.</param>
/// <param name="pname">Auxiliary Effect Slot property to retrieve.</param>
/// <param name="value">Address where integer value will be stored.</param>
[CLSCompliant( true )]
public void GetAuxiliaryEffectSlot( int asid, Enums.EfxAuxiliaryi pname, out int value )
{
GetAuxiliaryEffectSlot( (uint) asid, pname, out value );
}
#endregion alGetAuxiliaryEffectSloti
#region alGetAuxiliaryEffectSlotf
@ -739,6 +1089,16 @@ namespace OpenTK.OpenAL
}
}
/// <summary>This function is used to retrieve floating properties on Auxiliary Effect Slot objects.</summary>
/// <param name="asid">Auxiliary Effect Slot object identifier.</param>
/// <param name="pname">Auxiliary Effect Slot property to retrieve.</param>
/// <param name="value">Address where floating point value will be stored.</param>
[CLSCompliant( true )]
public void GetAuxiliaryEffectSlot( int asid, Enums.EfxAuxiliaryf pname, out float value )
{
GetAuxiliaryEffectSlot( (uint) asid, pname, out value );
}
#endregion alGetAuxiliaryEffectSlotf
// Not used:

View file

@ -14,9 +14,9 @@ using System.Runtime.InteropServices;
namespace OpenTK.OpenAL
{
/// <summary>The X-Ram Extension is provided on the top-end Sound Blaster X-Fi solutions (Sound Blaster X-Fi Fatal1ty, Sound Blaster X-Fi Elite Pro, or later). These products feature 64MB of X-Ram that can only be used for audio purposes, which can be controlled by this Extension.</summary>
///<summary>The X-Ram Extension is provided on the top-end Sound Blaster X-Fi solutions (Sound Blaster X-Fi Fatal1ty, Sound Blaster X-Fi Elite Pro, or later). These products feature 64MB of X-Ram that can only be used for audio purposes, which can be controlled by this Extension.</summary>
[CLSCompliant( true )]
public class XRamExtension
public sealed class XRamExtension
{
#region Instance state