The Guest SDK library now offers two new functions, get and free.
VMGuestLib_StatGet
/* Semi-structured hypervisor statistics collection, for troubleshooting. */ VMGuestLibError VMGuestLib_StatGet(const char *encoding, // IN const char *stat, // IN char **reply, // OUT size_t *replySize); // OUT
- encoding – “text” or “xml” or “json” or “yaml” – if not specified, “text” is the default.
- stat – the statistic to print. See examples below.
- reply – a pointer to be set with a buffer containing the formatted reply. All current formats return null-terminated C strings, but future formats may not; the caller should treat the buffer as binary unless the format is known. The buffer must later be freed by a call to VMGuestLib_StatFree().
- replySize – a pointer to receive the size of data in the buffer.
VMGuestLib_StatFree
To free the memory returned by VMGuestLib_StatGet, call VMGuestLib_StatFree().
void VMGuestLib_StatFree(char *reply, size_t replySize);
- reply – the pointer that was supplied by the reply parameter of VMGuestLib_StatGet().
- replySize – the size that was supplied by the replySize parameter of VMGuestLib_StatGet().
C code with StatGet and StatFree functions shows these two function calls used in a sample routine:
C code with StatGet and StatFree functions
/* * Retrieves semi-structured statistics on ESXi host. */ static int StatGetRaw(const char *encoding, // IN const char *stat, // IN const char *param) // IN { int exitStatus = EXIT_SUCCESS; VMGuestLibError glError; char *result = NULL; size_t resultSize = 0; char *arg = g_strdup_printf("%s %s", stat, param); glError = VMGuestLib_StatGet(encoding, arg, &result, &resultSize); if (glError != VMGUESTLIB_ERROR_SUCCESS) { exitStatus = EX_TEMPFAIL; } else { g_print("%*s", (int)resultSize, result); } VMGuestLib_StatFree(result, resultSize); g_free(arg); return exitStatus; }