Drivers Unicode
Se um driver precisa ser Unicode ou ANSI depende inteiramente da natureza da fonte de dados. Se a fonte de dados der suporte a dados Unicode, o driver deverá ser um driver Unicode. Se a fonte de dados der suporte apenas a dados ANSI, o driver deverá permanecer um driver ANSI.
Um driver Unicode deve exportar SQLConnectW para que o Gerenciador de Driver o reconheça como um driver Unicode.
Um driver Unicode deve aceitar funções Unicode (com um sufixo W) e armazenar dados Unicode. Ele também pode aceitar funções ANSI, mas isso não é obrigatório. (O Gerenciador de Driver não passa uma chamada de função ANSI com o sufixo A para o driver, mas o converte em uma chamada de função ANSI sem o sufixo e, em seguida, o passa para o driver.)
Um driver Unicode deve conseguir retornar conjuntos de resultados em Unicode ou ANSI, dependendo da associação do aplicativo. Se um aplicativo se vincular a SQL_C_CHAR, o driver Unicode deverá converter os dados SQL_WCHAR em SQL_CHAR. O gerenciador de drivers mapeará SQL_C_WCHAR para SQL_C_CHAR para drivers ANSI, mas não os mapeará para drivers Unicode.
Observação
Ao determinar o tipo de driver, o Gerenciador de Driver chamará SQLSetConnectAttr e definirá o atributo SQL_ATTR_ANSI_APP no tempo de conexão. Se o aplicativo estiver usando APIs ANSI, SQL_ATTR_ANSI_APP será definido como SQL_AA_TRUE; se estiver usando Unicode, será definido como um valor de SQL_AA_FALSE. Esse atributo é usado para que o driver possa demonstrar um comportamento diferente conforme o tipo de aplicativo. O atributo não pode ser diretamente definido pelo aplicativo e não é compatível com SQLGetConnectAttr. Se um driver apresentar o mesmo comportamento para aplicativos ANSI e Unicode, ele deverá retornar SQL_ERROR para esse atributo. Se o driver retornar SQL_SUCCESS, o Gerenciador de Driver separará as conexões Unicode e ANSI quando o Pool de Conexões for usado.