Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
af983e4d
Commit
af983e4d
authored
Nov 03, 2005
by
Raphael Junqueira
Committed by
Alexandre Julliard
Nov 03, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fill provider with some empty containers.
parent
32d52401
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
195 additions
and
22 deletions
+195
-22
container.c
dlls/dxdiagn/container.c
+44
-10
provider.c
dlls/dxdiagn/provider.c
+151
-12
No files found.
dlls/dxdiagn/container.c
View file @
af983e4d
...
...
@@ -108,29 +108,63 @@ HRESULT WINAPI IDxDiagContainerImpl_EnumChildContainerNames(PDXDIAGCONTAINER ifa
return
E_INVALIDARG
;
}
HRESULT
WINAPI
IDxDiagContainerImpl_GetChildContainer
(
PDXDIAGCONTAINER
iface
,
LPCWSTR
pwszContainer
,
IDxDiagContainer
**
ppInstance
)
{
HRESULT
WINAPI
IDxDiagContainerImpl_GetChildContainer
Internal
(
PDXDIAGCONTAINER
iface
,
LPCWSTR
pwszContainer
,
IDxDiagContainer
**
ppInstance
)
{
IDxDiagContainerImpl
*
This
=
(
IDxDiagContainerImpl
*
)
iface
;
IDxDiagContainerImpl_SubContainer
*
p
=
NULL
;
FIXME
(
"(%p, %s, %p)
\n
"
,
iface
,
debugstr_w
(
pwszContainer
),
ppInstance
);
if
(
NULL
==
ppInstance
||
NULL
==
pwszContainer
)
{
return
E_INVALIDARG
;
}
p
=
This
->
subContainers
;
while
(
NULL
!=
p
)
{
if
(
0
==
lstrcmpW
(
p
->
contName
,
pwszContainer
))
{
IDxDiagContainerImpl_QueryInterface
((
PDXDIAGCONTAINER
)
p
->
pCont
,
&
IID_IDxDiagContainer
,
(
void
**
)
ppInstance
);
/*TRACE"(%p) returns %p\n", iface, *ppInstance);*/
*
ppInstance
=
(
PDXDIAGCONTAINER
)
p
->
pCont
;
return
S_OK
;
}
p
=
p
->
next
;
}
return
E_INVALIDARG
;
}
HRESULT
WINAPI
IDxDiagContainerImpl_GetChildContainer
(
PDXDIAGCONTAINER
iface
,
LPCWSTR
pwszContainer
,
IDxDiagContainer
**
ppInstance
)
{
IDxDiagContainerImpl
*
This
=
(
IDxDiagContainerImpl
*
)
iface
;
IDxDiagContainer
*
pContainer
=
NULL
;
LPWSTR
tmp
,
orig_tmp
;
INT
tmp_len
;
WCHAR
*
cur
;
HRESULT
hr
=
E_INVALIDARG
;
FIXME
(
"(%p, %s, %p)
\n
"
,
iface
,
debugstr_w
(
pwszContainer
),
ppInstance
);
if
(
NULL
==
ppInstance
||
NULL
==
pwszContainer
)
{
return
E_INVALIDARG
;
}
pContainer
=
(
PDXDIAGCONTAINER
)
This
;
tmp_len
=
strlenW
(
pwszContainer
)
+
1
;
orig_tmp
=
tmp
=
HeapAlloc
(
GetProcessHeap
(),
0
,
tmp_len
*
sizeof
(
WCHAR
));
if
(
NULL
==
tmp
)
return
E_FAIL
;
lstrcpynW
(
tmp
,
pwszContainer
,
tmp_len
);
cur
=
strchrW
(
tmp
,
'.'
);
while
(
NULL
!=
cur
)
{
*
cur
=
'\0'
;
/* cut tmp string to '.' */
hr
=
IDxDiagContainerImpl_GetChildContainerInternal
(
pContainer
,
tmp
,
&
pContainer
);
if
(
!
SUCCEEDED
(
hr
)
||
NULL
==
pContainer
)
goto
on_error
;
*
cur
++
;
/* go after '.' (just replaced by \0) */
tmp
=
cur
;
cur
=
strchrW
(
tmp
,
'.'
);
}
hr
=
IDxDiagContainerImpl_GetChildContainerInternal
(
pContainer
,
tmp
,
ppInstance
);
if
(
SUCCEEDED
(
hr
))
{
IDxDiagContainerImpl_AddRef
((
PDXDIAGCONTAINER
)
*
ppInstance
);
}
on_error:
HeapFree
(
GetProcessHeap
(),
0
,
orig_tmp
);
return
hr
;
}
HRESULT
WINAPI
IDxDiagContainerImpl_GetNumberOfProps
(
PDXDIAGCONTAINER
iface
,
DWORD
*
pdwCount
)
{
IDxDiagContainerImpl
*
This
=
(
IDxDiagContainerImpl
*
)
iface
;
TRACE
(
"(%p)
\n
"
,
iface
);
...
...
dlls/dxdiagn/provider.c
View file @
af983e4d
...
...
@@ -127,32 +127,171 @@ HRESULT DXDiag_CreateDXDiagProvider(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, R
provider
->
lpVtbl
=
&
DxDiagProvider_Vtbl
;
provider
->
ref
=
0
;
/* will be inited with QueryInterface */
return
IDxDiagProviderImpl_QueryInterface
((
PDXDIAGPROVIDER
)
provider
,
riid
,
ppobj
);
}
}
HRESULT
DXDiag_Init
RootDXDiagContainer
(
IDxDiagContainer
*
pRoot
Cont
)
{
static
const
WCHAR
DxDiag_SystemInfo
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'S'
,
'y'
,
's'
,
't'
,
'e'
,
'm'
,
'I'
,
'n'
,
'f'
,
'o'
,
0
}
;
HRESULT
DXDiag_Init
DXDiagSystemInfoContainer
(
IDxDiagContainer
*
pSub
Cont
)
{
HRESULT
hr
=
S_OK
;
static
const
WCHAR
dwDirectXVersionMajor
[]
=
{
'd'
,
'w'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'X'
,
'V'
,
'e'
,
'r'
,
's'
,
'i'
,
'o'
,
'n'
,
'M'
,
'a'
,
'j'
,
'o'
,
'r'
,
0
};
static
const
WCHAR
dwDirectXVersionMinor
[]
=
{
'd'
,
'w'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'X'
,
'V'
,
'e'
,
'r'
,
's'
,
'i'
,
'o'
,
'n'
,
'M'
,
'i'
,
'n'
,
'o'
,
'r'
,
0
};
static
const
WCHAR
szDirectXVersionLetter
[]
=
{
's'
,
'z'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'X'
,
'V'
,
'e'
,
'r'
,
's'
,
'i'
,
'o'
,
'n'
,
'L'
,
'e'
,
't'
,
't'
,
'e'
,
'r'
,
0
};
static
const
WCHAR
szDirectXVersionLetter_v
[]
=
{
'c'
,
0
};
IDxDiagContainer
*
pSubCont
=
NULL
;
static
const
WCHAR
bDebug
[]
=
{
'b'
,
'D'
,
'e'
,
'b'
,
'u'
,
'g'
,
0
};
static
const
WCHAR
szDirectXVersionEnglish
[]
=
{
's'
,
'z'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'X'
,
'V'
,
'e'
,
'r'
,
's'
,
'i'
,
'o'
,
'n'
,
'E'
,
'n'
,
'g'
,
'l'
,
'i'
,
's'
,
'h'
,
0
};
static
const
WCHAR
szDirectXVersionEnglish_v
[]
=
{
'4'
,
'.'
,
'0'
,
'9'
,
'.'
,
'0'
,
'0'
,
'0'
,
'0'
,
'.'
,
'0'
,
'9'
,
'0'
,
'4'
,
0
};
static
const
WCHAR
szDirectXVersionLongEnglish
[]
=
{
's'
,
'z'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'X'
,
'V'
,
'e'
,
'r'
,
's'
,
'i'
,
'o'
,
'n'
,
'L'
,
'o'
,
'n'
,
'g'
,
'E'
,
'n'
,
'g'
,
'l'
,
'i'
,
's'
,
'h'
,
0
};
static
const
WCHAR
szDirectXVersionLongEnglish_v
[]
=
{
'='
,
' '
,
'"'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'X'
,
' '
,
'9'
,
'.'
,
'0'
,
'c'
,
' '
,
'('
,
'4'
,
'.'
,
'0'
,
'9'
,
'.'
,
'0'
,
'0'
,
'0'
,
'0'
,
'.'
,
'0'
,
'9'
,
'0'
,
'4'
,
')'
,
0
};
/*static const WCHAR szDxDiagVersion[] = {'s','z','D','x','D','i','a','g','V','e','r','s','i','o','n',0};*/
/*szWindowsDir*/
/*szWindowsDir*/
/*"dwOSMajorVersion"*/
/*"dwOSMinorVersion"*/
/*"dwOSBuildNumber"*/
/*"dwOSPlatformID"*/
VARIANT
v
;
HRESULT
hr
=
S_OK
;
TRACE
(
"(%p)
\n
"
,
pRootCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
V_VT
(
&
v
)
=
VT_UI4
;
V_UI4
(
&
v
)
=
9
;
hr
=
IDxDiagContainerImpl_AddProp
(
pSubCont
,
dwDirectXVersionMajor
,
&
v
);
V_VT
(
&
v
)
=
VT_UI4
;
V_UI4
(
&
v
)
=
0
;
hr
=
IDxDiagContainerImpl_AddProp
(
pSubCont
,
dwDirectXVersionMinor
,
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
SysAllocString
(
szDirectXVersionLetter_v
);
hr
=
IDxDiagContainerImpl_AddProp
(
pSubCont
,
szDirectXVersionLetter
,
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
SysAllocString
(
szDirectXVersionEnglish_v
);
hr
=
IDxDiagContainerImpl_AddProp
(
pSubCont
,
szDirectXVersionEnglish
,
&
v
);
V_VT
(
&
v
)
=
VT_BSTR
;
V_BSTR
(
&
v
)
=
SysAllocString
(
szDirectXVersionLongEnglish
);
hr
=
IDxDiagContainerImpl_AddProp
(
pSubCont
,
szDirectXVersionLongEnglish_v
,
&
v
);
V_VT
(
&
v
)
=
VT_BOOL
;
V_BOOL
(
&
v
)
=
FALSE
;
hr
=
IDxDiagContainerImpl_AddProp
(
pSubCont
,
bDebug
,
&
v
);
return
hr
;
}
HRESULT
DXDiag_InitDXDiagSystemDevicesContainer
(
IDxDiagContainer
*
pSubCont
)
{
HRESULT
hr
=
S_OK
;
/*
static const WCHAR szDescription[] = {'s','z','D','e','s','c','r','i','p','t','i','o','n',0};
static const WCHAR szDeviceID[] = {'s','z','D','e','v','i','c','e','I','D',0};
VARIANT v;
IDxDiagContainer* pDeviceSubCont = NULL;
hr = DXDiag_CreateDXDiagContainer(&IID_IDxDiagContainer, (void**) &pDeviceSubCont);
if (FAILED(hr)) { return hr; }
V_VT(pvarProp) = VT_BSTR;
V_BSTR(pvarProp) = SysAllocString(property->psz);
hr = IDxDiagContainerImpl_AddProp(pDeviceSubCont, szDescription, &v);
V_VT(pvarProp) = VT_BSTR;
V_BSTR(pvarProp) = SysAllocString(property->psz);
hr = IDxDiagContainerImpl_AddProp(pDeviceSubCont, szDeviceID, &v);
hr = IDxDiagContainerImpl_AddChildContainer(pSubCont, "", pDeviceSubCont);
*/
return
hr
;
}
HRESULT
DXDiag_InitDXDiagLogicalDisksContainer
(
IDxDiagContainer
*
pSubCont
)
{
HRESULT
hr
=
S_OK
;
/*
static const WCHAR szDriveLetter[] = {'s','z','D','r','i','v','e','L','e','t','t','e','r',0};
static const WCHAR szFreeSpace[] = {'s','z','F','r','e','e','S','p','a','c','e',0};
static const WCHAR szMaxSpace[] = {'s','z','M','a','x','S','p','a','c','e',0};
static const WCHAR szFileSystem[] = {'s','z','F','i','l','e','S','y','s','t','e','m',0};
static const WCHAR szModel[] = {'s','z','M','o','d','e','l',0};
static const WCHAR szPNPDeviceID[] = {'s','z','P','N','P','D','e','v','i','c','e','I','D',0};
static const WCHAR dwHardDriveIndex[] = {'d','w','H','a','r','d','D','r','i','v','e','I','n','d','e','x',0};
VARIANT v;
IDxDiagContainer* pDiskSubCont = NULL;
hr = DXDiag_CreateDXDiagContainer(&IID_IDxDiagContainer, (void**) &pDiskSubCont);
if (FAILED(hr)) { return hr; }
hr = IDxDiagContainerImpl_AddChildContainer(pSubCont, "" , pDiskSubCont);
*/
return
hr
;
}
HRESULT
DXDiag_InitDXDiagDirectXFilesContainer
(
IDxDiagContainer
*
pSubCont
)
{
HRESULT
hr
=
S_OK
;
/*
static const WCHAR szName[] = {'s','z','N','a','m','e',0};
static const WCHAR szVersion[] = {'s','z','V','e','r','s','i','o','n',0};
VARIANT v;
*/
return
hr
;
}
HRESULT
DXDiag_InitDXDiagDirectSoundContainer
(
IDxDiagContainer
*
pSubCont
)
{
HRESULT
hr
=
S_OK
;
static
const
WCHAR
DxDiag_SoundDevices
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'S'
,
'o'
,
'u'
,
'n'
,
'd'
,
'D'
,
'e'
,
'v'
,
'i'
,
'c'
,
'e'
,
's'
,
0
};
static
const
WCHAR
DxDiag_SoundCaptureDevices
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'S'
,
'o'
,
'u'
,
'n'
,
'd'
,
'C'
,
'a'
,
'p'
,
't'
,
'u'
,
'r'
,
'e'
,
'D'
,
'e'
,
'v'
,
'i'
,
'c'
,
'e'
,
's'
,
0
};
IDxDiagContainer
*
pSubSubCont
=
NULL
;
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pSubCont
,
DxDiag_SoundDevices
,
pSubSubCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pSubCont
,
DxDiag_SoundCaptureDevices
,
pSubSubCont
);
return
hr
;
}
HRESULT
DXDiag_InitRootDXDiagContainer
(
IDxDiagContainer
*
pRootCont
)
{
HRESULT
hr
=
S_OK
;
static
const
WCHAR
DxDiag_SystemInfo
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'S'
,
'y'
,
's'
,
't'
,
'e'
,
'm'
,
'I'
,
'n'
,
'f'
,
'o'
,
0
};
static
const
WCHAR
DxDiag_SystemDevices
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'S'
,
'y'
,
's'
,
't'
,
'e'
,
'm'
,
'D'
,
'e'
,
'v'
,
'i'
,
'c'
,
'e'
,
's'
,
0
};
static
const
WCHAR
DxDiag_LogicalDisks
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'L'
,
'o'
,
'g'
,
'i'
,
'c'
,
'a'
,
'l'
,
'D'
,
'i'
,
's'
,
'k'
,
's'
,
0
};
static
const
WCHAR
DxDiag_DirectXFiles
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'X'
,
'F'
,
'i'
,
'l'
,
'e'
,
's'
,
0
};
static
const
WCHAR
DxDiag_DisplayDevices
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'D'
,
'i'
,
's'
,
'p'
,
'l'
,
'a'
,
'y'
,
'D'
,
'e'
,
'v'
,
'i'
,
'c'
,
'e'
,
's'
,
0
};
static
const
WCHAR
DxDiag_DirectSound
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'S'
,
'o'
,
'u'
,
'n'
,
'd'
,
0
};
static
const
WCHAR
DxDiag_DirectMusic
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'M'
,
'u'
,
's'
,
'i'
,
'c'
,
0
};
static
const
WCHAR
DxDiag_DirectInput
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'I'
,
'n'
,
'p'
,
'u'
,
't'
,
0
};
static
const
WCHAR
DxDiag_DirectPlay
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'P'
,
'l'
,
'a'
,
'y'
,
0
};
static
const
WCHAR
DxDiag_DirectShowFilters
[]
=
{
'D'
,
'x'
,
'D'
,
'i'
,
'a'
,
'g'
,
'_'
,
'D'
,
'i'
,
'r'
,
'e'
,
'c'
,
't'
,
'S'
,
'h'
,
'o'
,
'w'
,
'F'
,
'i'
,
'l'
,
't'
,
'e'
,
'r'
,
's'
,
0
};
IDxDiagContainer
*
pSubCont
=
NULL
;
TRACE
(
"(%p)
\n
"
,
pRootCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
DXDiag_InitDXDiagSystemInfoContainer
(
pSubCont
);
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pRootCont
,
DxDiag_SystemInfo
,
pSubCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
DXDiag_InitDXDiagSystemDevicesContainer
(
pSubCont
);
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pRootCont
,
DxDiag_SystemDevices
,
pSubCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
DXDiag_InitDXDiagLogicalDisksContainer
(
pSubCont
);
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pRootCont
,
DxDiag_LogicalDisks
,
pSubCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
DXDiag_InitDXDiagDirectXFilesContainer
(
pSubCont
);
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pRootCont
,
DxDiag_DirectXFiles
,
pSubCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pRootCont
,
DxDiag_DisplayDevices
,
pSubCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
DXDiag_InitDXDiagDirectSoundContainer
(
pSubCont
);
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pRootCont
,
DxDiag_DirectSound
,
pSubCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pRootCont
,
DxDiag_DirectMusic
,
pSubCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pRootCont
,
DxDiag_DirectInput
,
pSubCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pRootCont
,
DxDiag_DirectPlay
,
pSubCont
);
hr
=
DXDiag_CreateDXDiagContainer
(
&
IID_IDxDiagContainer
,
(
void
**
)
&
pSubCont
);
if
(
FAILED
(
hr
))
{
return
hr
;
}
hr
=
IDxDiagContainerImpl_AddChildContainer
(
pRootCont
,
DxDiag_DirectShowFilters
,
pSubCont
);
return
hr
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment