StarBurn SDK (Software Development Kit)
ContentsIndexHome
PreviousUpNext
StarBurn_UDF_FormatTreeItemAsDirectory Function
C++
__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...
}