StarBurn SDK (Software Development Kit) |
__stdcall STARBURN_IMPEX_API EXCEPTION_NUMBER StarBurn_CdvdBurnerGrabber_GetSpeeds(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 PULONG p__PULONG__CurrentReadSpeed, OUT PULONG p__PULONG__MaximumReadSpeed, OUT PULONG p__PULONG__CurrentWriteSpeed, OUT PULONG p__PULONG__MaximumWriteSpeed);
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 PULONG p__PULONG__CurrentReadSpeed | Pointer to ULONG that will receive current read speed. |
OUT PULONG p__PULONG__MaximumReadSpeed | Pointer to ULONG that will receive maximum read speed. |
OUT PULONG p__PULONG__CurrentWriteSpeed | Pointer to ULONG that will receive current write speed. |
OUT PULONG p__PULONG__MaximumWriteSpeed | Pointer to ULONG that will receive maximum write speed. |
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 current read and write and top supported read and write speeds on CD/DVD/Blu-Ray/HD-DVD burner device. This speeds later will be used to set current speeds during all read and write operations.
Please see the TrackAtOnceFromTree and TrackAtOnceFromFile samples that will demonstrate how StarBurn_CdvdBurnerGrabber_GetSpeeds can be used to determine current and top supported CD/DVD/Blu-Ray/HD-DVD device read and write speeds and how StarBurn_CdvdBurnerGrabber_SetSpeeds can be used to set top supported speeds.
[ WARNING! It's required to have media inserted for this function to work properly! ]
This example allocates CdvdBurnerGrabber object, gets all (current and top supported) read and write speeds 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; CHAR l__CHAR__ExceptionText[ 1024 ]; CDB_FAILURE_INFORMATION l__CDB_FAILURE_INFORMATION; ULONG l__ULONG__CurrentReadSpeed; ULONG l__ULONG__MaximumReadSpeed; ULONG l__ULONG__CurrentWriteSpeed; ULONG l__ULONG__MaximumWriteSpeed; // 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 current and top supported CD/DVD/Blu-Ray/HD-DVD read/write speeds on the device l__EXCEPTION_NUMBER = StarBurn_CdvdBurnerGrabber_GetSpeeds( l__PVOID__CdvdBurnerGrabber, ( PCHAR )( &l__CHAR__ExceptionText ), sizeof( l__CHAR__ExceptionText ), &l__ULONG__SystemError, &l__CDB_FAILURE_INFORMATION, &l__ULONG__CurrentReadSpeed, &l__ULONG__MaximumReadSpeed, &l__ULONG__CurrentWriteSpeed, &l__ULONG__MaximumWriteSpeed ); // Check for correct reply if ( l__EXCEPTION_NUMBER != EN_SUCCESS ) { // Handle error here... } // Do something with CdvdBurnerGrabber device object and it's speeds here... // Destroy the CdvdBurnerGrabber StarBurn_Destroy( &l__PVOID__CdvdBurnerGrabber ); // Just check for pointer (paranoid?) if ( l__PVOID__CdvdBurnerGrabber != NULL ) { // Handle error here... }