La funzione DeviceCapabilities recupera le funzionalità di un driver della stampante.
Sintassi
int DeviceCapabilitiesA(
[in] LPCSTR pDevice,
[in] LPCSTR pPort,
[in] WORD fwCapability,
[out] LPSTR pOutput,
[in] const DEVMODEA *pDevMode
);
Parametri
[in] pDevice
Puntatore a una stringa con terminazione Null contenente il nome della stampante. Si noti che questo è il nome della stampante, non del driver della stampante.
[in] pPort
Puntatore a una stringa con terminazione Null contenente il nome della porta a cui è connesso il dispositivo, ad esempio LPT1.
[in] fwCapability
Funzionalità di cui eseguire query. Questo parametro può essere uno dei valori seguenti.
Valore
Significato
DC_BINNAMES
Recupera i nomi dei contenitori di carta della stampante. Il buffer pOutput riceve una matrice di buffer di stringhe. Ogni buffer di stringa è lungo 24 caratteri e contiene il nome di un contenitore di carta. Il valore restituito indica il numero di voci nella matrice. Le stringhe del nome vengono terminate con null, a meno che il nome non sia lungo 24 caratteri. Se pOutput è NULL, il valore restituito è il numero di voci bin necessarie.
DC_BINS
Recupera un elenco di contenitori di carta disponibili. Il buffer pOutput riceve una matrice di valori word che indicano le origini di carta disponibili per la stampante. Il valore restituito indica il numero di voci nella matrice. Per un elenco dei possibili valori di matrice, vedere la descrizione del membro dmDefaultSource della struttura DEVMODE . Se pOutput è NULL, il valore restituito indica il numero richiesto di voci nella matrice.
DC_COLLATE
Se la stampante supporta la compressione, il valore restituito è 1; in caso contrario, il valore restituito è zero. Il parametro pOutput non viene usato.
DC_COLORDEVICE
Se la stampante supporta la stampa a colori, il valore restituito è 1; in caso contrario, il valore restituito è zero. Il parametro pOutput non viene usato.
DC_COPIES
Restituisce il numero di copie che il dispositivo può stampare.
DC_DRIVER
Restituisce il numero di versione del driver della stampante.
DC_DUPLEX
Se la stampante supporta la stampa duplex, il valore restituito è 1; in caso contrario, il valore restituito è zero. Il parametro pOutput non viene usato.
DC_ENUMRESOLUTIONS
Recupera un elenco delle risoluzioni supportate dalla stampante. Il buffer pOutput riceve una matrice di valori LONG. Per ogni risoluzione supportata, la matrice contiene una coppia di valori LONG che specificano le dimensioni x e y della risoluzione, in punti per pollice. Il valore restituito indica il numero di risoluzioni supportate. Se pOutput è NULL, il valore restituito indica il numero di risoluzioni supportate.
DC_EXTRA
Restituisce il numero di byte necessari per la parte specifica del dispositivo della struttura DEVMODE per il driver della stampante.
DC_FIELDS
Restituisce il membro dmFields della struttura del driver della stampante DEVMODE. Il membro dmFields indica quali membri nella parte indipendente dal dispositivo della struttura sono supportati dal driver della stampante.
DC_FILEDEPENDENCIES
Recupera i nomi di tutti i file aggiuntivi che devono essere caricati quando viene installato un driver. Il buffer pOutput riceve una matrice di buffer di stringhe. Ogni buffer di stringa è lungo 64 caratteri e contiene il nome di un file. Il valore restituito indica il numero di voci nella matrice. Le stringhe del nome vengono terminate con null a meno che il nome non sia lungo 64 caratteri. Se pOutput è NULL, il valore restituito è il numero di file.
DC_MAXEXTENT
Restituisce le dimensioni massime della carta che il dmPaperLength e dmPaperWidth membri della struttura DEVMODE del driver della stampante. LoWORD del valore restituito contiene il valore massimo dmPaperWidth e HIWORD contiene il valore massimo dmPaperLength.
DC_MEDIAREADY
Recupera i nomi dei moduli cartacei attualmente disponibili per l'utilizzo. Il buffer pOutput riceve una matrice di buffer di stringhe. Ogni buffer stringa è lungo 64 caratteri e contiene il nome di un modulo cartaceo. Il valore restituito indica il numero di voci nella matrice. Le stringhe del nome vengono terminate con null a meno che il nome non sia lungo 64 caratteri. Se pOutput è NULL, il valore restituito corrisponde al numero di moduli cartacei.
DC_MEDIATYPENAMES
Recupera i nomi dei tipi di supporti supportati. Il buffer pOutput riceve una matrice di buffer di stringhe. Ogni buffer di stringa è lungo 64 caratteri e contiene il nome di un tipo di supporto supportato. Il valore restituito indica il numero di voci nella matrice. Le stringhe vengono terminate con null a meno che il nome non sia lungo 64 caratteri. Se pOutput è NULL, il valore restituito è il numero di nomi dei tipi di supporto necessari.
DC_MEDIATYPES
Recupera un elenco di tipi di supporti supportati. Il pOutput buffer riceve una matrice di valori DWORD che indicano i tipi di supporti supportati. Il valore restituito indica il numero di voci nella matrice. Per un elenco dei possibili valori di matrice, vedere la descrizione del membro dmMediaType della struttura DEVMODE . Se pOutput è NULL, il valore restituito indica il numero richiesto di voci nella matrice.
DC_MINEXTENT
Restituisce le dimensioni minime della carta che il dmPaperLength e dmPaperWidth membri della struttura di DEVMODE del driver della stampante. LoWORD del valore restituito contiene il valore minimo dmPaperWidth e HIWORD contiene il valore minimo dmPaperLength.
DC_ORIENTATION
Restituisce la relazione tra orientamento verticale e orizzontale per un dispositivo, in termini di numero di gradi che l'orientamento verticale viene ruotato in senso antiorario per produrre l'orientamento orizzontale. Il valore restituito può essere uno dei seguenti:
0
Nessun orientamento orizzontale.
90
Il ritratto viene ruotato di 90 gradi per produrre paesaggio.
270
Il ritratto viene ruotato di 270 gradi per produrre paesaggio.
DC_NUP
Recupera una matrice di numeri interi che indicano che la stampante può stampare più pagine documento per pagina stampata. Il buffer pOutput riceve una matrice di valori DWORD . Ogni valore rappresenta un numero supportato di pagine documento per pagina stampata. Il valore restituito indica il numero di voci nella matrice. Se pOutput è NULL, il valore restituito indica il numero richiesto di voci nella matrice.
DC_PAPERNAMES
Recupera un elenco di nomi di carta supportati, ad esempio Lettera o Legale. Il buffer pOutput riceve una matrice di buffer di stringhe. Ogni buffer stringa è lungo 64 caratteri e contiene il nome di un modulo cartaceo. Il valore restituito indica il numero di voci nella matrice. Le stringhe del nome vengono terminate con null a meno che il nome non sia lungo 64 caratteri. Se pOutput è NULL, il valore restituito corrisponde al numero di moduli cartacei.
DC_PAPERS
Recupera un elenco di formati di carta supportati. Il buffer pOutput riceve una matrice di valori word che indicano le dimensioni della carta disponibili per la stampante. Il valore restituito indica il numero di voci nella matrice. Per un elenco dei possibili valori di matrice, vedere la descrizione del membro dmPaperSize della struttura DEVMODE . Se pOutput è NULL, il valore restituito indica il numero richiesto di voci nella matrice.
DC_PAPERSIZE
Recupera le dimensioni, in decimi di millimetri, di ogni formato di carta supportato. Il buffer pOutput riceve una matrice di strutture POINT . Ogni struttura contiene la larghezza (dimensione x) e la lunghezza (dimensione y) di un formato carta come se il foglio fosse nell'orientamento DMORIENT_PORTRAIT. Il valore restituito indica il numero di voci nella matrice.
DC_PERSONALITY
Recupera un elenco di lingue di descrizione della stampante supportate dalla stampante. Il buffer pOutput riceve una matrice di buffer di stringhe. Ogni buffer è lungo 32 caratteri e contiene il nome di una lingua di descrizione della stampante. Il valore restituito indica il numero di voci nella matrice. Le stringhe del nome vengono terminate con null a meno che il nome non sia lungo 32 caratteri. Se pOutput è NULL, il valore restituito indica il numero richiesto di voci di matrice.
DC_PRINTERMEM
Il valore restituito è la quantità di memoria della stampante disponibile, espressa in kilobyte. Il parametro pOutput non viene usato.
DC_PRINTRATE
Il valore restituito indica la frequenza di stampa della stampante. Il valore restituito per DC_PRINTRATEUNIT indica le unità del valore DC_PRINTRATE. Il parametro pOutput non viene usato.
DC_PRINTRATEPPM
Il valore restituito indica la frequenza di stampa della stampante, in pagine al minuto. Il parametro pOutput non viene usato.
DC_PRINTRATEUNIT
Il valore restituito è uno dei valori seguenti che indicano le unità di frequenza di stampa per il valore restituito per il flag DC_PRINTRATE. Il parametro pOutput non viene usato.
PRINTRATEUNIT_CPS
Caratteri al secondo.
PRINTRATEUNIT_IPM
Pollici al minuto.
PRINTRATEUNIT_LPM
Righe al minuto.
PRINTRATEUNIT_PPM
Pagine al minuto.
DC_SIZE
Restituisce il membro dmSize della struttura devMODE del driver della stampante.
DC_STAPLE
Se la stampante supporta l'associazione, il valore restituito è un valore diverso da zero; in caso contrario, il valore restituito è zero. Il parametro pOutput non viene usato.
DC_TRUETYPE
Recupera le capacità del driver per l'uso dei tipi di carattere TrueType. Per DC_TRUETYPE, il parametro pOutput deve essere NULL. Il valore restituito può essere uno o più dei seguenti:
DCTT_BITMAP
Il dispositivo può stampare i tipi di carattere TrueType come grafica.
DCTT_DOWNLOAD
Il dispositivo può scaricare i tipi di carattere TrueType.
DCTT_SUBDEV
Il dispositivo può sostituire i tipi di carattere del dispositivo per i tipi di carattere TrueType.
DC_VERSION
Restituisce la versione della specifica a cui è conforme il driver della stampante.
[out] pOutput
Puntatore a una matrice. Il formato della matrice dipende dall'impostazione del parametro fwCapability. Vedere ogni funzionalità precedente per scoprire cosa viene restituito se pOutput è NULL.
[in] pDevMode
Puntatore a una struttura DEVMODE. Se questo parametro è NULL, DeviceCapabilities recupera i valori di inizializzazione predefiniti correnti per il driver della stampante specificato. In caso contrario, la funzione recupera i valori contenuti nella struttura in cui pDevMode punti.
Valore restituito
Se la funzione ha esito positivo, il valore restituito dipende dall'impostazione del parametro fwCapability. Un valore restituito pari a zero indica in genere che, mentre la funzione è stata completata correttamente, si è verificato un tipo di errore, ad esempio una funzionalità non supportata. Per altri dettagli, vedere le descrizioni dei valori fwCapability .
Se la funzione restituisce -1, ciò potrebbe significare che la funzionalità non è supportata o si è verificato un errore di funzione generale.
Osservazioni
Nota Questa è una funzione di blocco o sincrona e potrebbe non restituire immediatamente. La velocità con cui questa funzione restituisce dipende da fattori di runtime, ad esempio lo stato della rete, la configurazione del server di stampa e l'implementazione del driver della stampante, fattori 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.
La struttura DEVMODE a cui punta il parametro pDevMode può essere ottenuta chiamando la funzione DocumentProperties.
Se un driver della stampante supporta funzionalità di dispositivo personalizzate, il driver deve chiamare la funzione setPrinterData per ogni funzionalità personalizzata. La funzione SetPrinterData aggiunge i dati della stampante appropriati al sistema di stampa, che consente alle applicazioni a 32 bit di accedere alle funzionalità personalizzate nelle installazioni windows a 64 bit.
Per ogni funzionalità personalizzata, è necessario innanzitutto aggiungere dati della stampante che descrivono il tipo di funzionalità. A tale scopo, quando si chiama SetPrinterData, impostare la stringa pValueName su CustomDeviceCapabilityType_Xxx, dove "Xxx" è la rappresentazione esadecimale della funzionalità. Ad esempio, si potrebbe avere "CustomDeviceCapabilityType_1234". I dati del Registro di sistema impostati devono essere di tipo REG_DWORD ed è necessario impostarne il valore su uno dei seguenti:
0, se la funzionalità personalizzata è un DWORD
1, se la funzionalità personalizzata è un buffer di byte
2, se la funzionalità personalizzata è una matrice di elementi
Se la funzionalità personalizzata è una matrice di elementi, è necessario chiamare SetPinterData una seconda volta per fornire informazioni sulle dimensioni di un elemento nella matrice. A tale scopo, quando si chiama SetPinterData, la stringa pValueName specificata deve essere "CustomDeviceCapabilitySize_Xxx" dove Xxx è la rappresentazione esadecimale della funzionalità. Ad esempio, si potrebbe avere "CustomDeviceCapabilitySize_1234". I dati del Registro di sistema impostati devono essere del tipo REG_DWORD ed è necessario impostarne il valore sulle dimensioni in byte di un elemento nella matrice.
Nota
L'intestazione wingdi.h definisce DeviceCapabilities come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.