Condividi tramite


Selezione e selezione di un dispositivo IEEE 1284 collegato a una porta parallela

Un client può selezionare e deselezionare un dispositivo IEEE 1284.3 collegato a una porta parallela usando le seguenti richieste di controllo del dispositivo interno:

IOCTL_INTERNAL_SELECT_DEVICE

IOCTL_INTERNAL_DESELECT_DEVICE

Un driver in modalità kernel può usare anche le routine di callback del dispositivo parallelo fornite dal sistema ottenute usando una richiesta di IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO . Questa richiesta restituisce una struttura PARALLEL_PNP_INFORMATION che include i puntatori seguenti ai callback forniti dal sistema:

  • Il membro TrySelectDevice è un puntatore a un callback PPARALLEL_TRY_SELECT_ROUTINE , che deseleziona un dispositivo della catena IEEE 1284.3 o un dispositivo a catena IEEE 1284 end-of-chain collegato a una porta parallela.

  • Il membro DeselectDevice è un puntatore a un callback PPARALLEL_DESELECT_ROUTINE , che seleziona un dispositivo a catena IEEE 1284.3 o un dispositivo a catena IEEE 1284 end-of-chain collegato a una porta parallela.

Le richieste di selezione richiedono la gestione minima da parte del client perché il driver di funzione fornito dal sistema per le porte parallele accoda la richiesta di selezione per il client se la porta parallela viene allocata da un altro client. Dopo che il driver della funzione di porta parallela dequeue la richiesta di selezione, tenta di allocare la porta e di selezionare il dispositivo IEEE 1284.3. Il client può annullare una richiesta di selezione in qualsiasi momento a causa di un ritardo di timeout accettabile o di altre condizioni specifiche del dispositivo.

Nota Se un client usa solo il callback PPARALLEL_TRY_SELECT_ROUTINE per tentare di selezionare un dispositivo parallelo e altri client sono in lotta per la porta parallela, il driver di funzione fornito dal sistema per le porte parallele potrebbe non allocare mai la porta al client. Per garantire l'esito positivo, un client deve usare una richiesta di IOCTL_INTERNAL_SELECT_DEVICE . Le code del driver della funzione di porta parallela e i processi successivi, le richieste di allocazione delle porte e le richieste del dispositivo selezionano le richieste nell'ordine in cui vengono ricevute le richieste di dispositivo.

Dopo aver selezionato un dispositivo IEEE 1284.3 per un client, il client ha accesso esclusivo alla porta e al dispositivo IEEE 1284.3 selezionato. Il client deve chiamare il callback PPARALLEL_DESELECT_ROUTINE per liberare la porta e deselezionare il dispositivo IEEE 1284.3. Dopo che un client libera la porta, il driver della funzione di porta parallela dequeue una richiesta in sospeso, se presente ed elabora la richiesta.

Microsoft Windows 2000 supporta quattro dispositivi a catena daisy per porta; Tuttavia, Microsoft consiglia di usare al massimo due dispositivi concatenamento daisy per porta. Windows XP supporta al massimo due dispositivi con catena di daisy per porta.