Partilhar via


Como os drivers identificam chamadas de 32 bits

Há duas maneiras de os drivers determinarem se o originador de uma solicitação IOCTL ou FSCTL é um aplicativo de 32 bits ou 64 bits. A primeira é que o aplicativo se identifique. O segundo é para o driver determinar por conta própria se o aplicativo é de 32 bits ou 64 bits.

A primeira técnica envolve a definição de um campo "64Bit" no código de controle IOCTL ou FSCTL. Este campo contém um único bit, que é definido apenas para chamadores de 64 bits. Assim, os chamadores de 64 bits identificam-se usando um conjunto separado de códigos de controle de 64 bits no qual esse bit é definido. Os chamadores de 32 bits usam um conjunto semelhante de códigos de controle no qual esse bit não está definido.

A segunda técnica permite que aplicativos de 32 e 64 bits continuem usando os mesmos códigos IOCTL ou FSCTL. Em vez disso, o driver determina se o processo de modo de usuário é de 32 ou 64 bits chamando IoIs32bitProcess.

A primeira técnica é mais eficiente, porque o driver verifica um sinalizador de bit em vez de chamar uma rotina de modo kernel. No entanto, a segunda técnica não requer alterações no código do modo de usuário. A técnica que você deve usar depende dos requisitos do seu driver e dos aplicativos que enviam solicitações de E/S para ele.