Le funzionalità dei driver del controller seriale di SerCx2-Based

SerCx2 è un'estensione di Kernel-Mode Driver Framework (KMDF) che include funzionalità speciali per supportare i driver del controller seriale. Per ulteriori informazioni su KMDF, vedere Utilizzo di WDF per sviluppare un driver. Un driver del controller seriale basato su SerCx2 è un driver KMDF che utilizza i metodi e i callback in KMDF per eseguire operazioni generiche del driver e che comunica con SerCx2 per svolgere operazioni specifiche per i driver del controller seriale.

In genere, i controller seriali sono compatibili a livello hardware con dispositivi UART (universal asynchronous receiver/transmitter) 16550. Gli UART sono stati usati fin dai primi giorni del personal computing per controllare le porte seriali presenti nei casi dei PC desktop. Più di recente, i controller seriali sono contenuti nei circuiti integrati System on a Chip (SoC) per fornire comunicazioni a basso numero di pin con altri circuiti integrati. In una piattaforma hardware basata su SoC, la "porta seriale" a cui un client invia richieste di I/O è semplicemente un set di pin di interfaccia seriale sul chip SoC. Per ulteriori informazioni, vedere Panoramica dei driver del controller seriale.

Microsoft potrebbe fornire il driver del controller seriale per una famiglia di controller seriali con funzionalità hardware simili. In alternativa, il fornitore dell'hardware per un controller seriale con funzionalità speciali potrebbe fornire un driver di controller seriale personalizzato per supportare queste funzionalità.

Un driver di controller seriale comunica con SerCx2 tramite un'interfaccia DDI (Device Driver Interface). Il DDI SerCx2 ha due parti:

  • Set di metodi di supporto driver implementati da SerCx2 e chiamati dal driver del controller seriale.
  • Set di funzioni di callback degli eventi implementate dal driver del controller seriale e chiamate da SerCx2.

Per descrizioni dettagliate dei metodi e dei callback nel DDI SerCx2, vedere le informazioni di riferimento sull'estensione del framework seriale (SerCx2) versione 2 negli argomenti relativi all'intestazione sercx.h.

Anche se un fornitore di hardware ha la possibilità di scrivere un driver di controller seriale autonomo, è necessario un impegno significativo per farlo. Per confronto, lo sviluppo di un driver di controller seriale che usa SerCx2 è più semplice e in genere genera un driver molto più piccolo e affidabile.

SerCx2 gestisce le attività seguenti per conto del driver del controller:

  • Operazioni di lettura e scrittura
  • Rilevamento timeout di I/O seriale
  • Eventi hardware
  • Trasferimenti DMA di sistema (se sono supportate le transazioni DMA di sistema)
  • Transizioni da e verso stati del dispositivo a basso consumo
  • Annullamenti delle richieste di I/O (tranne durante le transazioni di I/O personalizzate)

Per gestire le operazioni di lettura e scrittura, SerCx2 trasforma IRP_MJ_READ e IRP_MJ_WRITE richieste dai client in transazioni di I/O relativamente semplici per l'elaborazione del driver del controller seriale. Per altre informazioni, vedere Transazioni di I/O SerCx2.

SerCx2 è incluso in Windows come componente denominato Sercx2.sys. Il driver del controller seriale collega in modo statico alla libreria SerCx2, Sercxstubs.lib (versione 2.0) e, in fase di esecuzione, comunica con Sercx2.sys. Il DDI SerCx2 è definito nel file di intestazione 2.0\Sercx.h. Sercxstubs.lib e Sercx.h sono disponibili in Windows Driver Kit per Windows 8.1.