Ух ты, похоже, что это все озадачило ... После долгих копаний вот как это сделать:
DWORD CreatePort(LPWSTR portName)
{
HANDLE hPrinter;
PRINTER_DEFAULTS PrinterDefaults;
memset(&PrinterDefaults, 0, sizeof(PrinterDefaults));
PrinterDefaults.pDatatype = NULL;
PrinterDefaults.pDevMode = NULL;
PrinterDefaults.DesiredAccess = SERVER_ACCESS_ADMINISTER;
DWORD needed;
DWORD rslt;
if (!OpenPrinter(",XcvMonitor Local Port", &hPrinter, &PrinterDefaults))
return -1;
DWORD xcvresult= 0;
if (!XcvData(hPrinter, L"AddPort", (BYTE *)portName, (lstrlenW(portName) + 1)*2, NULL, 0, &needed, &xcvresult))
rslt= GetLastError();
if (!ClosePrinter(hPrinter))
rslt= GetLastError();
return rslt;
}
Настройка порта на данном принтере относительно проста - OpenPrinter (), GetPrinter () с PRINTER_INFO_2, SetPrinter (), ClosePrinter ()
Cheerio.