Condividi tramite


Chiamata di COPP DDI dal driver di visualizzazione

Questa sezione si applica solo a Windows Server 2003 SP1 e versioni successive e Windows XP SP2 e versioni successive.

Il driver di visualizzazione avvia le chiamate al COPP DDI del driver video miniport usando richieste di I/O COPP (IOCTL). Il driver di visualizzazione chiama la funzione EngDeviceIoControl usando un COPP IOCTL per inviare una richiesta COPP sincrona al driver miniport video. Graphics Device Interface (GDI) usa un singolo buffer per l'input e l'output per passare la richiesta al sottosistema di I/O. Il sottosistema di I/O indirizza la richiesta alla porta video, che elabora la richiesta usando il driver miniport video.

Per trasferire le informazioni COPP tra il driver di visualizzazione e il driver miniport video, è possibile usare la struttura dei dati di esempio seguente e IOCTL. I driver possono usare la struttura dei dati e IOCTLs o crearne di nuovi, a seconda delle esigenze.

typedef struct {
    PVOID* ppThis;
    PVOID InputBuffer;
    HRESULT phr;
} COPP_IO_InputBuffer;

#define IOCTL_COPP_OpenDevice \
        CTL_CODE(FILE_DEVICE_VIDEO, 2190, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_COPP_CloseDevice \
        CTL_CODE(FILE_DEVICE_VIDEO, 2191, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_COPP_GetCertificateLength \
        CTL_CODE(FILE_DEVICE_VIDEO, 2192, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_COPP_KeyExchange \
        CTL_CODE(FILE_DEVICE_VIDEO, 2193, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_COPP_StartSequence \
        CTL_CODE(FILE_DEVICE_VIDEO, 2194, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_COPP_Command \
        CTL_CODE(FILE_DEVICE_VIDEO, 2195, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_COPP_Status \
        CTL_CODE(FILE_DEVICE_VIDEO, 2196, METHOD_BUFFERED, FILE_ANY_ACCESS)

Se non si usano gli IOCTL precedenti, è possibile definire i propri IOCTL privati, che devono essere formattati come descritto in Definizione dei codici di controllo di I/O.