Condividi tramite


funzione wiasWritePageBufToFile (wiamdef.h)

La funzione wiasWritePageBufToFile scrive il contenuto di un buffer di pagina temporaneo in un file di immagine.

Sintassi

HRESULT wiasWritePageBufToFile(
  [in] PMINIDRV_TRANSFER_CONTEXT pmdtc
);

Parametri

[in] pmdtc

Puntatore a una struttura MINIDRV_TRANSFER_CONTEXT .

Valore restituito

In caso di esito positivo, la funzione restituisce S_OK. Se la funzione ha esito negativo, restituisce un errore COM standard o uno degli errori WIA_ERROR_XXX (descritto nella documentazione di Microsoft Windows SDK).

Commenti

La funzione scrive i dati da un buffer di pagina temporaneo allocato da minidriver al file di immagine aperto dal servizio WIA. I minidriver chiamano in genere questa funzione dopo aver acquisito una pagina di dati per cui il minidriver allocato un buffer temporaneo.

Questa funzione è simile a wiasWriteBufToFile, che può essere usata per scrivere un buffer di dati immagine in qualsiasi tipo di file di immagine. Se un minidriver WIA intende scrivere una pagina di dati dell'immagine in un file TIFF a più pagine, inclusi tutti i tag appropriati, le voci ifD (Image File Directory) e altri dati nonimage, deve chiamare questa funzione, anziché wiasWriteBufToFile.

L'espressione pmdtc-hFile> contiene l'handle nel file nei trasferimenti di TYMED_FILE (e TYMED_MULTIPAGE_FILE). Questa operazione può essere usata per accedere direttamente al file scritto.

Un esempio di come usarlo è:

SetFilePointer((HANDLE)(LONG_PTR)pmdtc->hFile,0,NULL,FILE_BEGIN);
if (!WriteFile((HANDLE)(LONG_PTR)pmdtc->hFile,
    pMyBuffer,
    dwNumBytesToWrite,
   &dwNumBytesWritten,
    NULL)) {
     //
     // Some error happened
     //
     .
     .
     .
    }

Tuttavia, se si considera di usare solo l'handle di file nel TYMED_FILE e i trasferimenti di TYMED_MULTIPAGE_FILE (per scrivere dati direttamente nel file usando l'handle file, anziché chiamare wiasWritePageBufToFile), usare wiasWriteBufToFile. Questa funzione esegue l'equivalente di:

bRet = WriteFile((HANDLE)ULongToPtr(pmdtc->hFile),
    pmdtc->pTransferBuffer,
    pmdtc->lItemSize,
    &ulWritten,
    NULL);

Si tratta essenzialmente di ciò che si farebbe se si usasse direttamente l'handle di file. Il vantaggio del primo esempio è che se l'implementazione è stata modificata in una versione futura di WIA (ad esempio, se il servizio WIA ha iniziato a usare pipe anziché file, internamente), il driver non deve essere aggiornato.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Microsoft Windows Me e in Windows XP e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Desktop
Intestazione wiamdef.h (include Wiamdef.h)
Libreria Wiaservc.lib
DLL Wiaservc.dll

Vedi anche

MINIDRV_TRANSFER_CONTEXT

wiasWriteBufToFile

wiasWritePageBufToStream