示例#1
0
void
CBasePin::DisplayPinInfo(IPin *pReceivePin)
{

	if (DbgCheckModuleLevel(LOG_TRACE, CONNECT_TRACE_LEVEL)) {
		PIN_INFO ConnectPinInfo;
		PIN_INFO ReceivePinInfo;

		if (FAILED(QueryPinInfo(&ConnectPinInfo))) {
			lstrcpyW(ConnectPinInfo.achName, L"Bad Pin");
		} else {
			QueryPinInfoReleaseFilter(ConnectPinInfo);
		}

		if (FAILED(pReceivePin->QueryPinInfo(&ReceivePinInfo))) {
			lstrcpyW(ReceivePinInfo.achName, L"Bad Pin");
		} else {
			QueryPinInfoReleaseFilter(ReceivePinInfo);
		}

		DbgLog((LOG_TRACE, CONNECT_TRACE_LEVEL, TEXT("Trying to connect Pins :")));
		DbgLog((LOG_TRACE, CONNECT_TRACE_LEVEL, TEXT("    <%ls>"), ConnectPinInfo.achName));
		DbgLog((LOG_TRACE, CONNECT_TRACE_LEVEL, TEXT("    <%ls>"), ReceivePinInfo.achName));
	}
}
示例#2
0
文件: wxdebug.cpp 项目: DragonZX/fdm2
/*  Display pin */
CDisp::CDisp(IPin *pPin)
{
    PIN_INFO pi;
    TCHAR str[MAX_PIN_NAME];
    CLSID clsid;

    if (pPin) {
       pPin->QueryPinInfo(&pi);
       pi.pFilter->GetClassID(&clsid);
       QueryPinInfoReleaseFilter(pi);
      #ifndef UNICODE
       WideCharToMultiByte(GetACP(), 0, pi.achName, lstrlenW(pi.achName) + 1,
                           str, MAX_PIN_NAME, NULL, NULL);
      #else
       lstrcpy(str, pi.achName);
      #endif
    } else {
       lstrcpy(str, TEXT("NULL IPin"));
    }

    m_pString = (PTCHAR) new TCHAR[lstrlen(str)+64];
    if (!m_pString) {
	return;
    }

    wsprintf(m_pString, TEXT("%hs(%s)"), GuidNames[clsid], str);
}
示例#3
0
/*  Display pin */
CDisp::CDisp(IPin *pPin)
{
    PIN_INFO pi;
    TCHAR str[MAX_PIN_NAME];
    CLSID clsid;

    if (pPin) {
       pPin->QueryPinInfo(&pi);
       pi.pFilter->GetClassID(&clsid);
       QueryPinInfoReleaseFilter(pi);
      #ifndef UNICODE
       WideCharToMultiByte(GetACP(), 0, pi.achName, lstrlenW(pi.achName) + 1,
                           str, MAX_PIN_NAME, NULL, NULL);
      #else
       (void)StringCchCopy(str, NUMELMS(str), pi.achName);
      #endif
    } else {
       (void)StringCchCopy(str, NUMELMS(str), TEXT("NULL IPin"));
    }

    size_t len = lstrlen(str)+64;
    m_pString = (PTCHAR) new TCHAR[len];
    if (!m_pString) {
	return;
    }

    #ifdef UNICODE
    LPCTSTR FORMAT_STRING = TEXT("%S(%s)");
    #else
    LPCTSTR FORMAT_STRING = TEXT("%s(%s)");
    #endif 

    (void)StringCchPrintf(m_pString, len, FORMAT_STRING, GuidNames[clsid], str);
}
示例#4
0
文件: wxdebug.cpp 项目: DragonZX/fdm2
void WINAPI DumpGraph(IFilterGraph *pGraph, DWORD dwLevel)
{
    if( !pGraph )
    {
        return;
    }

    IEnumFilters *pFilters;

    DbgLog((LOG_TRACE,dwLevel,TEXT("DumpGraph [%x]"), pGraph));

    if (FAILED(pGraph->EnumFilters(&pFilters))) {
	DbgLog((LOG_TRACE,dwLevel,TEXT("EnumFilters failed!")));
    }

    IBaseFilter *pFilter;
    ULONG	n;
    while (pFilters->Next(1, &pFilter, &n) == S_OK) {
	FILTER_INFO	info;

	if (FAILED(pFilter->QueryFilterInfo(&info))) {
	    DbgLog((LOG_TRACE,dwLevel,TEXT("    Filter [%x]  -- failed QueryFilterInfo"), pFilter));
	} else {
	    QueryFilterInfoReleaseGraph(info);

	    // !!! should QueryVendorInfo here!
	
	    DbgLog((LOG_TRACE,dwLevel,TEXT("    Filter [%x]  '%ls'"), pFilter, info.achName));

	    IEnumPins *pins;

	    if (FAILED(pFilter->EnumPins(&pins))) {
		DbgLog((LOG_TRACE,dwLevel,TEXT("EnumPins failed!")));
	    } else {

		IPin *pPin;
		while (pins->Next(1, &pPin, &n) == S_OK) {
		    PIN_INFO	info;

		    if (FAILED(pPin->QueryPinInfo(&info))) {
			DbgLog((LOG_TRACE,dwLevel,TEXT("          Pin [%x]  -- failed QueryPinInfo"), pPin));
		    } else {
			QueryPinInfoReleaseFilter(info);

			IPin *pPinConnected = NULL;

			HRESULT hr = pPin->ConnectedTo(&pPinConnected);

			if (pPinConnected) {
			    DbgLog((LOG_TRACE,dwLevel,TEXT("          Pin [%x]  '%ls' [%sput]")
							   TEXT("  Connected to pin [%x]"),
				    pPin, info.achName,
				    info.dir == PINDIR_INPUT ? TEXT("In") : TEXT("Out"),
				    pPinConnected));

			    pPinConnected->Release();

			    // perhaps we should really dump the type both ways as a sanity
			    // check?
			    if (info.dir == PINDIR_OUTPUT) {
				AM_MEDIA_TYPE mt;

				hr = pPin->ConnectionMediaType(&mt);

				if (SUCCEEDED(hr)) {
				    DisplayType(TEXT("Connection type"), &mt);

				    FreeMediaType(mt);
				}
			    }
			} else {
			    DbgLog((LOG_TRACE,dwLevel,
				    TEXT("          Pin [%x]  '%ls' [%sput]"),
				    pPin, info.achName,
				    info.dir == PINDIR_INPUT ? TEXT("In") : TEXT("Out")));

			}
		    }

		    pPin->Release();

		}

		pins->Release();
	    }

	}
	
	pFilter->Release();
    }

    pFilters->Release();

}
示例#5
0
//---------------------------------------------------------
//
//---------------------------------------------------------
void DumpFilterGraph(IFilterGraph *pGraph)
{
    IEnumFilters *pFilters=NULL;

    //return; //!!BS: debugging only

    dprintf(TEXT("DumpGraph [%x]"), pGraph);

    if (FAILED(pGraph->EnumFilters(&pFilters))) 
		{
		dprintf(TEXT("EnumFilters failed!"));
		}

    IBaseFilter *pFilter=NULL;
    ULONG	n=0;
    while (pFilters->Next(1, &pFilter, &n) == S_OK) 
		{
		FILTER_INFO	info;

		if (FAILED(pFilter->QueryFilterInfo(&info))) 
			{
			dprintf(TEXT("    Filter [%x]  -- failed QueryFilterInfo"), pFilter);
			} 
		else 
			{
			QueryFilterInfoReleaseGraph(info);

			// !!! should QueryVendorInfo here!
		
			dprintf(TEXT("    Filter [%x]  '%ls'"), pFilter, info.achName);

			IEnumPins *pins=NULL;

			if (FAILED(pFilter->EnumPins(&pins))) 
				{
				dprintf(TEXT("EnumPins failed!"));
				} 
			else 
				{
				IPin *pPin=NULL;
				while (pins->Next(1, &pPin, &n) == S_OK) 
					{
					PIN_INFO	info;
					if (FAILED(pPin->QueryPinInfo(&info))) 
						{
						dprintf(TEXT("          Pin [%x]  -- failed QueryPinInfo"), pPin);
						} 
					else 
						{
						QueryPinInfoReleaseFilter(info);
						IPin *pPinConnected = NULL;
						HRESULT hr = pPin->ConnectedTo(&pPinConnected);
						if (pPinConnected) 
							{
							dprintf(TEXT("          Pin [%x]  '%ls' [%sput]") TEXT("  Connected to pin [%x]"),	pPin, info.achName,	info.dir == PINDIR_INPUT ? TEXT("In") : TEXT("Out"), pPinConnected);
							// perhaps we should really dump the type both ways as a sanity
							// check?
							if (info.dir == PINDIR_OUTPUT) 
								{
								AM_MEDIA_TYPE mt;
								hr = pPin->ConnectionMediaType(&mt);
								if (SUCCEEDED(hr)) 
									{
									//DebugDisplayMediaType("Connection type", &mt);
									DebugFreeMediaType(mt);
									}
								}
							} 
						else 
							{
							dprintf(TEXT("          Pin [%x]  '%ls' [%sput]"), pPin, info.achName, info.dir == PINDIR_INPUT ? TEXT("In") : TEXT("Out"));
							}
                        if (pPinConnected!=NULL)
                            {
						    pPinConnected->Release();
                            pPinConnected=NULL;
                            }
						}
					if (pPin!=NULL)
                        {
                        pPin->Release();
                        pPin=NULL;
                        }
					}
                if (pins!=NULL)
                    {
    				pins->Release();
                    pins=NULL;
                    }
				}
			}
        if (pFilter!=NULL)
		    {
            pFilter->Release();
            pFilter=NULL;
            }
		}
        if (pFilters!=NULL)
            {
    		pFilters->Release();
            pFilters=NULL;
            }

}