Condividi tramite


Funzione wiasWritePageBufToFile (wiamdef.h)

La funzione wiasWritePageBufToFile scrive il contenuto di un buffer di pagine 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 non riesce, restituisce un errore COM standard o uno degli errori WIA_ERROR_XXX (descritto nella documentazione di Microsoft Windows SDK).

Osservazioni

La funzione scrive i dati da un buffer di pagina temporaneo allocato da minidriver nel 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 ha 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 immagine in un file TIFF a più pagine, inclusi tutti i tag appropriati, le voci ifD (Image File Directory) e altri dati non di immagine, deve chiamare questa funzione, anziché wiasWriteBufToFile.

L'espressione pmdtc->hFile contiene l'handle nel file nei trasferimenti di TYMED_FILE (e TYMED_MULTIPAGE_FILE). Può essere usato per accedere direttamente al file in cui viene 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 sta valutando di usare solo l'handle di file nel TYMED_FILE e TYMED_MULTIPAGE_FILE trasferimenti (per scrivere dati direttamente nel file usando l'handle di file, invece di 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 dovrà essere aggiornato.

Fabbisogno

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

Vedere anche

MINIDRV_TRANSFER_CONTEXT

wiasWriteBufToFile

wiasWritePageBufToStream