Aracılığıyla paylaş


ExecQueryWmi işlevi

Nesneleri almak için bir sorgu yürütür.

Not

Bu API yalnızca iç kullanıma yöneliktir. Geliştirici kodundan kullanılmak üzere tasarlanmamıştır.

Sözdizimi

HRESULT ExecQueryWmi (
   [in] BSTR                    strQueryLanguage,
   [in] BSTR                    strQuery,
   [in] long                    lFlags,
   [in] IWbemContext*           pCtx,
   [out] IEnumWbemClassObject** ppEnum,
   [in] DWORD                   authLevel,
   [in] DWORD                   impLevel,
   [in] IWbemServices*          pCurrentNamespace,
   [in] BSTR                    strUser,
   [in] BSTR                    strPassword,
   [in] BSTR                    strAuthority
);

Parametreler

strQueryLanguage
[in] Windows Yönetimi tarafından desteklenen geçerli sorgu diline sahip bir dize. Wmi Sorgu Dili kısaltması olan "WQL" olmalıdır.

strQuery
[in] Sorgu metni. Bu parametre olamaz null.

lFlags
[in] Bu işlevin davranışını etkileyen bayrakların birleşimi. Aşağıdaki değerler WbemCli.h üst bilgi dosyasında tanımlanır veya bunları kodunuzda sabit olarak tanımlayabilirsiniz:

Sabit Değer Açıklama
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Ayarlanırsa işlev, geçerli bağlantının yerel ayarının yerelleştirilmiş ad alanında depolanan değiştirilmiş niteleyicileri alır.
Ayarlanmadıysa işlev yalnızca anlık ad alanında depolanan niteleyicileri alır.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 bayrağı yarı zaman uyumsuz bir çağrıya neden olur.
WBEM_FLAG_FORWARD_ONLY 0x20 işlevi yalnızca ileriye doğru bir numaralandırıcı döndürür. Genellikle, yalnızca ileriye doğru numaralandırıcılar daha hızlıdır ve geleneksel numaralandırıcılara göre daha az bellek kullanır, ancak Clone çağrılarına izin vermezler.
WBEM_FLAG_BIDIRECTIONAL 0 WMI, serbest bırakılana kadar numaralandırmadaki nesnelere yönelik işaretçileri korur.
WBEM_FLAG_ENSURE_LOCATABLE 0x100 __PATH, __RELPATHve __SERVER gibi sistem özelliklerinin olmaması için döndürülen nesnelerin içinde yeterli bilgiye sahip olmasını nullsağlar.
WBEM_FLAG_PROTOTYPE 2 Bu bayrak prototip oluşturma için kullanılır. Sorguyu yürütmez ve bunun yerine tipik bir sonuç nesnesine benzeyen bir nesne döndürür.
WBEM_FLAG_DIRECT_READ 0x200 Üst sınıfına veya alt sınıflarına bakılmaksızın belirtilen sınıf için sağlayıcıya doğrudan erişime neden olur.

Önerilen bayraklar en iyi performans için ve'tir WBEM_FLAG_RETURN_IMMEDIATELYWBEM_FLAG_FORWARD_ONLY .

pCtx
[in] Genellikle, bu değer şeklindedir null. Aksi takdirde, istenen sınıfları sağlayan sağlayıcı tarafından kullanılabilecek bir IWbemContext örneğine yönelik bir işaretçidir.

ppEnum
[out] Hata oluşmazsa, çağıranın sorgunun sonuç kümesindeki örnekleri almasını sağlayan numaralandırıcının işaretçisini alır. Sorguda sıfır örnek içeren bir sonuç kümesi olabilir. Daha fazla bilgi için Açıklamalar bölümüne bakın.

authLevel
[in] Yetkilendirme düzeyi.

impLevel
[in] Kimliğe bürünme düzeyi.

pCurrentNamespace
[in] Geçerli ad alanını temsil eden bir IWbemServices nesnesinin işaretçisi.

strUser
[in] Kullanıcı adı. Daha fazla bilgi için bkz . ConnectServerWmi işlevi.

strPassword
[in] Parola. Daha fazla bilgi için bkz . ConnectServerWmi işlevi.

strAuthority
[in] Kullanıcının etki alanı adı. Daha fazla bilgi için bkz . ConnectServerWmi işlevi.

Döndürülen değer

Bu işlev tarafından döndürülen aşağıdaki değerler WbemCli.h üst bilgi dosyasında tanımlanır veya bunları kodunuzda sabit olarak tanımlayabilirsiniz:

Sabit Değer Açıklama
WBEM_E_ACCESS_DENIED 0x80041003 Kullanıcının işlevin döndürebileceği bir veya daha fazla sınıfı görüntüleme izni yok.
WBEM_E_FAILED 0x80041001 Belirtilmemiş bir hata oluştu.
WBEM_E_INVALID_PARAMETER 0x80041008 Parametre geçerli değil.
WBEM_E_INVALID_QUERY 0x80041017 Sorguda söz dizimi hatası vardı.
WBEM_E_INVALID_QUERY_TYPE 0x80041018 İstenen sorgu dili desteklenmiyor.
WBEM_E_QUOTA_VIOLATION 0x8004106c Sorgu çok karmaşık.
WBEM_E_OUT_OF_MEMORY 0x80041006 İşlemi tamamlamak için yeterli bellek yok.
WBEM_E_SHUTTING_DOWN 0x80041033 WMI büyük olasılıkla durduruldu ve yeniden başlatıldı. ConnectServerWmi'yi yeniden arayın.
WBEM_E_TRANSPORT_FAILURE 0x80041015 Geçerli işlem ile WMI arasındaki uzak yordam çağrısı (RPC) bağlantısı başarısız oldu.
WBEM_E_NOT_FOUND 0x80041002 Sorgu, var olmayan bir sınıf belirtir.
WBEM_S_NO_ERROR 0 İşlev çağrısı başarılı oldu.

Açıklamalar

Bu işlev bir çağrıyı IWbemServices::ExecQuery yöntemine sarmalar .

Bu işlev parametresinde strQuery belirtilen sorguyu işler ve çağıranın sorgu sonuçlarına erişebileceği bir numaralandırıcı oluşturur. Numaralandırıcı bir IEnumWbemClassObject arabiriminin işaretçisidir; sorgu sonuçları , IWbemClassObject arabirimi aracılığıyla kullanılabilir hale gelen sınıf nesnelerinin örnekleridir.

WQL sorgularında kullanılabilecek ve OR anahtar sözcük sayısının AND sınırları vardır. Karmaşık bir sorguda kullanılan çok sayıda WQL anahtar sözcüğü WMI'nın (veya 0x8004106c) hata kodunu değer HRESULT olarak döndürmesine WBEM_E_QUOTA_VIOLATION neden olabilir. WQL anahtar sözcüklerinin sınırı, sorgunun ne kadar karmaşık olduğuna bağlıdır.

İşlev çağrısı başarısız olursa GetErrorInfo işlevini çağırarak ek hata bilgileri alabilirsiniz.

Gereksinimler

Platform: Bkz. Sistem Gereksinimleri.

Üstbilgi: WMINet_Utils.idl

.NET Framework Sürümleri: 4.7.2 sürümünden itibaren kullanılabilir

Ayrıca bkz.