Java =枚举数。下一个(0,1); 如果(result.length==0){ 打破 } checkRC(结果[0].Get(“Caption”,0,pVal,pType,plFlavor)); System.out.println(“-----------”+

Java =枚举数。下一个(0,1); 如果(result.length==0){ 打破 } checkRC(结果[0].Get(“Caption”,0,pVal,pType,plFlavor)); System.out.println(“-----------”+,java,wmi,jna,Java,Wmi,Jna,=枚举数。下一个(0,1); 如果(result.length==0){ 打破 } checkRC(结果[0].Get(“Caption”,0,pVal,pType,plFlavor)); System.out.println(“-----------”+pVal.getValue()+“-----------”; OleAuto.INSTANCE.VariantClear(pVal); checkRC(结果[0].Get(“CapabilityDescriptions”,0,pVal,pTyp

=枚举数。下一个(0,1); 如果(result.length==0){ 打破 } checkRC(结果[0].Get(“Caption”,0,pVal,pType,plFlavor)); System.out.println(“-----------”+pVal.getValue()+“-----------”; OleAuto.INSTANCE.VariantClear(pVal); checkRC(结果[0].Get(“CapabilityDescriptions”,0,pVal,pType,plFlavor)); SAFEARRAY SAFEARRAY=(SAFEARRAY)pVal.getValue(); for(int i=safeArray.getLBound(0);i
public static void main(String[] args) throws IOException, InterruptedException {
    Ole32.INSTANCE.CoInitializeEx(null, Ole32.COINIT_MULTITHREADED);

    // Connect to the server
    Wbemcli.IWbemServices svc = WbemcliUtil.connectServer("ROOT\\CIMV2");

    // Send query
    try {
        Wbemcli.IEnumWbemClassObject enumerator = svc.ExecQuery("WQL", "SELECT Caption, Capabilities, CapabilityDescriptions FROM Win32_DiskDrive",
                Wbemcli.WBEM_FLAG_FORWARD_ONLY | Wbemcli.WBEM_FLAG_RETURN_IMMEDIATELY, null);

        try {
            IWbemClassObject[] result;
            VARIANT.ByReference pVal = new VARIANT.ByReference();
            IntByReference pType = new IntByReference();
            IntByReference plFlavor = new IntByReference();
            while(true) {
                result = enumerator.Next(0, 1);
                if(result.length == 0) {
                    break;
                }
                COMUtils.checkRC(result[0].Get("Caption", 0, pVal, pType, plFlavor));
                System.out.println("---------" + pVal.getValue() + "-------------");
                OleAuto.INSTANCE.VariantClear(pVal);
                COMUtils.checkRC(result[0].Get("CapabilityDescriptions", 0, pVal, pType, plFlavor));
                SAFEARRAY safeArray = (SAFEARRAY) pVal.getValue();
                for(int i = safeArray.getLBound(0); i<=safeArray.getUBound(0); i++) {
                    System.out.println("\t" + safeArray.getElement(i));
                }
                OleAuto.INSTANCE.VariantClear(pVal);
                COMUtils.checkRC(result[0].Get("Capabilities", 0, pVal, pType, plFlavor));
                safeArray = (SAFEARRAY) pVal.getValue();
                for(int i = safeArray.getLBound(0); i<=safeArray.getUBound(0); i++) {
                    System.out.println("\t" + safeArray.getElement(i));
                }
                OleAuto.INSTANCE.VariantClear(pVal);
                result[0].Release();
            }
        } finally {
            // Cleanup
            enumerator.Release();
        }
    } finally {
        // Cleanup
        svc.Release();
    }

    Ole32.INSTANCE.CoUninitialize();
}