Dart function pointer. longitude = lng. IntPtr's Dart signature would be int. operator []= (int index, Pointer <T> value) → void May 18, 2023 · If what you mean to ask is if it's possible to call a function and pass arguments by reference instead of by value, then not exactly. latitude = lat. Nov 29, 2021 · I've searched a lot through packages on pub. Sep 3, 2020 · In dart using the ffi library we can create a Pointer object two ways Pointer<NativeType> foo = allocate(); Pointer<NativeType> bar = Pointer. Nov 6, 2019 · How to get data from the Pointer? There was a method Pointer. elementAt (int index) → Pointer <Uint8> Available on Pointer <Uint8>, provided by the Uint8Pointer extension Pointer arithmetic (takes element API docs for the VarArgs class from the dart:ffi library, for the Dart programming language. I'm not familiar with dart/flutter, but it looks like it supports pointers. Convert Dart function to a C function pointer, automatically marshalling the arguments and return value If an exception is thrown while calling f (), the native function will return exceptionalReturn, which must be assignable to return type of f. For more practical code examples of using concurrency in Dart, read the Asynchronous programming page and Isolates page. [] Pointer <T extends NativeType> Represents a pointer into the native C memory. operator [] (int index) → Pointer <T> Available on Pointer <Pointer <T>>, provided by the PointerPointer extension Load a Dart value from this location offset by index. toDouble(); From the flutter Aug 15, 2013 · I would like to pass a primitive (int, bool, ) by reference. Jun 8, 2025 · Dart function tutorial shows how to work with functions in Dart. Leaf functions are invoked bypassing some of the heavier parts of the standard Dart-to-Native calling sequence which reduces the invocation overhead, making leaf calls faster than non-leaf calls. fromAddress(foo. The Isolate that created the callback will be kept alive until close is called. Other terms for similar functionality include native interface and language bindings. Struct This class is extended to define structs F lookupFunction <T extends Function, F extends Function> ( String symbolName, { bool isLeaf = false, }) Looks up a native function and returns it as a Dart function. executable(); final add = dylib. Concurrent programming in Dart refers to both asynchronous APIs, like Future and Stream, and isolates Feb 17, 2025 · Utilities for working with Foreign Function Interface (FFI) code, incl. Pointer<ffi. That's why it acts like byRef if you change it. Example - Apr 4, 2022 · The syntax has changed in recent versions. Understanding Types of Functions in dart with simplest examples Some key points about … fromFunction < T extends Function > (Function f, [Object? exceptionalReturn]) → Pointer < NativeFunction < T>> Convert Dart function to a C function pointer, automatically marshalling the arguments and return value Methods toDartString ({int? length}) → String Available on Pointer <Utf8>, provided by the Utf8Pointer extension Converts this UTF-8 encoded string to a Dart string. A native finalizer which can be attached to Dart objects. This callback must be close d when it is no longer needed. Apr 11, 2017 · I know the Function class can be passed as a parameter to another function, like this: void doSomething(Function f) { f(123); } But is there a way to constrain the arguments and the return typ Sep 4, 2025 · The analyzer produces this diagnostic when the method asFunction is invoked on a pointer to a native function, but the signature of the native function isn't a valid C function signature. . Learn how to create a pointer to a Dart function for use with C FFI in Dart, with a step-by-step guide to solving common issues. Nov 21, 2019 · Unfortunately a line from this answer was selected by Google in response to the question of "Is Dart pass by reference?" While the answer in its larger context is correct that Dart does not pass a reference to the variable, it does pass a reference to the original object. This pointer must not be read after the callable has been close d. Once this lands I'll integrate into ffigen so that ObjC blocks generated from Dart functions can be called from any thread. They are created on-the-fly and can be assigned to variables, passed as arguments to other functions, and returned as values from other functions. My c++ code is something like this static bool is_alive() { return true; } From dart, I loaded the shared lib with this native code Nov 13, 2019 · I have a C function with the Following signature bool sendFrame(int width, int height, int channelNumber, void *data, bool clone); data here being a raw image. But API docs for the Uint8Pointer extension from the dart:ffi library, for the Dart programming language. In my API which abstracts away from FFI code (which means I have a class MyLibrary full of static functions that the user will call directly, which in turn calls functions from an May 10, 2023 · Foreign Function Interface (FFI) is an interface that allows functions in one programming language to work with functions in other programming languages. Related issues: Remaining tasks for dart:ffi May 5, 2025 · A deep dive into Dart language and library changes related to null safety. Nov 21, 2024 · Learn how to extract device information on Windows using Dart FFI. Aug 13, 2018 · I am reading about dart and one think that confuses me is the the syntax for anonymous functions. However, it eventually starts to drop and eventually seems Sep 15, 2025 · To accommodate that initial asynchrony, other plain Dart functions also need to become asynchronous. T is the C function signature, and F is the Dart function signature. However, this implies that a thread executing a leaf function can't cooperate with the Dart runtime. Change your declaration to final void Function() onPressed; so that the typing is a closer match and can't possibly return a null or take args. Cannot be extended. Any suggestion on this considering the length of the response? Sep 6, 2024 · When you call a function defined by Dart FFI, the Dart VM generates the native symbol string, looks up the function by symbols, and then invokes the returned function pointer. Instead, all objects in Dart are referred to by reference. (The reasoning: why have a handle in Dart if you can have a normal pointer instead?) To use a Dart_Handle: // no typedef from Handle to void late Object Function ( List<Utf8> deviceName, Jan 28, 2022 · Dart FFI opens up new development opportunities. When you pass an argument, a copy of the pointer gets assigned to the parameter. isolateGroupShared (@ DartRepresentationOf ("T") Function callback, {Object? exceptionalReturn}) Feb 17, 2020 · I've the Dart type as: typedef dart_func = String Function(String x); And want to map it with Dart FFi, but their could not find neither String, nor Utf8, I tried typedef ffi_func = ffi. Sep 13, 2023 · In Dart, anonymous functions, often referred to as closures, are functions without a named identifier. Dart passes a new handle pointing to the object in memory (or managed vector, whatever newbie remember) into the called method/function. May 3, 2021 · Is there a recommended way to track memory leaks using the Dart Dev tools? If I create a simple program that allocates pointers in a loop without freeing them, I see the RSS (Resident Size Set) creep up in the Dart dev tools for the first minute or so, which I think would be expected given pointers are being allocated and never freed. Sep 15, 2025 · This page contains a conceptual overview of how concurrent programming works in Dart. on Pointer <T> Annotations @Since ('2. How are unnamed enums handled? Dec 19, 2020 · You are passing a Function() value to a void Function() parameter like it says. Dart supplies a number of conversion members on various Dart types and A typedef, or a function-type alias, helps to define pointers to executable code within memory. The returned function address can only be invoked on the mutator (main) thread of the current isolate. [] NativeType NativeType 's subtypes represent a native type in C. [] NativeFunction <T extends Function> Represents a function type in C. If we have the following struct: final class CLLocationCoordinate2D extends ffi. I found a discussion about it (paragraph "Passing value types by reference") here: value types in Dart, but I still wonder if there Hello I am using dart:ffi to build an interface with my native c/c++ library. Sep 15, 2025 · Dart libraries are full of functions that return Future or Stream objects. lookupFunction<Int32 Dec 31, 2021 · How does ffigen handle C99 bool data type? Although dart:ffi doesn’t have a NativeType for bool, they can be implemented as Uint8. fromAddress(int address); We can also get the Pointer objects address using int address = foo. Jun 18, 2021 · Note: First param is the C function signature, and second param is the Dart function signature. Mar 29, 2022 · First, you need to separate your Dart class the represents the shared object from the Dart class that represents your C++ class. The first will contain the shared library reference and the looked up functions; the second will just contain the Pointer<Void> to the instance of your C++ class - there will be one per instance (and will be the thing that you free when you are done with that 🧠😎A Collection of Flutter and Dart Tips and Tricks🔥⚡️ - Travis-ugo/flutter_Tips_And_Tricks Convert to Dart function, automatically marshalling the arguments and return value. To disable this, and use int instead, set dart-bool: false in configurations. The async and await keywords support asynchronous programming, letting you write asynchronous code that looks similar to synchronous code. For example, you may want to convert a Dart List<JSString> into a JS array of strings, which is represented by the JS type JSArray<JSString>, so that you can pass the array to a JS interop API. A type alias—often called a typedef because it's declared with the keyword typedef —is a concise way to refer to a type. Extension on Pointer specialized for the type argument NativeFunction. Step-by-step guides, tutorials, and expert solutions for your questions. Contribute to dart-lang/samples development by creating an account on GitHub. Utf8Pointer on Pointer <Utf8> Extension method for converting a Pointer<Utf8> to a String. Simply put, a typedef can be used as a pointer that references a function. So far without success. A pointer to the offset th Pointer<T> before this one. toDouble(); coords. Technically, Dart always uses pass-by-value (although I prefer calling it "pass-by-assignment"). It's better to think of Dart as a pass by value language but where the values are pointers to objects in memory. At the latest I’m pretty inexperienced when it comes to dart, so take this recommendation with a heavy pinch of salt but I wonder if you could write a native c function to return a pointer to the object. Aug 7, 2025 · To construct and provide types for JS values, you use and declare interop types, which also contain interop members. Extension on Pointer specialized for the type argument Struct. By default, the runtime expects a native symbol with the same name as the annotated function or variable in Dart. Typedefs Dart_NativeMessageHandler = Void Function(Int64, Pointer <Dart_CObject>) NativeFinalizerFunction = NativeFunction <Void Function(Pointer <Void> token)> The native function type for NativeFinalizer s. API docs for the Pointer class from the dart:ffi library, for the Dart programming language. Functions sizeOf <T extends SizedNativeType>() → int Number of bytes used by native type T. Because your function only has one out paramter, you could rewrite it to just return that pointer, if you have access to the native code Jun 24, 2024 · In the world of Dart programming, understanding how references and assignments work is crucial for writing efficient and bug-free code… Aug 27, 2025 · To use a value from one domain to another, you will likely want to convert the value to the corresponding type of the other domain. But you can still pass pointers to objects and arrays by value. API docs for the fromFunction method from the Pointer class, for the Dart programming language. Ffigen generates dart bool for function parameters and return type by default. fromFunction(callback); // <-- this isn't considered a static function It's quite annoying but you must use a static function defined ahead of time for your dart callbacks to be called from C. Dec 23, 2022 · I am using dart:ffi to call C++ functions. char>> utf8/utf16 still not sure for me. And the docs for Char say The C char type So can Utf8 be made a subtype of Char? Currently, if I have a C function that expects a char*, r Jan 4, 2021 · In recent builds, dart analyze throws a error at FFI parameters declared as Pointer<NativeFunction> or Pointer<Void>: May 18, 2022 · In this video I'll show you how to create a function in dart, how to call a function, and how to pass parameters to your functions. Follow code examples to effectively access and utilize device data in your Dart applications. Convert Dart function to a C function pointer, automatically marshalling the arguments and return value If an exception is thrown while calling f(), the native function will return exceptionalReturn, which must be assignable to return type of f. To pass Dart values like a List or Function to interop members or convert from JS values to Dart values, you use conversion functions unless the interop member contains a primitive type. operator []= (int index, Pointer <T> value) → void Convert Dart function to a C function pointer, automatically marshalling the arguments and return value If an exception is thrown while calling f (), the native function will return exceptionalReturn, which must be assignable to return type of f. , to the * . load in ffi: ^0. Now, we have a function that takes in a parameter of Pointer<Utf8> and we pass in our inputToUtf8 Nov 29, 2021 · Handle from dart_api. Jun 14, 2021 · C is very much focused on the use of pointers, so having to deal with pointers is almost guaranteed in your Dart FFI code. Aug 14, 2025 · API docs for the cast method from the Pointer class, for the Dart programming language. So you would return a pointer to the first element of an array allocated by your C++ code, use the data in dart, then pass that pointer back to another function in your C++ code to release the memory. 1. For example: int32_t add(int32_t a, int32_t b) { return a + b; } DynamicLibrary dylib = DynamicLibrary. The followi A collection of Dart code samples by Dart DevRel. Exposing a mem-copy API from Uint8List to Pointers is tracked in [vm/ffi] Provide memcopy function dart-lang/sdk#43968. Sep 19, 2024 · Press enter or click to view image in full size When preparing for a technical interview, understanding how Dart handles data passing in functions — whether by value or reference — is crucial Sep 15, 2025 · Dart mobile, command-line, and server apps running on the Dart Native platform can use the dart:ffi library to call native C APIs, and to read, write, allocate, and deallocate native memory. When attach ed to a Dart object, this finalizer's native callback is called after the Dart object is garbage collected or becomes inaccessible for other reasons. For more information about FFI, see C interop using dart:ffi. To interact with these asynchronous results, you can use the async and await keywords. Intel 64 bit Intel 32 bit Arm 64 bit Arm 32 bit DBC (#37140) -> DBC was removed. address); Will the resulting type of bar be API docs for the Pointer class from the dart:ffi library, for the Dart programming language. API docs for the Pointer class from the dart:ffi library, for the Dart programming language. Here's an example of declaring and using a type alias named IntList: May 28, 2022 · Also, passing Future<int> as function pointer means that Future<int> is invoked as callback. 12') Properties ref ↔ T A Dart view of the struct referenced by this pointer. Oct 12, 2021 · Pointer<NativeFunction<CallbackFunc>> pointer = Pointer. We would like to show you a description here but the site won’t allow us. Strings, numbers, and booleans are immutable objects (aka Primitives); any operation or method creates a new object. Methods asTypedList (int length, {Pointer <NativeFinalizerFunction>? finalizer, Pointer <Void>? token}) → Uint8List Available on Pointer <Uint8>, provided by the Uint8Pointer extension Creates a typed list view backed by memory in the address space. In the use case where they want to pass these function pointers to C. Feb 2, 2021 · Cause "null pointer dereference" when call dart-side function in c-side Dart_HandleFinalizer #44833 Sep 4, 2025 · Learn about type aliases in Dart. create<CLLocationCoordinate2D>(); coords. These functions are asynchronous: they return after setting up a possibly time-consuming operation (such as I/O), without waiting for that operation to complete. Please see the API reference for more documentation and the tests for example usage. fromFunction, NativeCallable s can be constructed from any Dart function or closure, not just static or top level functions. Pointer&l API docs for the Pointer class from the dart:ffi library, for the Dart programming language. NativeFunctionPointer<NF extends Function> extension Extension on Pointer specialized for the type argument NativeFunction. Jan 1, 2022 · I am trying to call a C library from dart. Callbacks will happen as early as possible, when the object becomes inaccessible to the program, and may happen at any moment during execution of the program. It can't be the block pointer, because that's explicitly disallowed. Annotations @Since ('3. Feb 17, 2025 · Utilities for working with Foreign Function Interface (FFI) code. and I needed a way to get a callback from c to dart as an example in sqlite: int sqlite3_exec( sqlite3*, Dec 10, 2023 · The lookupFunction 's second type argument represent the Dart function signature for the corresponding Win32 function. e. Jan 6, 2021 · I guess it's fine. You'll need to cast it to an actual native function (pointer) type eventually since I don't expect us to allow dynamic native calls. You are correct that you shouldn’t be exposing Pointer types to your user, so you should keep the callback function in your code, convert the reason string there, then call your user’s function with a Dart String. You can use a typedef declaration to explicitly name function types, which can be useful for clarity and reusability. The solution is basically a three-step process. dev that use dart:ffi in the hope of finding a similar situation, but haven't been able to find anything that worked for me. Then the question is what the key of the Expando is. Thus, the function which gets int from Future<int> using await is also Future<int> and it cannot be passed as function pointer. The pointers are then accesible via nativeLibrary. If you want to simulate pass-by-reference, you could wrap your arguments in other objects to add a level of indirection: class Reference<T> { T value; Reference(this If "dart:ffi" supported varargs calling conventions in X64/ARM64, developers could use Objective-C libraries by using C functions such as objc_msgSend. converting between Dart strings and C strings encoded with UTF-8 and UTF-16. Mar 16, 2020 · I want to write dart binding for the following C code: c api: TFL_CAPI_EXPORT extern TfLiteQuantizationParams TfLiteTensorQuantizationParams( const TfLiteTensor* tensor); typedef struct TfLiteQuant Sep 16, 2025 · The native function pointer which can be used to invoke the callback passed to the constructor. address(); If we want to create a Pointer from another Pointer object doing final bar = Pointer. What I want to do here is to setup this callback in Dart, pass it to the FFI, essentially using it as my callback as I would have in C. Utf16Pointer on Pointer <Utf16> Extension method for converting a Pointer<Utf16> to a String. The native function pointer which can be used to invoke the callback passed to the constructor. For example, con Mar 13, 2022 · However, we need a wrapper function to convert Dart String to Pointer<Utf8> when passing our string argument to the native function. Nov 5, 2014 · Is it possible in Dart to store a callback function with return and argument type information? It appears I can do the following: class MyClass { void addCallback( callback( int ) ) { _call Dart Nameless Functions examples - Closure, Arrow syntax Lambda, Anonymous functions. I could make it some sort of Dart object (maybe the ObjCBlock wrapper object), but then the issue becomes what do we stick Dart – Pass by pointer or reference In Dart, as in many other object oriented programming languages, objects are always pass-by-value. SimArm (#37299) -> We will not support this. This interface enables codes written in Represents a native pointer-sized integer in C. This allows you to run different functions using a single common function. Struct { @ffi. Dec 19, 2024 · A function pointer means passing a function as an argument to another function, just like how we pass a variable. Creates a native function linked to a Dart function, so that calling the native function will call the Dart function in some way, with the arguments converted to Dart values. Convert to Dart function, automatically marshalling the arguments and return value. Here’s an example demonstrating how references work in Dart: void zeroval(int ival) { ival = 0; } // This function takes an integer reference. Apr 20, 2023 · That native function pointer essentially dispatches a message back to the original Dart isolate that created the function asking it to run the function. A native callable which listens for calls to a native function. 1 dart-lang/samples@ 3933ad3 #diff-c0171e4ec91da7fa02e58b3c5c6ee825L57 but now in the Extension method for converting a String to a Pointer<Utf16>. Like Function is an abstract supertype of concrete function types, a Pointer<NativeFunction<Function>> can be an abstract supertype of concrete native function pointers. AOT (#37295) typedef NativeFunc17 = IntPtr Function (Pointer<NativeFuncti Are there good tutorials on Dart FFI to help me implement a bridge between an existing C-library and dart? I'm struggling to understand how to keep the memory pointers toward the C-data created by a method, so that I can use it as an input for another C-method of the library. - dart-lang/sdk Unlike Pointer. 1') Constructors NativeCallable. on Pointer <NativeFunction <NF>> Methods asFunction <@ DartRepresentationOf ('NF') DF extends Function> ({bool isLeaf = false}) → DF Convert to Dart function, automatically marshalling the arguments and return value. Get a comprehensive answer to "how to use dart ffi foreign function interface" on HowTo. dart:ffi: Foreign function interfaces for interoperability with the C language. The C code as a genertor method such as a_struc create_struct(void); and then methods that take in a pointer to struct, such as: const char * get_info( In this tutorial, you'll learn how to define Dart anonymous functions which are functions that have no names. Pointer> instead of ffi. May 24, 2023 · @mraleph C library is correct since the same was implemented for android native using java+JNI when coming to dart i printed the length it showing : 154295 on the c side it was char **response ,but i defined the type as ffi. Double() external double latitude; @ffi. package:web: DOM manipulation for web apps. on Pointer <NativeFunction <NF>> Methods asFunction <@ DartRepresentationOf ('NF') DF extends Function>({bool isLeaf = false}) → DF Convert to Dart function, automatically marshalling the arguments and return value. The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more. My first thought was that I only needed to call the performance method in the isolate, but it doesn't seem possible, since the perform function takes the engine state as first argument - this engine state is an opaque pointer ( Pointer in dart:ffi ). Apr 29, 2021 · Dart functions do not support out parameters. Typically May 24, 2022 · Another option I've considered is replacing the global function map with an Expando or something, so that the function reference is only weakly held. so library and use it by means call back? API docs for the Pointer class from the dart:ffi library, for the Dart programming language. Apr 3, 2024 · If you’re interested in Dart/Flutter programming, here’s a little example of how to pass a Dart function into another function or method. dart:ffi accepts normal synchronous functions as function pointer. Double() external double longitude; } We can instantiate it like this: final coords = Struct. For the most part pointers are fairly straight forward to deal with in Dart FFI, though there are a few tips I picked up along the way looking at code examples scattered across the dart SDK and other repos, including: dart:js_interop: Library including a sound type hierarchy and helper functions for interoperability with JavaScript. Jan 5, 2015 · Cast a variable as a function/method pointer in Dart? (Delegate?) Asked 10 years, 1 month ago Modified 10 years, 1 month ago Viewed 4k times Nov 13, 2019 · Note for people coming across this issue: If you can get the memory in C to begin with (instead of a Uint8List in the Dart heap), that would avoid copying all together. Jul 7, 2020 · For some users it might be useful to expose the function pointers instead of Dart wrapper functions. so library) and access this dart function directly from the * . asFunction () import 'dart:ffi'; import 'dart:io Nov 29, 2021 · Following up on my previous post (which I resolved), I'm stuck on another native function in this library for which I cannot figure out how to do the binding: Jul 6, 2022 · I try to call the tesseract C api within flutter. Jul 9, 2021 · I am trying to get the return value from c++ function in dart. FFI stands for foreign function interface. IM. Jan 25, 2019 · Support calling back Dart code from C. addresses. My ffi function signature is: fi The compiler/runtime can then resolve/lookup symbols (identifiers) against the native library, to find a native function or a native global variable, and bind an external Dart function or variable declaration to that native declaration. h Currently FFI trampolines and callbacks convert Dart_Handle on the C side to Object on the Dart side. Someone noted here that arguments in Dart are pointers to pointers. Step 1: Define a Dart method that takes a function parameter First, define a Dart method that takes a function as a parameter, such as this exec method: GeeksforGeeks | A computer science portal for geeks Oct 7, 2021 · where, typedef CallbackType = Pointer<NativeFunction<Void Function(Uint32)>>;. For example, see their structs example (though they never free the memory allocated by malloc in that example). ---This video is based on the However, Dart doesn’t have explicit pointer types or pointer arithmetic. It explains the event-loop, async language features, and isolates from a high-level. API docs for the Pointer class from the web_ffi library, for the Dart programming language. Jun 8, 2021 · We introduced Struct to Dart FFI and made structs extend this class: Now a Pointer<Coordinate> in Dart represents a Coordinate* in C, and a Coordinate in Dart represents a Coordinate in C. Learn how to use Dart FFI to access native libraries in Flutter. Specifically, how do I specify the type of the returned value for such a function. Aug 21, 2023 · Dart Functions — Anonymous Functions, Positional & Named Parameters, Lambdas, Closures and Scope 1. 5 days ago · In Dart, functions are first-class objects, meaning they can be assigned to variables, passed as arguments, and returned from other functions. Most asynchronous functions are just async Dart functions that depend, possibly deep down, on an inherently asynchronous computation. I have following code in C++ typedef void* (*unmanaged_callback_ptr)(const char* , const char*); typedef char* (*managed_direct_method_ptr)(const char*, const char* , unmanaged_callback_ptr); methods as follows which uses function pointer as returns type or as argument CPPLIB_API managed_direct_method_ptr CreateManagedDelegate(const char* libName Jun 24, 2022 · I don't understand how to pass (, const char *request) to dart function I used Pointer but there is an error in . And also to convert the returned native string Pointer<Utf8> back to Dart String. isolateGroupShared (@ DartRepresentationOf ("T") Function callback, {Object? exceptionalReturn}) Are there any pointers in dart like that in C++? If there aren't any officially supported pointers, is there a way to make them like how in python, the id () function gives the memory address? Apr 2, 2020 · Is it possible, using ffi, to pass a pointer to the of dart function into a C module (i. The function "TessBaseAPIInit3" requires the 2nd and 3rd parameter to be of type Pointer<Char>. Jul 26, 2023 · The docs for Utf8 say This pointer is the equivalent of a char pointer (const char*) in C code. StringUtf8Pointer on String Extension method for converting a String to a Pointer<Utf8>. Jul 22, 2025 · How to expose the native pointers? By default the native pointers are private, but you can use the symbol-address subkey for functions/globals and make them public by matching with its name. A function is a mapping of maps zero or more input parameters to zero or more output parameters. Functions CryptProtectData (Pointer <CRYPT_INTEGER_BLOB> pDataIn, Pointer <Utf16> szDataDescr, Pointer <CRYPT_INTEGER_BLOB> pOptionalEntropy, Pointer <NativeType> pvReserved, Pointer <CRYPTPROTECT_PROMPTSTRUCT> pPromptStruct, int dwFlags, Pointer <CRYPT_INTEGER_BLOB> pDataOut) → int crypt32 The CryptProtectData function performs encryption on the data in a DATA_BLOB structure. eewtnv wfwq blkqr mtbtypxm uafp gqi qvnetqd ahxew fvnot wcqze