Compartilhar via


Device Interfaces

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Classes interface de dispositivo são os métodos disponível para aplicativos para acessar os recursos de um driver de dispositivo. Eles indicam a qualquer recebe notificações que uma interface específica está presente. Um driver de dispositivo pode ter múltiplo classes interface dispositivo, ou ele não pode ter nenhum classes interface dispositivo.

IClass Subchaves Registro referência dispositivo interfaces e seus associado GUIDs. O arquivo cabeçalho (.h) que declara a interface geralmente define a GUID e associa o GUID com a interface. O arquivo cabeçalho associa a interface com o GUID definindo a GUID. Você deve expor as classes interface através de IClass Valores Registro ou por chamado AdvertiseInterface. Você também pode definir suas próprias classes interface.

Existem há restrições na interface de dispositivo. É o meio de acessando-dependente sobre a interface.

O seguinte exemplo de código mostra como um arquivo cabeçalho geralmente define uma interface dispositivo GUIDs usando um exemplo GUID.

#define DEVCLASS_IFCNAME_STRING TEXT("{12345678-1234-1234-1122334455667788}")
#define DEVCLASS_IFCNAME_GUID { 0x12345678, 0x1234, 0x1234, { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88 } }

Um driver no Device Manager que expõe uma interface publicizes isso pela configuração de IClass valor definido apropriadamente na chave Registro passada para ActivateDeviceEx. Com AdvertiseInterface, um driver de dispositivo anuncia qual dispositivo interfaces ele expõe no Registro. Este comunicado está disponível para qualquer aplicativo ou driver que chama RequestDeviceNotifications. Um aplicativo ou driver pode parar de receber notificações dispositivo por chamado StopDeviceNotifications. Essas funções permitem acessar GUID e o nome da interface de dispositivo. O GUID descreve a interface dispositivo e o nome disambiguates múltiplo instâncias de interface desse dispositivo. Exemplo, há um GUID para o genérico transmitir interface e os nomes " com1: " e " DSK1: " referir a duas instâncias distintas do genérico interface transmitir.

É possível para duas classes interface dispositivo diferentes GUIDs para ter ocorrências com o mesmo nome. O nome tem significado somente no contexto dos métodos acessar de interface de dispositivo nomeado por classe de interface dispositivo GUID.

Um driver de dispositivo deve somente exportar uma interface dispositivo se ele implementa essa interface dispositivo inteiramente. Nenhuma interação com um driver esperam suporte completo da interface de dispositivo-anuncia.

Por chamado AdvertiseInterface, drivers dispositivo podem explicitamente enviar notificações. Isso é basicamente para dispositivos armazenamento Removable-Media e outros drivers que não determinou em carregar-tempo exatamente quais interfaces eles serão expor.

Drivers de dispositivo devem explicitamente indicam que eles podem aceitar dispositivo identificador acessar solicitações. Se um driver de dispositivo expõe uma interface handle-Based dispositivo, o driver deve ser consiga aceitar um hOpenContext valor de zero no driver de dispositivo é outras funções. Um hOpenContext valor de zero indica que a acessar está sendo solicitada em um dispositivo nível e, possivelmente, com diferente OS nível segurança. Drivers de dispositivo que ler AccessCode e ShareMode Em seus XXX_Open Função deve tratar acessar identificador dispositivo solicitações apropriadamente. For Windows Embedded CE: Para obter mais informações sobre o XXX_Open função, consulte XXX_Open (Device Manager). GUIDs são usados para indicar suporte para acessar Device-Based individual e dispositivo alça-com base em interfaces.

Para obter informações sobre como localizar interfaces expostas por nome ou identificador de arquivo por um dispositivo específico, consulte Device File Names.

A seguinte tabela mostra as interfaces predefinidas e o arquivo de cabeçalho em % _WINCEROOT % em que as interfaces são definidas.

Interface Arquivo de Cabeçalho

BATTERY_DRIVER_CLASS

Public\Common\OAK\Inc\Battery.h

BLOCK_DRIVER_GUID

Public\Common\SDK\Inc\Storemgr.h

CDDA_MOUNT_GUID

Public\Common\SDK\Inc\Storemgr.h

CDFS_MOUNT_GUID

Public\Common\SDK\Inc\Storemgr.h

DEVCLASS_CARDSERV_GUID

Public\Common\DDK\Inc\Cardserv.h

Public\Common\DDK\Inc\Cardsv2.h

DEVCLASS_DISPLAY_GUID

Public\Common\OAK\Inc\Winddi.h

DEVCLASS_KEYBOARD_GUID

Public\Common\SDK\Inc\Keybd.h

DEVCLASS_STREAM_GUID

Public\Common\SDK\Inc\Pnp.h

DMCLASS_PROTECTEDBUSNAMESPACE

Public\Common\DDK\Inc\Devload.h

FATFS_MOUNT_GUID

Public\Common\SDK\Inc\Storemgr.h

FSD_MOUNT_GUID

Public\Common\SDK\Inc\Storemgr.h

NLED_DRIVER_CLASS

Public\Common\SDK\Inc\NLED.h

PMCLASS_BLOCK_DEVICE

Public\Common\SDK\Inc\Pm.h

PMCLASS_DISPLAY

Public\Common\SDK\Inc\Pm.h

PMCLASS_GENERIC_DEVICE

Public\Common\SDK\Inc\Pm.h

PMCLASS_NDIS_MINIPORT

Public\Common\SDK\Inc\Pm.h

STORE_MOUNT_GUID

Public\Common\SDK\Inc\Storemgr.h

STOREMGR_DRIVER_GUID

Public\Common\SDK\Inc\Storemgr.h

UDFS_MOUNT_GUID

Public\Common\SDK\Inc\Storemgr.h

CE_DRIVER_POWER_MANAGEABLE_GENERIC_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_POWER_MANAGEABLE_NDIS_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_BLOCK_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_POWER_MANAGEABLE_BLOCK_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_POWER_MANAGEABLE_DISPLAY_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_BUS_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_BUILTIN_BUS_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_SD_BUS_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_USBFN_BUS_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_PCMCIA_BUS_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_PCCARD_BUS_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_PCCARD_SOCKET_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_PCCARD_SOCKET_ISA_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_PCCARD_SOCKET_PCI_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_GPS_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_PARALLEL_PORT_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_SERIAL_PORT_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_SERIAL_MODEM_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_KEYBOARD_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_BLUTOOTH_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_CAMERA_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_WAVEDEV_GUID

Public\Common\SDK\Inc\cedrv_guid.h

CE_DRIVER_WAVEDEV_UNIFIED_GUID

Public\Common\SDK\Inc\cedrv_guid.h

Observação

Outros predefinidos GUIDs para interfaces dispositivo estão contidas em vários arquivos Registro. Para localizar o outro predefinidos GUIDs, pesquisa para os valores IClass no arquivo %_WINCEROOT%\Public\Common\OAK\Files\Common.reg ou em um arquivo Registro driver-specific. Registro Driver-specific arquivos estão contidos no mesmo Diretório como a driver de dispositivo. For Windows Embedded CE: Para obter informações sobre onde os drivers são no código-fonte, consulte Device Driver Source Code.

See Also

Concepts

Loading Device Drivers
Bus Enumerator
Device Interface Notifications