StarBurn SDK (Software Development Kit) |
__stdcall STARBURN_IMPEX_API void StarBurn_UDF_FormatTreeItemAsDirectory(PUDF_TREE_ITEM p__PUDF_TREE_ITEM, unsigned long p__ULONG__GUID, char * p__PCHAR__Name, PUDF_TREE_ITEM p__PUDF_TREE_ITEM__Parent);
Parameters | Description |
PUDF_TREE_ITEM p__PUDF_TREE_ITEM | Pointer to UDF tree item to format as file. |
unsigned long p__ULONG__GUID | Globally unique identifier. |
char * p__PCHAR__Name | Pointer to name of the node to use in UDF volume. |
PUDF_TREE_ITEM p__PUDF_TREE_ITEM__Parent | Pointer to parent node. |
Nothing. This function cannot fail.
This function formats UDF tree item as directory.
Please check DVDVideoBuildImage and DVDVideoTrackAtOnceFromTree samples to find out how to use StarBurn_UDF_FormatTreeItemAsDirectory() in the right way.
This example allocates CdvdBurnerGrabber object, creates and destroys UDF tree and destroys the device object after it's not needed any more.
// Somewhere in the data region PVOID l__PVOID__CdvdBurnerGrabber; EXCEPTION_NUMBER l__EXCEPTION_NUMBER; ULONG l__ULONG__SystemError; CDB_FAILURE_INFORMATION l__CDB_FAILURE_INFORMATION; UDF_TREE_ITEM l__UDF_TREE_ITEM__Directory[ 10 ]; UDF_CONTROL_BLOCK l__UDF_CONTROL_BLOCK; unsigned char g__UCHAR__FileSystemHead[ ( UDF_HEAD_SIZE_IN_LOGICAL_BLOCKS * UDF_LOGICAL_BLOCK_SIZE_IN_UCHARS ) ]; unsigned char g__UCHAR__FileSystemTail[ ( UDF_TAIL_SIZE_IN_LOGICAL_BLOCKS * UDF_LOGICAL_BLOCK_SIZE_IN_UCHARS ) ]; unsigned char g__UCHAR__FileSystemStructures[ ( 1024 * UDF_LOGICAL_BLOCK_SIZE_IN_UCHARS ) ]; UDF_TREE_ITEM g__UDF_TREE_ITEM__File[ 200 ]; // File[ 0 ] is not used // Prepare exception text buffer RtlZeroMemory( &l__CHAR__ExceptionText, sizeof( l__CHAR__ExceptionText ) ); // Prepare CDB failure information RtlZeroMemory( &l__CDB_FAILURE_INFORMATION, sizeof( l__CDB_FAILURE_INFORMATION ) ); // Try to create CdvdBurnerGrabber on 0:0:4:0 with 32MB of cache l__EXCEPTION_NUMBER = StarBurn_CdvdBurnerGrabber_Create( &l__PVOID__CdvdBurnerGrabber, ( PCHAR )( &l__CHAR__ExceptionText ), sizeof( l__CHAR__ExceptionText ), &l__ULONG__SystemError, &l__CDB_FAILURE_INFORMATION, ( PCALLBACK )( StarBurn_Callback ), 0, 0, 4, 0, 32 ); // Check for correct reply if ( l__EXCEPTION_NUMBER != EN_SUCCESS ) { // Handle error here... } // Format VIDEO_TS directory StarBurn_UDF_FormatTreeItemAsDirectory( &l__UDF_TREE_ITEM__Directory[ 2 ], ( ++l__ULONG__GUID ), "VIDEO_TS", &l__UDF_TREE_ITEM__Directory[ 1 ] ); // Format file node 1 as file l__ULONG__SystemError = StarBurn_UDF_FormatTreeItemAsFile( &g__UDF_TREE_ITEM__File[ 1 ], ( ++l__ULONG__GUID ), "video_ts.ifo", "c:\VOB\video_ts.ifo", &l__UDF_TREE_ITEM__Directory[ 2 ] ); // Handle error case here if l__ULONG__SystemError is not NO_ERROR... // Create UDF tree with StarBurn_UDF_CreateEx() here l__EXCEPTION_NUMBER = StarBurn_UDF_CreateEx( ( PUCHAR )( &g__UCHAR__FileSystemHead ), sizeof( g__UCHAR__FileSystemHead ), ( PUCHAR )( &g__UCHAR__FileSystemTail ), sizeof( g__UCHAR__FileSystemTail ), ( PUCHAR )( &g__UCHAR__FileSystemStructures ), &l__UDF_TREE_ITEM__Directory[ 1 ], // This is ROOT &l__UDF_TREE_ITEM__Directory[ 2 ], // This is VIDEO_TS and not ROOT, for VIDEO_TS listing &l__UDF_TREE_ITEM__Directory[ 3 ], // This is AUDIO_TS and not ROOT, for AUDIO_TS listing &l__UDF_CONTROL_BLOCK, ( CHAR * )( &l__CHAR__ExceptionText ), sizeof( l__CHAR__ExceptionText ), &l__ULONG__Status, "VolumeLabel", "PublisherName", "ApplicationName", 2006, // Year 10, // Month 20, // Day, 12, // Hour 10, // Minute 0, // Second 50 // Millisecond ); // Check for correct reply if ( l__EXCEPTION_NUMBER != EN_SUCCESS ) { // Handle error here... } // Do something with the UDF tree here (maybe burn to CdvdBurnerGrabber object) // Clean up UDF stuff with StarBurn_UDF_CleanUp() here // Destroy UDF tree from the root StarBurn_UDF_Destroy( &l__UDF_TREE_ITEM__Directory[ 0 ], &l__UDF_CONTROL_BLOCK ); // Destroy the CdvdBurnerGrabber StarBurn_Destroy( &l__PVOID__CdvdBurnerGrabber ); // Just check for pointer (paranoid?) if ( l__PVOID__CdvdBurnerGrabber != NULL ) { // Handle error here... }