StarBurn SDK (Software Development Kit)
ContentsIndexHome
PreviousUpNext
StarBurn_CdvdBurnerGrabber_GetRPC Function
C++
__stdcall STARBURN_IMPEX_API EXCEPTION_NUMBER StarBurn_CdvdBurnerGrabber_GetRPC(IN PVOID p__PVOID__CdvdBurnerGrabber, OUT PCHAR p__PCHAR__ExceptionText, IN ULONG p__ULONG__ExceptionTextSizeInUCHARs, OUT PULONG p__PULONG__SystemError, OUT PCDB_FAILURE_INFORMATION p__PCDB_FAILURE_INFORMATION, OUT PUCHAR p__PUCHAR__TypeCode, OUT PUCHAR p__PUCHAR__NumberOfVendorResetsAvailable, OUT PUCHAR p__PUCHAR__NumberOfUserControlledChangesAvailable, OUT PUCHAR p__PUCHAR__RegionMask, OUT PUCHAR p__PUCHAR__RPCScheme);
Parameters 
Description 
IN PVOID p__PVOID__CdvdBurnerGrabber 
Pointer to the CdvdBurnerGrabber object that toolkit allocated before.
 
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).
 
OUT PCDB_FAILURE_INFORMATION p__PCDB_FAILURE_INFORMATION 
Pointer to CDB_FAILURE_INFORMATION that will be filled with apropriate values.
 
OUT PUCHAR p__PUCHAR__TypeCode 
Pointer to the variable to receive type code.
 
OUT PUCHAR p__PUCHAR__NumberOfVendorResetsAvailable 
Pointer to the variable to receive number of vendor-controlled region code resets.
 
OUT PUCHAR p__PUCHAR__NumberOfUserControlledChangesAvailable 
Pointer to the variable to receive number of user-controlled region code changes.
 
OUT PUCHAR p__PUCHAR__RegionMask 
Pointer to the variable to receive "hardware" region code mask.
 
OUT PUCHAR p__PUCHAR__RPCScheme 
Pointer to the variable to receive RPC management scheme. 

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. If the exception number will be EN_SCSI_CDB_FAILED, CDB_FAILURE_INFORMATION will be filled with apropriate values (CDB that faled, CDB size, SCSI sense data, SCSI sense data size, SCSI transport, device and host adapter status codes).

This function gets RPC (region play code) and some additional DVD region management information from "DVD part" of the CD/DVD/Blu-Ray/HD-DVD burner device object created with the call to the one of the StarBurn_CdvdBurnerGrabber_Create or StarBurn_CdvdBurnerGrabber_CreateEx API calls.

Please see GrabDisc sample that will demonstrate how DVD region management information could be get from DVD device with the help of the StarBurn_CdvdBurnerGrabber_GetRPC API call.

This example allocates CdvdBurnerGrabber object, gets DVD region management information from CD/DVD/Blu-Ray/HD-DVD device object and destroys it 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;
CHAR l__CHAR__ExceptionText[ 1024 ];
CDB_FAILURE_INFORMATION l__CDB_FAILURE_INFORMATION;
UCHAR l__UCHAR__TypeCode;
UCHAR l__UCHAR__NumberOfVendorResetsAvailable;
UCHAR l__UCHAR__NumberOfUserControlledChangesAvailable;
UCHAR l__UCHAR__RegionMask;
UCHAR l__UCHAR__RPCScheme;

// 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...
}

// Try to get DVD region management information from DVD device
l__EXCEPTION_NUMBER =
StarBurn_CdvdBurnerGrabber_GetRPC(
    l__PVOID__CdvdBurnerGrabber,
    ( PCHAR )( &l__CHAR__ExceptionText ),
    sizeof( l__CHAR__ExceptionText ),
    &l__ULONG__SystemError,
    &l__CDB_FAILURE_INFORMATION,
    &l__UCHAR__TypeCode,
    &l__UCHAR__NumberOfVendorResetsAvailable,
    &l__UCHAR__NumberOfUserControlledChangesAvailable,
    &l__UCHAR__RegionMask,
    &l__UCHAR__RPCScheme
    );
    
// Check for correct reply
if (  l__EXCEPTION_NUMBER != EN_SUCCESS )
{
// Handle error here...
}

// Do something with CdvdBurnerGrabber device object here...        

// Destroy the CdvdBurnerGrabber
StarBurn_Destroy( &l__PVOID__CdvdBurnerGrabber );

// Just check for pointer (paranoid?)
if ( l__PVOID__CdvdBurnerGrabber != NULL )
{
// Handle error here...
}