Condividi tramite


Funzione DeviceCapabilitiesA (wingdi.h)

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 si tratta del 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ò avere 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 stringhe è lungo 24 caratteri e contiene il nome di un contenitore di carta. Il valore restituito indica il numero di voci nella matrice. Le stringhe dei nomi 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 DEVMODE del driver della stampante. 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 eventuali 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 dei nomi 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 i membri dmPaperLength e dmPaperWidth della struttura DEVMODE del driver della stampante possono specificare. Il valore LOWORD del valore restituito contiene il valore dmPaperWidth massimo e HIWORD contiene il valore massimo dmPaperLength .
DC_MEDIAREADY
Recupera i nomi dei moduli cartacei attualmente disponibili per l'uso. Il buffer pOutput riceve una matrice di buffer di stringhe. Ogni buffer di stringhe è lungo 64 caratteri e contiene il nome di un modulo cartaceo. Il valore restituito indica il numero di voci nella matrice. Le stringhe dei nomi 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 sono con terminazione 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 buffer pOutput 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 possono essere specificate dai membri dmPaperLength e dmPaperWidth della struttura DEVMODE del driver della stampante. Il valore 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
Verticale ruotato di 90 gradi per produrre il paesaggio.
270
Verticale 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 di documenti 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 di stringhe è lungo 64 caratteri e contiene il nome di un modulo cartaceo. Il valore restituito indica il numero di voci nella matrice. Le stringhe dei nomi 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 dimensione di carta supportata. Il buffer pOutput riceve una matrice di strutture POINT . Ogni struttura contiene la larghezza (dimensione x) e la lunghezza (dimensione y) di una carta come se la carta 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 dei nomi 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 disponibile della stampante, 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'apling, 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 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 specifica alla quale è 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 punta.

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ò può significare che la funzionalità non è supportata o si è verificato un errore di funzione generale.

Commenti

Nota Si tratta di una funzione di blocco o sincrona e potrebbe non restituire immediatamente. La velocità di restituzione di questa funzione 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. Chiamando questa funzione da un thread che gestisce l'interazione con l'interfaccia utente, l'applicazione potrebbe sembrare 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 di Windows a 64 bit.

Per ogni funzionalità personalizzata, è innanzitutto necessario 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 del 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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wingdi.h (include Windows.h)
Libreria WinSpool.lib
DLL WinSpool.drv

Vedi anche

DEVMODE

DOCINFO

Proprietà documento

GetDeviceCaps

GetProcAddress

LoadLibrary

PUNTO

Funzioni dell'API spooler di stampa

Stampa

Startdoc