control method
Implementation
@override
Tuple2<SCardResult, List<int>> control(int hCard, int dwControlCode, List<int> pbSendBuffer) {
final sendBuffer = _allocateNativeBytes(pbSendBuffer);
final recvBuffer = calloc<ffi.Uint8>(MAX_BUFFER_SIZE);
final bytesReturned = calloc<DWORD>();
try {
//Call the native function
var response = _winscard.SCardControl(hCard, dwControlCode, sendBuffer.cast<ffi.Void>(), pbSendBuffer.length, recvBuffer.cast<ffi.Void>(), MAX_BUFFER_SIZE, bytesReturned);
var result = SCardResult(response);
//Check if the call was successful
if( !result.isSuccess ) {
return Tuple2(result, []);
}
//Create a list of bytes
List<int> byteList = _convertNativeBytes(recvBuffer.cast<BYTE>(), bytesReturned.value);
//Return the result
return Tuple2(result, byteList);
}
finally {
//Free the buffers
calloc.free(sendBuffer);
calloc.free(recvBuffer);
calloc.free(bytesReturned);
}
}