Compartilhar via


Device Information IOCTL Unification

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

No Windows Embedded CE 6.0, IOCTL_HAL_GET_DEVICEID e IOCTL_HAL_GET_UUID são substituído. Eles foram substituídos funcionalmente por novos códigos SPI_ * em IOCTL_HAL_GET_DEVICE_INFO. Anteriormente, os mecanismos para recuperar informações dispositivo foram espalhados por múltiplo IOCTLs.

Os exemplos a seguir ilustram o exigido alterações transição existentes OS componentes e aplicativos para usar o novo design unificados.

IOCTL_HAL_GET_DEVICE_ID

IOCTL preterida:

O substituído IOCTL exemplo preenchimentos de deviceID reserva com um seqüência de caracteres Unicode descrevendo o tipo plataforma, isto é " CEPC" as well as uma multibyte seqüência de caracteres descrevendo o nome BOOTME do dispositivo, ou seja, " CEPC53902 ".

DWORD deviceID[64];
DWORD dwSize = sizeof(deviceID);
KernelIoControl(IOCTL_HAL_GET_DEVICEID, NULL,
                0, deviceID, dwSize, &dwSize));
PDEVICE_ID pDeviceId = (PDEVICE_ID)(&(deviceID[0]));

IOCTL unificada:

Os preenchimentos exemplo IOCTL unificados de platformName reserva com um seqüência de caracteres Unicode descrevendo o tipo plataforma, isto é " CEPC" e preenche o bootmeName reserva com um seqüência de caracteres Unicode descrevendo o nome BOOTME do dispositivo, ou seja, " CEPC53902 ".

WCHAR platformName[32];
DWORD platformNameSize = sizeof(platformName);
UINT32 spiValue;
WCHAR bootmeName[32];
DWORD bootmeNameSize = sizeof(bootmeName);
spiValue = SPI_GETPLATFORMNAME;
KernelIoControl(IOCTL_HAL_GET_DEVICE_INFO, spiValue,
                sizeof(spiValue), platformName,
                platformNameSize, &platformNameSize));
spiValue = SPI_GETBOOTMENAME;
KernelIoControl(IOCTL_HAL_GET_DEVICE_INFO, spiValue,
                sizeof(spiValue), bootmeName,
                bootmeNameSize, &bootmeNameSize));

IOCTL_HAL_GET_UUID

IOCTL preterida:

O substituído IOCTL exemplo preenchimentos de UUID reserva com uma plataforma-exclusivo GUID. Se a plataforma não suporte um exclusivo GUID, será retornado um valor possivelmente non-Unique.

GUID uuid;
DWORD dwSize = sizeof(uuid);
KernelIoControl(IOCTL_HAL_GET_UUID, NULL,
                0, uuid, dwSize, &dwSize));

IOCTL unificada:

Os preenchimentos exemplo IOCTL unificados de UUID reserva com uma plataforma-exclusivo GUID. Se a plataforma não suporte a GUID, exclusivo KernelIoControl Retornará FALSO. Se codificar existente depende o valor possivelmente non-Unique retornado pelo IOCTL substituído, você pode chamar IOCTL_HAL_GET_DEVICE_INFO/SPI_GETBOOTMENAME a solicitação (possivelmente non-Unique) dados para preencher os UUID estrutura. Isso é semelhante de substituído técnica, mas sem criar a expectativa de exclusivo dados.

GUID uuid;
DWORD dwSize = sizeof(uuid);
UINT32 spiValue = SPI_GETUUID;
KernelIoControl(IOCTL_HAL_GET_DEVICE_INFO, spiValue,
                sizeof(spiValue), &uuid,
                dwSize, &dwSize));

Informações IOCTL_HAL_GET_DEVICE/SPI_GETPLATFORMTYPE

IOCTL preterida:

O substituído IOCTL exemplo preenchimentos de platformType reserva com um seqüência de caracteres Unicode descrevendo o nome plataforma, isto é " CEPC".

DWORD platformType[32];
DWORD dwSize = sizeof(platformType);
UINT32 spiValue = SPI_GETPLATFORMTYPE;
KernelIoControl(IOCTL_HAL_GET_DEVICE_INFO, spiValue,
                sizeof(spiValue), platformType,
                dwSize, &dwSize));

IOCTL unificada:

Os preenchimentos exemplo IOCTL unificados de platformName reserva com um seqüência de caracteres Unicode descrevendo o nome plataforma, isto é " CEPC".

WCHAR platformName[64];
DWORD dwSize = sizeof(platformName);
UINT32 spiValue = SPI_GETPLATFORMNAME;
KernelIoControl(IOCTL_HAL_GET_DEVICE_INFO, spiValue,
                sizeof(spiValue), platformName,
                dwSize, &dwSize));

Informações IOCTL_HAL_GET_DEVICE/SPI_GETPLATFORMVERSION

**IOCTL preterida:

O substituído IOCTL esperava uma matriz de versões retornadas. De exemplo, verificando para um valor {4,2} na matriz, ele pode verificar a versão como WinCE 4.2 ou posterior. **

IOCTL unificada:

O novo IOCTL unificado retorna uma única versão. De exemplo, se você desejar para verificar para versão 4.2 ou posterior, simplesmente um > = Comparação entre a valor de retorno e {4,2}.

See Also

Reference

IOCTL_HAL_GET_DEVICE_INFO
IOCTL_HAL_GET_DEVICEID
IOCTL_HAL_GET_UUID

Other Resources

SystemParametersInfo