Modern .NET 10 P/Invoke bindings for Canon's EDSDK (13.14.40).
- LibraryImport throughout — all methods source-generated, NativeAOT compatible
ninthandles throughout (notIntPtr)EdsErrorreturn type on all methods instead of rawuint- Typed enum params —
EdsPropertyId,EdsCameraCommand,EdsObjectEventetc. readonly structwithInlineArrayfields (noMarshalAsbyte arrays) and lazy string decode- Typed
EdsGetPropertyData/EdsSetPropertyDataoverloads usingunsafestackalloc [Flags]onEdsFileAttribute,EdsEvfOutputDevice,EdsBracket
using Canon.EDSDK;
// Initialize SDK
EDSDK.EdsInitializeSDK();
// Get camera list
EDSDK.EdsGetCameraList(out nint cameraList);
EDSDK.EdsGetChildAtIndex(cameraList, 0, out nint camera);
// Open session
EDSDK.EdsOpenSession(camera);
// Set property
EDSDK.EdsSetPropertyData(camera, EdsPropertyId.ISOSpeed, 0, 0x00000068); // ISO 800
// Take picture
EDSDK.EdsSendCommand(camera, EdsCameraCommand.TakePicture, 0);Canon's EDSDK binary (EDSDK.dll) is not included — it must be obtained from Canon's Developer Community. Place it in lib/win-x64/.
MIT