Interfaccia Xcv TCPMON

Questa sezione descrive l'interfaccia transceive (Xcv) per il monitor porta TCP/IP standard (TCPMON). Questa interfaccia, implementata tramite le chiamate di funzione XcvData e XcvDataPort , consente a tali utenti di configurare una porta della stampante TCP/IP o di ottenere informazioni sulla configurazione di una porta della stampante TCP/IP. L'interfaccia Xcv descritta in questa sezione è specifica per le porte TCP/IP. Altre interfacce Xcv potrebbero essere disponibili per altri tipi di porta.

Per ottenere un handle per un'interfaccia Xcv per un computer locale o un computer remoto, chiamare la funzione OpenPrinter . L'esempio di codice seguente illustra come ottenere un handle Xcv su una porta:

HANDLE hXcv = INVALID_HANDLE_VALUE;
PRINTER_DEFAULTS Defaults = { NULL, NULL, <Required Access> };

// Handle to a local machine
if (OpenPrinter(",XcvPort <PortName>", &hXcv, &Defaults )
{
 // hXvc contains an Xcv data handle to a local TCPMON port
}

// Handle to a remote machine
if (OpenPrinter("<ServerName>\\,XcvPort <PortName>", &hXcv, &Defaults )
{
 // hXvc contains an Xcv data handle to a TCPMON port on <ServerName>
}

Nell'esempio di codice ServerName e PortName rappresentano stringhe di nome server e porta. Dopo aver ottenuto l'handle, è possibile eseguire query sulle informazioni specifiche per il monitoraggio della porta TCPMON oppure modificare la configurazione della porta. Si noti che l'accesso necessario per il monitoraggio delle porte deve essere specificato nel membro DesiredAccess della struttura PRINTER_DEFAULTS o passare NULL se non è necessaria alcuna sicurezza speciale. Per determinate chiamate alla funzione XcvData , ad esempio quando vengono specificati i comandi AddPort e DeletePort (vedere Comandi Xcv TCPMON), è necessario SERVER_ACCESS_ADMINISTER privilegio. Per informazioni dettagliate sulla funzione OpenPrinter e sui diritti di accesso che possono essere richiesti nella struttura PRINTER_DEFAULTS, vedere la documentazione della funzione OpenPrinter .

Se la porta non esiste ancora, l'handle Xcv può essere ottenuto dal server specificando il nome del monitoraggio. Nel caso della porta di monitoraggio porta TCP/IP standard, si tratta di "Porta TCP/IP standard". L'esempio di codice seguente illustra come ottenere un handle di dati Xcv per un monitoraggio delle porte:

HANDLE hXcv = INVALID_HANDLE_VALUE;
PRINTER_DEFAULTS Defaults = { NULL, NULL, <Required Access> };

// Handle to a local machine
if (OpenPrinter(",XcvMonitor <MonitorName>", &hXcv, &Defaults )
{
 // hXcv contains an Xcv data handle to the monitor <MonitorName>
}

// Handle to a remote machine
if (OpenPrinter("<ServerName>\\,XcvMonitor <MonitorName>", &hXcv, &Defaults )
{
 // hXcv contains an Xcv data handle to the monitor 
 // <MonitorName> on the server <ServerName>
}

Nell'esempio di codice ServerName e PortName rappresentano stringhe di nome server e porta. Dopo aver ottenuto l'handle dati Xcv, è possibile inviare istruzioni e richieste al monitoraggio chiamando la funzione XcvData .

Si noti che il valore restituito dalla funzione XcvData indica solo se i dati sono stati inviati correttamente al monitoraggio delle porte. Il valore restituito TRUE non indica che l'operazione è riuscita. Per determinare se l'operazione è riuscita, controllare il valore in *pdwStatus. Questi valori di stato sono riepilogati nella tabella seguente:

Valore di stato Significato
NO_ERROR L'operazione è stata completata.
ERROR_ACCESS_DENIED L'utente dispone di privilegi insufficienti. Il comando richiede SERVER_ACCESS_ADMINISTER privilegio.
ERROR_INSUFFICIENT_BUFFER È necessario un buffer di output, ma è inferiore a quello richiesto.
ERROR_INVALID_DATA È necessario un buffer di input, ma il puntatore è NULL o le dimensioni del buffer di input sono inferiori a quelle necessarie.
ERROR_INVALID_HANDLE L'handle dati Xcv non è valido.
ERROR_INVALID_LEVEL La struttura dei dati di input o output non è la versione corretta.
ERROR_INVALID_PARAMETER È necessario un buffer di output, ma è NULL o il parametro richiesto per l'output è NULL e il buffer di output è troppo piccolo oppure il monitoraggio della porta TCP/IP standard non riconosce il comando da eseguire.