[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

XcvData - to add port

Posted on 2002-03-14
5
Medium Priority
?
2,915 Views
Last Modified: 2013-12-03
I want to add a port without a dialog using XcvData winapi function. The problem is it returns invalid handle for 1st parameter which requires a printer handle, but i do not have a printer installed.
0
Comment
Question by:bansaldeep
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 22

Expert Comment

by:cookre
ID: 6867347
That's a print spooler call back.  And, yes, the first parm is a handle to an extant, open printer.

Are you sure you don't want AddPort()?
0
 

Author Comment

by:bansaldeep
ID: 6867410
Yes I am sure because i don't want a dialog for adding a port.
0
 

Accepted Solution

by:
adebear71 earned 300 total points
ID: 8587171
There is currently nothing on the Internet (I have found) about doing this, I would have thought more people would have looked into this. I could only find this way to do it.
Hack the registry and restart the print spooler

 To add an extra LPT port add a new string named LPT3 (or next LPT port) to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports with
a Blank value. Restart the Print Spooler and viola.

For a TCP/IP port look add one to your local machine (point to 127.0.0.1) and pick defaults and check the registry
entries in
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_127.0.0.1

hack these to your liking, restart print spooler and viola..

I had to do this for a project I needed to add a new port.



0
 
LVL 22

Expert Comment

by:cookre
ID: 8587257
Sounds like a perfectly reasonable solution.
0
 
LVL 5

Expert Comment

by:pscsuk
ID: 9247522
On the other hand, try this...

#include <windows.h>

#include <stdio.h>
int main(void)
{
      DWORD dwNeeded;
      DWORD dwStatus;
      WCHAR PortName[100];

      HANDLE hPrinter;
      PRINTER_DEFAULTS PrinterDefaults;

      PrinterDefaults.pDatatype = NULL;
      PrinterDefaults.pDevMode = NULL;
      PrinterDefaults.DesiredAccess = SERVER_ACCESS_ADMINISTER;
      
      if (!OpenPrinter(",XcvMonitor Local Port", &hPrinter, &PrinterDefaults))
      {
            printf("OpenPrinter failed - %d\n", GetLastError());
            return -1;
      }

      lstrcpyW(PortName, L"MyPort3");
      if (!XcvData(hPrinter, L"AddPort", (BYTE *)PortName, (lstrlenW(PortName) + 1) * 2, NULL, 0, &dwNeeded, &dwStatus))
      {
            printf("XcvData failed - %d\n", GetLastError());
      }
      if (dwStatus != 0)
      {
            printf("XcvData - Returned %lu\n", dwStatus);
      }

      if (!ClosePrinter(hPrinter))
      {
            printf("ClosePrinter failed - %lu\n", GetLastError());
      }

      return 0;
}

This will add a 'Local Port' port
See http://www.osr.com/ddk/graphics/provider_7a5j.htm for how to add a TCP/IP port

(This is the 'proper' way to do it - according to Microsoft)

0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

zlib is a free compression library (a DLL) on which the popular gzip utility is built.  In this article, we'll see how to use the zlib functions to compress and decompress data in memory; that is, without needing to use a temporary file.  We'll be c…
For most people, the WrapPanel seems like a magic when they switch from WinForms to WPF. Most of us will think that the code that is used to write a control like that would be difficult. However, most of the work is done by the WPF engine, and the W…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question