34#include "mmdeviceapi.h"
35#include "wine/fil_data.h"
71 IUnknown_AddRef(iface);
72 *ppobj = &
This->IDxDiagProvider_iface;
86 TRACE(
"(%p)->(ref before=%lu)\n",
This, refCount - 1);
98 TRACE(
"(%p)->(ref before=%lu)\n",
This, refCount + 1);
117 TRACE(
"(%p,%p)\n", iface, pParams);
119 if (
NULL == pParams) {
127 if (!
This->info_root)
140 IDxDiagContainer **ppInstance)
144 TRACE(
"(%p,%p)\n", iface, ppInstance);
151 &
This->IDxDiagProvider_iface, (
void **)ppInstance);
258 ++
node->nSubContainers;
365 DWORD *pid_list, alloc_bytes = 1024 *
sizeof(*pid_list), needed_bytes;
386 if (alloc_bytes != needed_bytes)
396 pid_list = realloc_list;
399 *
list_count = needed_bytes /
sizeof(*pid_list);
458 WCHAR system_lang[80], regional_setting[100], user_lang[80], language_str[300];
466 swprintf(language_str,
ARRAY_SIZE(language_str),
L"%s (%s: %s)", system_lang, regional_setting,
478 L"Regional Setting", user_lang);
520 static const WCHAR *prop_list[] =
522 L"szOSLocalized",
L"szOSExLocalized",
L"szOSExLongLocalized",
523 L"szOSEnglish",
L"szOSExEnglish",
L"szOSExLongEnglish"
546 VARIANT cpu_name, cpu_no, clock_speed;
547 WCHAR print_buf[200];
569 IWbemServices_Release(wbem_service);
573 IWbemServices_Release(wbem_service);
578 hr = IEnumWbemClassObject_Next(wbem_enum, 1000, 1, &wbem_class, &
no);
579 IEnumWbemClassObject_Release(wbem_enum);
583 hr = IWbemClassObject_Get(wbem_class,
L"NumberOfLogicalProcessors", 0, &cpu_no,
NULL,
NULL);
585 IWbemClassObject_Release(wbem_class);
588 hr = IWbemClassObject_Get(wbem_class,
L"MaxClockSpeed", 0, &clock_speed,
NULL,
NULL);
590 IWbemClassObject_Release(wbem_class);
593 hr = IWbemClassObject_Get(wbem_class,
L"Name", 0, &cpu_name,
NULL,
NULL);
594 IWbemClassObject_Release(wbem_class);
648 msex.dwLength =
sizeof(msex);
667 info.dwOSVersionInfoSize =
sizeof(
info);
691 swprintf(print_buf,
ARRAY_SIZE(print_buf),
L"%I64uMB RAM", msex.ullTotalPhys / (1024 * 1024));
696 usedpage_mb = (
DWORD)((msex.ullTotalPageFile - msex.ullAvailPageFile) / (1024 * 1024));
697 availpage_mb = (
DWORD)(msex.ullAvailPageFile / (1024 * 1024));
700 args[0] = usedpage_mb;
701 args[1] = availpage_mb;
709 swprintf(print_buf,
ARRAY_SIZE(print_buf),
L"%uMB used, %uMB available", usedpage_mb, availpage_mb);
783 FIXME(
"Unknown D3DFORMAT %d, returning 32 bpp\n",
format);
799 hr = IDirectDraw7_GetAvailableVidMem(pDirectDraw, &dd_caps, available_mem,
NULL);
800 IDirectDraw7_Release(pDirectDraw);
818 {0x1002,
L"ATI Technologies Inc."},
821 {0x1af4,
L"Red Hat"},
822 {0x8086,
L"Intel Corporation"},
827 if (vendors[
i].
id == vendor_id)
828 return vendors[
i].
name;
831 FIXME(
"Unknown PCI vendor ID 0x%04lx.\n", vendor_id);
840 IDirect3D9 *pDirect3D9;
854 DWORD available_mem = 0;
859 if (!display_adapter)
984 WARN(
"get_texture_memory helper failed\n");
1132 static const WCHAR *empty_properties[] =
1134 L"szDeviceIdentifier",
L"szVendorId",
L"szDeviceId",
L"szKeyDeviceKey",
1135 L"szKeyDeviceID",
L"szDriverName",
L"szDriverVersion",
L"szSubSysId",
1136 L"szRevisionId",
L"szManufacturer",
L"szChipType",
L"szDACType",
L"szRevision"
1149 if (!display_adapter)
1154 disp_dev.
cb =
sizeof(disp_dev);
1173 hr = IDirectDraw7_GetAvailableVidMem(pDirectDraw, &dd_caps, &tmp,
NULL);
1187 surface_descr.
dwSize =
sizeof(surface_descr);
1188 hr = IDirectDraw7_GetDisplayMode(pDirectDraw, &surface_descr);
1218 for (tmp = 0; tmp <
ARRAY_SIZE(empty_properties); tmp++)
1227 IDirectDraw7_Release(pDirectDraw);
1253 wsprintfW(lpwstr,
L"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", lpcguid->
Data1, lpcguid->
Data2,
1304 static const PROPERTYKEY devicepath_key =
1306 {0xb3f8fa53, 0x0004, 0x438e, {0x90, 0x03, 0x51, 0xa4, 0x6e, 0x13, 0x9b, 0xfc}}, 2
1318 hr = IMMDeviceCollection_Item(enum_ctx->
devices,
i, &mmdev);
1320 hr = IMMDevice_OpenPropertyStore(mmdev,
STGM_READ, &ps);
1321 PropVariantInit(&pv);
1323 hr = IPropertyStore_GetValue(ps, (
const PROPERTYKEY*)&PKEY_AudioEndpoint_GUID, &pv);
1330 PropVariantInit(&pv);
1332 hr = IPropertyStore_GetValue(ps, &devicepath_key, &pv);
1350 IPropertyStore_Release(ps);
1352 IMMDevice_Release(mmdev);
1380 (
void **)&mmdevenum)))
1382 IMMDeviceEnumerator_EnumAudioEndpoints(mmdevenum,
eAll, DEVICE_STATE_ACTIVE, &enum_ctx.
devices);
1383 IMMDeviceEnumerator_Release(mmdevenum);
1389 IMMDeviceCollection_Release(enum_ctx.
devices);
1436 WCHAR szVersion_v[1024];
1438 void *pVersionInfo =
NULL;
1443 TRACE(
"Filling container %p for %s in %s\n",
node,
1568 if (!file_container)
1591 hr = IPropertyBag_Read(pPropBag,
L"FriendlyName", friendly_name, 0);
1595 hr = IPropertyBag_Read(pPropBag,
L"CLSID", clsid_name, 0);
1614 DWORD dwNOutputs = 0;
1615 DWORD dwNInputs = 0;
1618 (
void **)&pFileMapper);
1622 hr = IFilterMapper2_QueryInterface(pFileMapper, &IID_IAMFilterData, (
void **)&pFilterData);
1626 hr = IAMFilterData_ParseFilterData(pFilterData,
pData,
cb, &ppRF);
1668 if (pFilterData) IAMFilterData_Release(pFilterData);
1669 if (pFileMapper) IFilterMapper2_Release(pFileMapper);
1706 hr = IPropertyBag_Read(pPropFilterBag,
L"FilterData", &
v,
NULL);
1724 if (pPropFilterBag) IPropertyBag_Release(pPropFilterBag);
1739 &IID_ICreateDevEnum, (
void **)&pCreateDevEnum);
1743 hr = ICreateDevEnum_CreateClassEnumerator(pCreateDevEnum, &CLSID_ActiveMovieCategories, &pEmCat, 0);
1747 while (IEnumMoniker_Next(pEmCat, 1, &pMCat,
NULL) ==
S_OK)
1758 IMoniker_Release(pMCat);
1763 IPropertyBag_Release(pPropBag);
1766 IMoniker_Release(pMCat);
1773 IMoniker_Release(pMCat);
1779 hr = ICreateDevEnum_CreateClassEnumerator(pCreateDevEnum, &clsidCat, &pEnum, 0);
1782 IMoniker_Release(pMCat);
1790 while (IEnumMoniker_Next(pEnum, 1, &pMoniker,
NULL) ==
S_OK)
1800 IMoniker_Release(pMoniker);
1808 IMoniker_Release(pMoniker);
1816 IMoniker_Release(pMoniker);
1821 IMoniker_Release(pMoniker);
1824 WARN(
"Skipping invalid filter\n");
1834 IEnumMoniker_Release(pEnum);
1835 IMoniker_Release(pMCat);
1844 if (pEmCat) IEnumMoniker_Release(pEmCat);
1845 ICreateDevEnum_Release(pCreateDevEnum);
1904 *pinfo_root = info_root;
#define CO_E_NOTINITIALIZED
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
enum _D3DFORMAT D3DFORMAT
IDirect3D9 *WINAPI Direct3DCreate9(UINT SDKVersion)
#define IDirect3D9_GetDeviceCaps(p, a, b, c)
#define IDirect3D9_GetAdapterDisplayMode(p, a, b)
#define IDirect3D9_GetAdapterIdentifier(p, a, b, c)
#define IDirect3D9_Release(p)
#define IDirect3D9_GetAdapterCount(p)
HRESULT WINAPI DirectDrawCreateEx(LPGUID lpGUID, LPVOID *lplpDD, REFIID id, LPUNKNOWN pUnkOuter)
HRESULT WINAPI DirectSoundEnumerateW(LPDSENUMCALLBACKW lpDSEnumCallback, LPVOID lpContext)
HRESULT WINAPI DirectSoundCaptureEnumerateW(LPDSENUMCALLBACKW lpDSEnumCallback, LPVOID lpContext)
HRESULT DXDiag_CreateDXDiagContainer(REFIID riid, IDxDiagContainerImpl_Container *cont, IDxDiagProvider *pProv, LPVOID *ppobj)
static HRESULT build_information_tree(IDxDiagContainerImpl_Container **pinfo_root)
static const WCHAR * vendor_id_to_manufacturer_string(DWORD vendor_id)
static ULONG WINAPI IDxDiagProviderImpl_AddRef(IDxDiagProvider *iface)
static HRESULT add_ui4_property(IDxDiagContainerImpl_Container *node, const WCHAR *propName, DWORD data)
static const IDxDiagProviderVtbl DxDiagProvider_Vtbl
static HRESULT add_ull_as_bstr_property(IDxDiagContainerImpl_Container *node, const WCHAR *propName, ULONGLONG data)
static BOOL is_netmeeting_running(void)
static HRESULT build_systeminfo_tree(IDxDiagContainerImpl_Container *node)
static HRESULT read_property_names(IPropertyBag *pPropBag, VARIANT *friendly_name, VARIANT *clsid_name)
static HRESULT add_bstr_property(IDxDiagContainerImpl_Container *node, const WCHAR *propName, const WCHAR *str)
static HRESULT build_directsound_tree(IDxDiagContainerImpl_Container *node)
static HRESULT build_directshowfilters_tree(IDxDiagContainerImpl_Container *node)
static HRESULT fill_file_description(IDxDiagContainerImpl_Container *node, const WCHAR *szFilePath, const WCHAR *szFileName)
static IDxDiagContainerImpl_Property * allocate_property_information(const WCHAR *name)
static IDxDiagProviderImpl * impl_from_IDxDiagProvider(IDxDiagProvider *iface)
static void add_subcontainer(IDxDiagContainerImpl_Container *node, IDxDiagContainerImpl_Container *subCont)
BOOL CALLBACK dsound_enum(LPGUID guid, LPCWSTR desc, LPCWSTR module, LPVOID context)
static IDxDiagContainerImpl_Container * allocate_information_node(const WCHAR *name)
static void free_property_information(IDxDiagContainerImpl_Property *prop)
static HRESULT fill_processor_information(IDxDiagContainerImpl_Container *node)
static HRESULT fill_language_information(IDxDiagContainerImpl_Container *node)
static HRESULT fill_filter_container(IDxDiagContainerImpl_Container *subcont, IMoniker *pMoniker)
static BOOL get_texture_memory(GUID *adapter, DWORD *available_mem)
static ULONG WINAPI IDxDiagProviderImpl_Release(IDxDiagProvider *iface)
static HRESULT fill_display_information_d3d(IDxDiagContainerImpl_Container *node)
static HRESULT build_displaydevices_tree(IDxDiagContainerImpl_Container *node)
static HRESULT add_bool_property(IDxDiagContainerImpl_Container *node, const WCHAR *propName, BOOL data)
static DWORD depth_for_pixelformat(D3DFORMAT format)
static HRESULT fill_filter_data_information(IDxDiagContainerImpl_Container *subcont, BYTE *pData, ULONG cb)
static HRESULT build_systemdevices_tree(IDxDiagContainerImpl_Container *node)
static HRESULT build_logicaldisks_tree(IDxDiagContainerImpl_Container *node)
static HRESULT build_directxfiles_tree(IDxDiagContainerImpl_Container *node)
static HRESULT WINAPI IDxDiagProviderImpl_GetRootContainer(IDxDiagProvider *iface, IDxDiagContainer **ppInstance)
static HRESULT fill_datetime_information(IDxDiagContainerImpl_Container *node)
static HRESULT WINAPI IDxDiagProviderImpl_Initialize(IDxDiagProvider *iface, DXDIAG_INIT_PARAMS *pParams)
static BOOL get_process_name_from_pid(DWORD pid, WCHAR *buf, DWORD chars)
static HRESULT build_directinput_tree(IDxDiagContainerImpl_Container *node)
HRESULT DXDiag_CreateDXDiagProvider(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, REFIID riid, LPVOID *ppobj)
static HRESULT fill_os_string_information(IDxDiagContainerImpl_Container *node, OSVERSIONINFOW *info)
static HRESULT build_directplay_tree(IDxDiagContainerImpl_Container *node)
static HRESULT build_directmusic_tree(IDxDiagContainerImpl_Container *node)
static HRESULT WINAPI IDxDiagProviderImpl_QueryInterface(IDxDiagProvider *iface, REFIID riid, void **ppobj)
static HRESULT add_i4_property(IDxDiagContainerImpl_Container *node, const WCHAR *propName, LONG data)
static void free_information_tree(IDxDiagContainerImpl_Container *node)
static LPWSTR guid_to_string(LPWSTR lpwstr, REFGUID lpcguid)
static HRESULT fill_display_information_fallback(IDxDiagContainerImpl_Container *node)
#define IDS_PAGE_FILE_FORMAT
#define IDS_REGIONAL_SETTING
HRESULT WINAPI PropVariantClear(PROPVARIANT *pvar)
INT WINAPI StringFromGUID2(REFGUID guid, LPOLESTR str, INT cmax)
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
void WINAPI CoTaskMemFree(void *ptr)
static WCHAR no[MAX_STRING_RESOURCE_LEN]
#define HeapFree(x, y, z)
#define MultiByteToWideChar
static void cleanup(void)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
HANDLE WINAPI OpenProcess(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwProcessId)
VOID WINAPI GetLocalTime(OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI GetVersionExW(IN LPOSVERSIONINFOW lpVersionInformation)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
BOOL WINAPI EnumProcesses(DWORD *ids, DWORD count, DWORD *used)
DWORD WINAPI DECLSPEC_HOTPATCH GetModuleBaseNameW(HANDLE process, HMODULE module, WCHAR *name, DWORD size)
BOOL WINAPI DECLSPEC_HOTPATCH EnumProcessModules(HANDLE process, HMODULE *module, DWORD count, DWORD *needed)
BOOL WINAPI GetFileVersionInfoW(LPCWSTR filename, DWORD handle, DWORD datasize, LPVOID data)
BOOL WINAPI VerQueryValueW(LPCVOID pBlock, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
DWORD WINAPI GetFileVersionInfoSizeW(LPCWSTR filename, LPDWORD handle)
_ACRTIMP wchar_t *__cdecl wcsstr(const wchar_t *, const wchar_t *)
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
HINSTANCE dxdiagn_instance
static void DXDIAGN_UnlockModule(void)
static void DXDIAGN_LockModule(void)
#define DXDIAG_DX9_SDK_VERSION
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
BOOL NTAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer)
#define PROCESS_QUERY_INFORMATION
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define memcpy(s1, s2, n)
D3D11_SHADER_VARIABLE_DESC desc
static WCHAR computer_name[MAX_COMPUTERNAME_LENGTH+1]
#define LOCALE_USER_DEFAULT
#define LOCALE_SYSTEM_DEFAULT
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
const GUID IID_IPropertyBag
static const WCHAR driverW[]
#define IsEqualGUID(rguid1, rguid2)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
static WCHAR szFilePath[]
#define DDSCAPS_VIDEOMEMORY
#define DDSCAPS_LOCALVIDMEM
__WINE_SERVER_LIST_INLINE unsigned int list_count(const struct list *list)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
IDxDiagContainerImpl_Container * info_root
IDxDiagProvider IDxDiagProvider_iface
DXDIAG_INIT_PARAMS params
const REGFILTERPINS * rgPins
const REGFILTERPINS2 * rgPins2
char Driver[MAX_DEVICE_IDENTIFIER_STRING]
char Description[MAX_DEVICE_IDENTIFIER_STRING]
LARGE_INTEGER DriverVersion
DDPIXELFORMAT ddpfPixelFormat
DWORD dwDxDiagHeaderVersion
IDxDiagContainerImpl_Container * cont
IMMDeviceCollection * devices
static BOOL enumerate_processes(void)
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define CONTAINING_RECORD(address, type, field)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, const VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
BOOL WINAPI EnumDisplayDevicesW(LPCWSTR lpDevice, DWORD iDevNum, PDISPLAY_DEVICEW lpDisplayDevice, DWORD dwFlags)
#define FORMAT_MESSAGE_FROM_STRING
#define FORMAT_MESSAGE_ARGUMENT_ARRAY
#define MAX_COMPUTERNAME_LENGTH
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
#define CLASS_E_NOAGGREGATION
#define LOCALE_SENGLANGUAGE
#define LOCALE_SNATIVELANGNAME