| |
A função de int86x (0x13, &i, &o, &s) invoca a interrupção 13H com valores do registo do segmento. A função getdrivegeometry retorna o número total na movimentação.
- () Na função principal, peekb (do char) (0x0040, 0x0075); (o peekb da função é definido em DOS.H) retorna o número dos discos duros unidos ao sistema.
O número de discos duros conectou ao sistema é representado pelo byte armazenado na posição de memória 0040H: 0075H (segmento 0040H: 0075H Offset). Se o número dos discos duros conectados ao sistema for mais menos então o programa dois mostra a mensagem e as saídas de erro. Sectors_in_HDD1 = getdrivegeometry (0x80); começa os parâmetros do primeiro disco duro (0x80) e dos retornos o número total dos setores no primeiro disco duro. Similarmente Sectors_in_HDD2 = getdrivegeometry (0x81); começa os parâmetros do segundo disco duro (0x81) e dos retornos o número total dos setores no segundo disco duro. Depois que confirmação pelo usuário a continuar com imagem latente, primeira verificação a circunstância que o tamanho do disco duro da fonte não deve ser mais grande então o tamanho do disco duro do destino. Se o destino for menor, indicar a mensagem de erro e retirá-la. Se tudo estiver indo para a direita, copí os setores do disco da fonte ao disco do destino. Aqui nós somos leitura e escrita 61440 Bytes (120 setores com o cada um de 512 Bytes) em um momento de fazer o processo da imagem latente mais rápido.
Se você quiser usar mais setores em um momento, mesmo além do limite de 64K, você pode fazê-lo usando “o ponteiro enorme” no modelo grande da memória. O exemplo da especificação é como segue:
char huge array[100000L];
- A função, readabsolutesectors (0x80, laço, 120, amortecedor); lê os 120 setores do primeiro disco duro (0x80), partindo do número do setor especificado por laço longo não assinado do inteiro e armazenam os dados no amortecedor dos dados.
- A função, writeabsolutesectors (0x81, laço, 120, amortecedor); escreve os dados do amortecedor dos dados a 120 setores do segundo disco duro (0x81), partindo do número do setor especificado por laço longo não assinado do inteiro.
|
|