Lo que te comentaba es que en estas líneas:
Código Delphi
[-]
if aParamDataTypeArray[i] = wbemCimtypeObject then
olePropValue := null
else
olePropValue := aParamValueArray[i];
objWMIProperty.Set_Value(olePropValue);
que es donde asignas el valor al parámetro de entrada, utilices el código que te puse anteriormente.
En las propiedades de tipos básicos se pasa el valor. Tenemos un
array of variant, y pasamos un elemento de ese array (aParamValueArray[i]).
Ese valor lo almacenamos en
olePropValue, que es del tipo
OleVariant. Al final ese valor será un string, un integer,...
En el caso de los parámetros de tipo array, empiezas con un
array de variants (en lugar de un tipo simple) y lo tienes que acabar pasando como un
OleVariant. En ese punto entra el procedimiento (o trozo de código) que te puse más arriba. Con eso pasas un
array de valores a un OleVariant. con eso ya lo tienes (creo).
Código Delphi
[-]
...
var
ArrayStrings: array Of string;
paramArr:OleVariant;
i:integer;
begin
...
paramArr := VarArrayCreate([0, High(ArrayStrings)], varVariant);
for i := Low(ArrayStrings) to High(ArrayStrings) do
paramArr[i] := ArrayStrings[i];
...
...
Es algo que estoy implementando también en GLibWMI.