ImageGetDigestStream

[Now Supported on Windows NT]

The ImageGetDigestStream function returns the data to be digested from a given image file, subject to the passed DigestLevel parameter.

BOOL ImageGetDigestStream(

IN HANDLE FileHandle,  
IN DWORD DigestLevel,  
IN PVOID Buffer,  
IN OUT PDWORD BufferLength,  
IN OUT PDWORD Context  
);  

Parameters

FileHandle

This supplies a handle to the image file to be modified. This handle must be opened for FILE_READ_DATA access.

DigestLevel

This indicates which aspects of the image are to be included in the returned data stream. The flag values are:

·DICE_PE_IMAGE_DIGEST_DEBUG_INFO

·DICE_PE_IMAGE_DIGEST_RESOURCES

Buffer

Provides a pointer to a buffer for the returned data.

BufferLength

On input, this supplies the size of the passed Buffer in bytes. On output, it returns the amount of data remaining in the image. Thus, an application can pass in a BufferLength of zero to determine exactly how much space is required to retrieve all the data in a single pass.

Context

Supplies and returns cross-call context information so sequential calls can return data blocks without requiring the system to maintain state information about the operation in progress.

This parameter must be zero on the first call for accurate results.

Return Values

If the function succeeds, the return value is TRUE.

If the function fails, then the return value is FALSE. To retrieve extended error information, call GetLastError.

Remarks

The ImageGetDigestStream function returns the data to be digested from a given image file, subject to the passed DigestLevel parameter. The order of the bytes will be consistent for different calls, which is required to ensure that the same message digest is always produced from the retrieved byte stream.

To ensure cross-platform compatibility, all implementations of this function must behave in a consistent manner with respect to the order in which the various parts of the image file are returned.

Data should be returned in the following order:

1.Image (executable and static data) information.

2.Resource data.

3.Debug information.

If any of these are not specified, the remaining parts must be returned in the same order.

Windows NT: This function is not available under Windows NT 3.51; it was introduced in Windows NT 4.0.