MsiGetPropertyA-Funktion (msiquery.h)
Die MsiGetProperty--Funktion ruft den Wert für eine Installer-Eigenschaft ab.
Syntax
UINT MsiGetPropertyA(
[in] MSIHANDLE hInstall,
[in] LPCSTR szName,
[out] LPSTR szValueBuf,
[in, out] LPDWORD pcchValueBuf
);
Parameter
[in] hInstall
Behandeln Sie die Installation, die für eine benutzerdefinierte DLL-Aktion bereitgestellt wird, oder erhalten Sie über MsiOpenPackage, MsiOpenPackageEx-oder MsiOpenProduct-.
[in] szName
Eine mit Null beendete Zeichenfolge, die den Namen der Eigenschaft angibt.
[out] szValueBuf
Zeigen Sie auf den Puffer, der die beendete Zeichenfolge null empfängt, die den Wert der Eigenschaft enthält. Versuchen Sie nicht, die Größe des Puffers zu ermitteln, indem Sie für szValueBufeinen Nullwert (Wert=0) übergeben. Sie können die Größe des Puffers abrufen, indem Sie eine leere Zeichenfolge übergeben (z. B. ""). Die Funktion gibt dann ERROR_MORE_DATA zurück, und pchValueBuf- enthält die erforderliche Puffergröße in TCHARs, nicht einschließlich des endenden Nullzeichens. Bei Rückgabe von ERROR_SUCCESS enthält pcchValueBuf- die Anzahl der TCHARs, die in den Puffer geschrieben wurden, nicht einschließlich des endenden Nullzeichens.
[in, out] pcchValueBuf
Zeigen Sie auf die Variable, die die Größe des Puffers in TCHARs angibt, auf den die Variable szValueBufverweist. Wenn die Funktion ERROR_SUCCESS zurückgibt, enthält diese Variable die Größe der in szValueBufkopierten Daten, nicht einschließlich des endenden Nullzeichens. Wenn szValueBuf nicht groß genug ist, gibt die Funktion ERROR_MORE_DATA zurück und speichert die erforderliche Größe, nicht einschließlich des endenden NULL-Zeichens, in der Variablen, auf die durch pchValueBufverwiesen wird.
Rückgabewert
Diese Funktion gibt UINT zurück.
Bemerkungen
Wenn der Wert für die Eigenschaft, die von der MsiGetProperty--Funktion abgerufen wird, nicht definiert ist, entspricht sie einem 0-Länge-Wert. Es ist kein Fehler.
Wenn ERROR_MORE_DATA zurückgegeben wird, gibt der Parameter, der ein Zeiger ist, die Größe des Puffers an, der zum Halten der Zeichenfolge erforderlich ist. Wenn ERROR_SUCCESS zurückgegeben wird, gibt sie die Anzahl der Zeichen an, die in den Zeichenfolgenpuffer geschrieben wurden. Daher können Sie die Größe des Puffers abrufen, indem Sie eine leere Zeichenfolge (z. B. "") für den Parameter übergeben, der den Puffer angibt. Versuchen Sie nicht, die Größe des Puffers zu ermitteln, indem Sie einen Nullwert (Wert=0) übergeben.
Das folgende Beispiel zeigt, wie eine benutzerdefinierte DLL-Aktion auf den Wert einer Eigenschaft zugreifen kann, indem die Größe des Wertpuffers dynamisch bestimmt wird.
UINT __stdcall MyCustomAction(MSIHANDLE hInstall)
{
TCHAR* szValueBuf = NULL;
DWORD cchValueBuf = 0;
UINT uiStat = MsiGetProperty(hInstall, TEXT("MyProperty"), TEXT(""), &cchValueBuf);
//cchValueBuf now contains the size of the property's string, without null termination
if (ERROR_MORE_DATA == uiStat)
{
++cchValueBuf; // add 1 for null termination
szValueBuf = new TCHAR[cchValueBuf];
if (szValueBuf)
{
uiStat = MsiGetProperty(hInstall, TEXT("MyProperty"), szValueBuf, &cchValueBuf);
}
}
if (ERROR_SUCCESS != uiStat)
{
if (szValueBuf != NULL)
delete[] szValueBuf;
return ERROR_INSTALL_FAILURE;
}
// custom action uses MyProperty
// ...
delete[] szValueBuf;
return ERROR_SUCCESS;
}
Anmerkung
Der msiquery.h-Header definiert MsiGetProperty als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows Installer 5.0 unter Windows Server 2012, Windows 8, Windows Server 2008 R2 oder Windows 7. Windows Installer 4.0 oder Windows Installer 4.5 unter Windows Server 2008 oder Windows Vista. Windows Installer unter Windows Server 2003 oder Windows XP |
Zielplattform- | Fenster |
Header- | msiquery.h |
Library | Msi.lib |
DLL- | Msi.dll |
Siehe auch
Statuszugriffsfunktionen des Installers
Übergeben von Null als Argument von Windows Installer-Funktionen