//Internal constructor
            internal QualifierDataEnumerator(ManagementBaseObject parent, string propertyOrMethodName,
                                             QualifierType qualifierType)
            {
                this.parent = parent;
                this.propertyOrMethodName = propertyOrMethodName;
                this.qualifierType        = qualifierType;
                this.qualifierNames       = null;

                IWbemQualifierSetFreeThreaded qualifierSet = null;
                int status = (int)ManagementStatus.NoError;

                switch (qualifierType)
                {
                case QualifierType.ObjectQualifier:
                    status = parent.wbemObject.GetQualifierSet_(out qualifierSet);
                    break;

                case QualifierType.PropertyQualifier:
                    status = parent.wbemObject.GetPropertyQualifierSet_(propertyOrMethodName, out qualifierSet);
                    break;

                case QualifierType.MethodQualifier:
                    status = parent.wbemObject.GetMethodQualifierSet_(propertyOrMethodName, out qualifierSet);
                    break;

                default:
                    throw new ManagementException(ManagementStatus.Unexpected, null, null);                             // Is this the best fit error ??
                }

                // If we got an error code back, assume there are NO qualifiers for this object/property/method
                if (status < 0)
                {
                    // TODO: Should we look at specific error codes.  For example, if you ask
                    // for the qualifier set on a system property, GetPropertyQualifierSet() returns
                    // WBEM_E_SYSTEM_PROPERTY.
                    qualifierNames = new String[] {};
                }
                else
                {
                    status = qualifierSet.GetNames_(0, out qualifierNames);

                    if (status < 0)
                    {
                        if ((status & 0xfffff000) == 0x80041000)
                        {
                            ManagementException.ThrowWithExtendedInfo((ManagementStatus)status);
                        }
                        else
                        {
                            Marshal.ThrowExceptionForHR(status);
                        }
                    }
                }
            }
Example #2
0
            //Internal constructor
            internal QualifierDataEnumerator(ManagementBaseObject parent, string propertyOrMethodName,
                                             QualifierType qualifierType)
            {
                this.parent = parent;
                this.propertyOrMethodName = propertyOrMethodName;
                this.qualifierType        = qualifierType;
                this.qualifierNames       = null;

                IWbemQualifierSetFreeThreaded qualifierSet = null;
                int status = (int)ManagementStatus.NoError;

                switch (qualifierType)
                {
                case QualifierType.ObjectQualifier:
                    status = parent.wbemObject.GetQualifierSet_(out qualifierSet);
                    break;

                case QualifierType.PropertyQualifier:
                    status = parent.wbemObject.GetPropertyQualifierSet_(propertyOrMethodName, out qualifierSet);
                    break;

                case QualifierType.MethodQualifier:
                    status = parent.wbemObject.GetMethodQualifierSet_(propertyOrMethodName, out qualifierSet);
                    break;

                default:
                    throw new ManagementException(ManagementStatus.Unexpected, null, null);                             // Is this the best fit error ??
                }

                // If we got an error code back, assume there are NO qualifiers for this object/property/method
                if (status < 0)
                {
                    //


                    qualifierNames = new String[] {};
                }
                else
                {
                    status = qualifierSet.GetNames_(0, out qualifierNames);

                    if (status < 0)
                    {
                        if ((status & 0xfffff000) == 0x80041000)
                        {
                            ManagementException.ThrowWithExtendedInfo((ManagementStatus)status);
                        }
                        else
                        {
                            Marshal.ThrowExceptionForHR(status, WmiNetUtilsHelper.GetErrorInfo_f());
                        }
                    }
                }
            }
Example #3
0
            internal QualifierDataEnumerator(ManagementBaseObject parent, string propertyOrMethodName, QualifierType qualifierType)
            {
                this.index  = -1;
                this.parent = parent;
                this.propertyOrMethodName = propertyOrMethodName;
                this.qualifierType        = qualifierType;
                this.qualifierNames       = null;
                IWbemQualifierSetFreeThreaded wbemQualifierSetFreeThreaded = null;
                int           qualifierSet_  = 0;
                QualifierType qualifierType1 = qualifierType;

                if (qualifierType1 == QualifierType.ObjectQualifier)
                {
                    qualifierSet_ = parent.wbemObject.GetQualifierSet_(out wbemQualifierSetFreeThreaded);
                }
                else if (qualifierType1 == QualifierType.PropertyQualifier)
                {
                    qualifierSet_ = parent.wbemObject.GetPropertyQualifierSet_(propertyOrMethodName, out wbemQualifierSetFreeThreaded);
                }
                else if (qualifierType1 == QualifierType.MethodQualifier)
                {
                    qualifierSet_ = parent.wbemObject.GetMethodQualifierSet_(propertyOrMethodName, out wbemQualifierSetFreeThreaded);
                }
                else
                {
                    throw new ManagementException(ManagementStatus.Unexpected, null, null);
                }
                if (qualifierSet_ >= 0)
                {
                    qualifierSet_ = wbemQualifierSetFreeThreaded.GetNames_(0, out this.qualifierNames);
                    if (qualifierSet_ < 0)
                    {
                        if (((long)qualifierSet_ & (long)-4096) != (long)-2147217408)
                        {
                            Marshal.ThrowExceptionForHR(qualifierSet_);
                        }
                        else
                        {
                            ManagementException.ThrowWithExtendedInfo((ManagementStatus)qualifierSet_);
                            return;
                        }
                    }
                    return;
                }
                else
                {
                    this.qualifierNames = new string[0];
                    return;
                }
            }
Example #4
0
            internal QualifierDataEnumerator(ManagementBaseObject parent, string propertyOrMethodName, QualifierType qualifierType)
            {
                this.parent = parent;
                this.propertyOrMethodName = propertyOrMethodName;
                this.qualifierType        = qualifierType;
                this.qualifierNames       = null;
                IWbemQualifierSetFreeThreaded ppQualSet = null;
                int errorCode = 0;

                switch (qualifierType)
                {
                case QualifierType.ObjectQualifier:
                    errorCode = parent.wbemObject.GetQualifierSet_(out ppQualSet);
                    break;

                case QualifierType.PropertyQualifier:
                    errorCode = parent.wbemObject.GetPropertyQualifierSet_(propertyOrMethodName, out ppQualSet);
                    break;

                case QualifierType.MethodQualifier:
                    errorCode = parent.wbemObject.GetMethodQualifierSet_(propertyOrMethodName, out ppQualSet);
                    break;

                default:
                    throw new ManagementException(ManagementStatus.Unexpected, null, null);
                }
                if (errorCode < 0)
                {
                    this.qualifierNames = new string[0];
                }
                else
                {
                    errorCode = ppQualSet.GetNames_(0, out this.qualifierNames);
                    if (errorCode < 0)
                    {
                        if ((errorCode & 0xfffff000L) == 0x80041000L)
                        {
                            ManagementException.ThrowWithExtendedInfo((ManagementStatus)errorCode);
                        }
                        else
                        {
                            Marshal.ThrowExceptionForHR(errorCode);
                        }
                    }
                }
            }