共用方式為


IKsTopologyInfo::get_NodeName

 
Microsoft DirectShow 9.0

IKsTopologyInfo::get_NodeName

This topic applies to Windows XP Service Pack 2 and later.

The get_NodeName method returns the name of the node.

Syntax

  HRESULT get_NodeName(
  DWORD  dwNodeId,
  WCHAR*  pwchNodeName,
  DWORD  dwBufSize,
  DWORD*  pdwNameLen
);

Parameters

dwNodeId

[in]  Index of the node. To find the number of nodes, call the IKsTopologyInfo::get_NumNodes method.

pwchNodeName

[out]  Pointer to a wide-character array that receives the name. To find the required buffer size, set this parameter to NULL. The size is returned in the pdwNameLen parameter.

dwBufSize

[in]  Size of the pwchNodeName array, in bytes.

pdwNameLen

[out]  Receives the buffer size required to hold the name, in bytes. This parameter cannot be NULL.

Return Values

The method returns an HRESULT. Possible values include, but are not limited to, those in the following table.

Return code Description
S_OK The method succeeded.
__WIN32_FROM_HRESULT(ERROR_MORE_DATA) The buffer is not large enough.

Remarks

To find the buffer size for the name, call the method once with NULL for the pwchNodeName parameter and zero for the dwBufSize parameter. The method returns the buffer size in pdwNameLen. The method's return value, in this case, is __HRESULT_FROM_WIN32(ERROR_MORE_DATA). Then allocate the array and call the method again.

Example Code

// pKsTopo is an IKsTopologyInfo pointer.
// iNode is the index of a node.
DWORD cbName = 0;
hr = pKsTopo->get_NodeName(iNode, NULL, 0, &cbName);
if (hr == __HRESULT_FROM_WIN32(ERROR_MORE_DATA))
{
    if (cbName > sizeof(WCHAR))
    {
        WCHAR *nodeName = new WCHAR[cbName / sizeof(WCHAR)];
        if (nodeName == NULL)
        {
            hr = E_OUTOFMEMORY;
        }
        else
        {
            hr = pKsTopo->get_NodeName(iNode, nodeName, cbName, &cbName);
            /* ... */
            delete [] nodeName;
        }
    }
}

Requirements

Header: Include Vidcap.h.

Library: None.

See Also