Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

144 lines
4.8 KiB

'***************************************************************************
'This script tests the manipulation of property values, in the case that the
'property is an embedded type
'***************************************************************************
Set Service = GetObject("winmgmts:root/default")
On Error Resume Next
'*******************************
'Create an embedded object class
'*******************************
'
' [woobit(24.5)]
' class EmObjInner {
' [key] uint32 pInner = 10;
' };
'
Set EmbObjInner = Service.Get()
EmbObjInner.Path_.Class = "EmbObjInner"
EmbObjInner.Qualifiers_.Add "woobit", 24.5
Set Property = EmbObjInner.Properties_.Add ("pInner", 19)
Property.Qualifiers_.Add "key", true
Property.Value = 10
EmbObjInner.Put_
Set EmbObjInner = Service.Get("EmbObjInner")
if Err <> 0 Then
WScript.Echo Err.Description
Err.Clear
End if
'************************************
'Create another embedded object class
'************************************
'
' [wazzuck("oxter")]
' class EmbObjOuter {
' uint32 p0 = 25;
' EmbObjInner pOuter = instance of EmbObjInner { pInner = 564; };
' EmbObjInner pOuterArray[] = {
' instance of EmbObjInner { pInner = 0; },
' instance of EmbObjInner { pInner = 1; },
' instance of EmbObjInner { pInner = 2; }
' };
' };
Set EmbObjOuter = Service.Get()
EmbObjOuter.Path_.Class = "EmbObjOuter"
EmbObjOuter.Qualifiers_.Add "wazzuck", "oxter"
EmbObjOuter.Properties_.Add ("p0", 19).Value = 25
Set Property = EmbObjOuter.Properties_.Add ("pOuter", 13)
Set Instance = EmbObjInner.SpawnInstance_
Instance.pInner = 564
Property.Value = Instance
' Add an array of embedded objects property
Set Property = EmbObjOuter.Properties_.Add ("pOuterArray", 13, true)
Property.Qualifiers_.Add "cimtype","object:EmbObjInner"
Set Instance0 = EmbObjInner.SpawnInstance_
Instance0.pInner = 0
Set Instance1 = EmbObjInner.SpawnInstance_
Instance1.pInner = 1
Set Instance2 = EmbObjInner.SpawnInstance_
Instance2.pInner = 2
Property.Value = Array (Instance0, Instance1, Instance2)
Set Instance3 = EmbObjInner.SpawnInstance_
Instance3.pInner = 42
Property.Value(3) = Instance3
Set Instance4 = EmbObjInner.SpawnInstance_
Instance4.pInner = 78
EmbObjOuter.pOuterArray (4) = Instance4
EmbObjOuter.Put_
Set EmbObjOuter = Service.Get("EmbObjOuter")
if Err <> 0 Then
WScript.Echo Err.Description
Err.Clear
End if
'Create a final class which wraps both embedded objects
'
'
Set aClass = Service.Get()
aClass.Path_.Class = "EMBPROPTEST01"
Set Property = aClass.Properties_.Add ("p1", 13)
Set Instance = EmbObjOuter.SpawnInstance_
Instance.p0 = 2546
Property.Value = Instance
aClass.Put_
WScript.Echo "The initial value of p0 is [2546]", Property.Value.p0
WScript.Echo "The initial value of p0 is [2546]", aClass.Properties_("p1").Value.Properties_("p0")
WScript.Echo "The initial value of pInner is [564]", Property.Value.pOuter.pInner
WScript.Echo "The initial value of pInner is [564]", _
aClass.Properties_("p1").Value.Properties_("pOuter").Value.Properties_("pInner")
WScript.Echo "The initial value of EMBPROPTEST01.p1.pOuterArray(0).pInner is [0]:", aClass.p1.pOuterArray(0).pInner
WScript.Echo "The initial value of EMBPROPTEST01.p1.pOuterArray(1).pInner is [1]:", aClass.p1.pOuterArray(1).pInner
WScript.Echo "The initial value of EMBPROPTEST01.p1.pOuterArray(2).pInner is [2]:", aClass.p1.pOuterArray(2).pInner
WScript.Echo "The initial value of EMBPROPTEST01.p1.pOuterArray(3).pInner is [42]:", aClass.p1.pOuterArray(3).pInner
Set aClass = Service.Get("EMBPROPTEST01")
'Now try direct assignment to the outer emb obj
aClass.p1.p0 = 23
WScript.Echo "The new value of p0 is [23]", aClass.p1.p0
Set Property = aClass.p1
Property.p0 = 787
WScript.Echo "The new value of p0 is [787]", aClass.p1.p0
aClass.Properties_("p1").Value.p0 = 56
WScript.Echo "The new value of p0 is [56]", aClass.p1.p0
'Now try direct assignment to the inner emb obj
aClass.p1.pOuter.pInner = 4
WScript.Echo "The new value of pInner is [4]", aClass.p1.pOuter.pInner
Set Property = aClass.p1.pOuter
Property.pInner = 12
WScript.Echo "The new value of pInner is [12]", aClass.p1.pOuter.pInner
'Now try assignment to the inner emb obj array
aClass.p1.pOuterArray(1).pInner = 5675
WScript.Echo "The new value of Class.p1.pOuterArray(1).pInner is [5675]", aClass.p1.pOuterArray(1).pInner
'None of the following will work because VBSCript needs to be told explicitly when to use
'a default automation property (i.e. they all require resolution to the "Value" property
'WScript.Echo "The initial value of p1 is", Class.Properties_("p1").p
'WScript.Echo "The initial value of p1 is", Class.Properties_("p1").Properties_("p")
'WScript.Echo "The initial value of p1 is", Property.p
if Err <> 0 Then
WScript.Echo Err.Description
Err.Clear
End if