Share via


Funzione EnumPrinterData

La funzione EnumPrinterData enumera i dati di configurazione per una stampante specificata.

Per recuperare i dati di configurazione in una singola chiamata, usare la funzione EnumPrinterDataEx .

Sintassi

DWORD EnumPrinterData(
  _In_  HANDLE  hPrinter,
  _In_  DWORD   dwIndex,
  _Out_ LPTSTR  pValueName,
  _In_  DWORD   cbValueName,
  _Out_ LPDWORD pcbValueName,
  _Out_ LPDWORD pType,
  _Out_ LPBYTE  pData,
  _In_  DWORD   cbData,
  _Out_ LPDWORD pcbData
);

Parametri

hPrinter [in]

Handle per la stampante i cui dati di configurazione devono essere ottenuti. Usare la funzione OpenPrinter o AddPrinter per recuperare un handle della stampante.

dwIndex [in]

Valore di indice che specifica il valore dei dati di configurazione da recuperare.

Impostare questo parametro su zero per la prima chiamata a EnumPrinterData per un handle di stampante specificato. Incrementare quindi il parametro per una per le chiamate successive che coinvolgono la stessa stampante, fino a quando la funzione restituisce ERROR_NO_MORE_ITEMS. Per altre informazioni, vedere la sezione Osservazioni seguenti.

Se si usa la tecnica menzionata nelle descrizioni dei parametri cbValueName e cbData per ottenere valori di dimensioni del buffer adeguati, impostando entrambi i parametri su zero in una prima chiamata a EnumPrinterData per un handle di stampante specificato, il valore di dwIndex non importa per tale chiamata. Impostare dwIndex su zero nella chiamata successiva a EnumPrinterData per avviare il processo di enumerazione effettivo.

I valori dei dati di configurazione non sono ordinati. I nuovi valori avranno un indice arbitrario. Ciò significa che la funzione EnumPrinterData può restituire valori in qualsiasi ordine.

pValueName [out]

Puntatore a un buffer che riceve il nome del valore dei dati di configurazione, incluso un carattere Null terminante.

cbValueName [in]

Dimensioni, in byte, del buffer a cui fa riferimento pValueName.

Se si vuole che il sistema operativo fornisca una dimensione del buffer adeguata, impostare sia questo parametro che il parametro cbData su zero per la prima chiamata a EnumPrinterData per un handle di stampante specificato. Quando la funzione restituisce, la variabile puntata da pcbValueName conterrà una dimensione del buffer sufficiente per enumerare correttamente tutti i nomi dei valori dei dati di configurazione della stampante.

pcbValueName [out]

Puntatore a una variabile che riceve il numero di byte archiviati nel buffer a cui fa riferimento pValueName.

pType [out]

Puntatore a una variabile che riceve un codice che indica il tipo di dati archiviati nel valore specificato. Per un elenco dei codici di tipo possibili, vedere Tipi di valore del Registro di sistema. Il parametro pType può essere NULL se il codice di tipo non è obbligatorio.

pData [out]

Puntatore a un buffer che riceve il valore dei dati di configurazione.

Questo parametro può essere NULL se il valore dei dati di configurazione non è obbligatorio.

cbData [in]

Dimensioni, in byte, del buffer a cui fa riferimento pData.

Se si vuole che il sistema operativo fornisca una dimensione del buffer adeguata, impostare sia questo parametro che il parametro cbValueName su zero per la prima chiamata a EnumPrinterData per un handle di stampante specificato. Quando la funzione restituisce, la variabile puntata da pcbData conterrà una dimensione del buffer sufficiente per enumerare correttamente tutti i nomi dei valori dei dati di configurazione della stampante.

pcbData [out]

Puntatore a una variabile che riceve il numero di byte archiviati nel buffer a cui fa riferimento pData.

Questo parametro può essere NULL se pData è NULL.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è ERROR_SUCCESS.

Se la funzione ha esito negativo, il valore restituito è un codice di errore di sistema.

La funzione restituisce ERROR_NO_MORE_ITEMS quando non sono presenti più valori di dati di configurazione da recuperare per un handle di stampante specificato.

Commenti

Nota

Si tratta di una funzione di blocco o sincrona e potrebbe non restituire immediatamente. La velocità con cui questa funzione restituisce dipende da fattori di runtime come lo stato della rete, la configurazione del server di stampa e i fattori di implementazione del driver della stampante difficili da prevedere durante la scrittura di un'applicazione. La chiamata a questa funzione da un thread che gestisce l'interazione con l'interfaccia utente potrebbe rendere l'applicazione non rispondente.

EnumPrinterData recupera i dati di configurazione della stampante dalla funzione SetPrinterData . I dati di configurazione di una stampante sono costituiti da un set di valori denominati e tipizzati. La funzione EnumPrinterData ottiene uno di questi valori e il relativo nome e un codice di tipo, ogni volta che lo si chiama. Chiamare la funzione EnumPrinterData più volte in successione per ottenere tutti i valori di dati di configurazione di una stampante.

I dati di configurazione della stampante vengono archiviati nel Registro di sistema. Durante l'enumerazione dei dati di configurazione della stampante, è consigliabile evitare di chiamare le funzioni del Registro di sistema che potrebbero modificare tali dati.

Se si vuole che il sistema operativo fornisca una dimensione del buffer adeguata, chiamare prima EnumPrinterData con i parametri cbValueName e cbData impostati su zero, come indicato in precedenza nella sezione Parametri. Il valore di dwIndex non è importante per questa chiamata. Quando la funzione restituisce, *pcbValueName e *pcbData conterrà dimensioni del buffer sufficienti per enumerare tutti i nomi e i valori dei valori e dei valori dei dati di configurazione della stampante. Nella chiamata successiva allocare il nome valore e i buffer di dati impostare cbValueName e cbData sulle dimensioni in byte dei buffer allocati e impostare dwIndex su zero. Successivamente, continuare a chiamare la funzione EnumPrinterData , incrementando dwIndex per ogni volta, fino a quando la funzione restituisce ERROR_NO_MORE_ITEMS.

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Winspool.h (include Windows.h)
Libreria
Winspool.lib
DLL
Winspool.drv
Nomi Unicode e ANSI
EnumPrinterDataW (Unicode) e EnumPrinterDataA (ANSI)

Vedi anche

Stampa

Funzioni dell'API spooler di stampa

DeletePrinterData

EnumPrinterDataEx

GetPrinterData

OpenPrinter

Setprinter

SetPrinterData