StarBurn SDK (Software Development Kit) |
__stdcall STARBURN_IMPEX_API EXCEPTION_NUMBER StarBurn_ISO9660JolietFileTree_Read(IN PVOID p__PVOID__ISO9660JolietFileTree, OUT PCHAR p__PCHAR__ExceptionText, IN ULONG p__ULONG__ExceptionTextSizeInUCHARs, OUT PULONG p__PULONG__SystemError, IN LONG p__LONG__IoTransferSizeInUCHARs, OUT PUCHAR p__PUCHAR__DataBuffer);
Parameters | Description |
IN PVOID p__PVOID__ISO9660JolietFileTree | Pointer to the ISO9660 or Joliet file tree object that toolkit allocated during call to StarBurn_ISO9660JolietFileTree_Create and StarBurn_ISO9660FileTree_BuildImage was applied to. |
OUT PCHAR p__PCHAR__ExceptionText | Pointer to array of CHARs that will be used to store formatted exception description message. |
IN ULONG p__ULONG__ExceptionTextSizeInUCHARs | Size of the array of CHARs used to be formatted exception message storage. |
OUT PULONG p__PULONG__SystemError | Pointer to ULONG that will contain the system error (if some will occur). |
IN LONG p__LONG__IoTransferSizeInUCHARs | Number of UCHARs to read from the image fom the current offset. |
OUT PUCHAR p__PUCHAR__DataBuffer | Pointer to data buffer readen UCHARs will be stored. |
Execution status. EN_SUCCESS if the operation completed successfuly. If the exception number will be EN_SYSTEM_CALL_FAILED, variable that SystemError points to will be filled with system error. If something other then EN_SUCCESS will be returned buffer that ExceptionText will point to will be filled with formatted exception message.
This function reads ISO9660 or Joliet file system image from current offset into the user's data buffer. ISO9660 or Joliet file tree must have assigned all the logical block offsets and all file system internal structures allocated and initialized. The data that is read can be either stored in the file on the hard disk or directly written to CD/DVD/Blu-Ray/HD-DVD media.
Please see the BuildImage sample that will demonstrate how file system image can be stored on the hard disk drive and either burn later to CD/DVD/Blu-Ray/HD-DVD media or used with CD/DVD/Blu-Ray/HD-DVD emulation software packages. Also TrackAtOnceFromTree sample can be checked out to see how ISO9660 or Joliet image can be recorded on the CD/DVD/Blu-Ray/HD-DVD media w/o intermediate buffering on the hard disk.
This example allocates Joliet file tree from the directory, builds file system image, reads some data from it and destroys the file tree after it's not needed any more.
// Somewhere in the data region PVOID l__PVOID__FileTree; EXCEPTION_NUMBER l__EXCEPTION_NUMBER; ULONG l__ULONG__TreeNodes; ULONG l__ULONG__SystemError; CHAR l__CHAR__ExceptionText[ 1024 ]; UCHAR l__UCHAR__DataBuffer[ 4096 ]; LARGE_INTEGER l__LARGE_INTEGER__NumberOfUCHARs; // Prepare exception text buffer RtlZeroMemory( &l__CHAR__ExceptionText, sizeof( l__CHAR__ExceptionText ) ); // Try to create Joliet file tree l__EXCEPTION_NUMBER = StarBurn_ISO9660JolietFileTree_Create( &l__PVOID__FileTree, ( PCHAR )( &l__CHAR__ExceptionText ), sizeof( l__CHAR__ExceptionText ), &l__ULONG__Status, ( PCALLBACK )( StarBurn_Callback ), ( PVOID )( &l__LONG__TreeNodes ), TRUE, FALSE, FILE_TREE_JOLIET ); // Check for correct reply if ( l__EXCEPTION_NUMBER != EN_SUCCESS ) { // Handle error here... } // Try to build the image, start with LBA 0 and include up to 8 levels into the image l__EXCEPTION_NUMBER = StarBurn_ISO9660JolietFileTree_BuildImage( l__PVOID__FileTree, ( PCHAR )( &l__CHAR__ExceptionText ), sizeof( l__CHAR__ExceptionText ), &l__ULONG__SystemError, 0, 8 FALSE, "Volume", "Publisher", "Application" ); // Prepare data buffer RtlZeroMemory( &l__UCHAR__DataBuffer, sizeof( l__UCHAR__DataBuffer ) ); // Set transfer size l__LARGE_INTEGER__NumberOfUCHARs.QuadPart = sizeof( l__UCHAR__DataBuffer ); // Try to read l__EXCEPTION_NUMBER = StarBurn_ISO9660JolietFileTree_Read( l__PVOID__FileTree, ( PCHAR )( &l__CHAR__ExceptionText ), sizeof( l__CHAR__ExceptionText ), &l__ULONG__SystemError, l__LARGE_INTEGER__NumberOfUCHARs.LowPart, ( PUCHAR )( &l__UCHAR__DataBuffer ) ); // Check for success if ( l__EXCEPTION_NUMBER != EN_SUCCESS ) { // Handle error here... } // Do something with data buffer here... // Perform actions with Joliet tree here... // Destroy the Joliet file tree StarBurn_Destroy( &l__PVOID__FileTree ); // Just check for pointer (paranoid?) if ( l__PVOID__FileTree != NULL ) { // Handle error here... }