c 如何得到打印机的名称

c 怎么得到打印机的名称?
CPrintDialog dlg(FALSE); CString divic; if (dlg.DoModal() == IDOK) { divic = dlg.GetDeviceName();//得到打印机的名称 MessageBox(hWnd,"打印","提示",MB_OK); } 
 
这是MFC提供的类方法, C语言有没有可以得到打印机名称的方法!

------解决方案--------------------
C/C++ code

DWORD   dwNeed,i,dwTemp,dwReturn;
PRINTER_INFO_2  * m_pPrinterInfo;
m_pPrinterInfo = new PRINTER_INFO_2; 

EnumPrinters( PRINTER_ENUM_LOCAL,NULL,2,(LPBYTE)m_pPrinterInfo,sizeof(PRINTER_INFO_2),&dwNeed,&dwReturn ); 
delete m_pPrinterInfo; 
if( ( m_pPrinterInfo = ( PRINTER_INFO_2 * )new BYTE[dwNeed] ) == NULL )
{
    return FALSE;
}

EnumPrinters (PRINTER_ENUM_LOCAL,NULL,2,(LPBYTE)m_pPrinterInfo,dwNeed,&dwTemp,&dwReturn);

for (i = 0; i < dwReturn; i++ )//Debug输出枚举到的驱动名称
{
    pPrinterInfo = m_pPrinterInfo + i;
    OutputDebugString(pPrinterInfo->pPrinterName);
}
delete m_pPrinterInfo;