Windows Management Instrumentation (4)
WQL文を作成する時に、色々とパラメータを設定したいケースに対応するため、メソッドを作りました。
wmi.hに、
static String createSelect(_TCHAR *format, ...);
を追加して
wmi.cppに
/* * 文字列を整形してWQL文を構築する * param : パラメータ * * return : String */ String WmiCall::createSelect(_TCHAR *format, ...) { va_list args; va_start(args, format); _TCHAR *result = NULL; int area_len = 0; int alloc_len = 2048; do { result = (_TCHAR *)calloc(alloc_len, sizeof(_TCHAR)); if (result != NULL) { int area_len = _vsntprintf(result, alloc_len, format, args); if (area_len < 0) alloc_len += 512; } else area_len = 0; } while (area_len < 0); va_end(args); String value; if (result != NULL) { value = String(result); free(result); } return value; }
を追加しました。
String wql = WmiCall::createSelect(_T("SELECT * FROM Win32_LogicalDisk WHERE DriveType = %d"), 3, NULL);
を実行した結果が、
SELECT * FROM Win32_LogicalDisk WHERE DriveType = 3
になります。