Device Information IOCTL Unification
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