Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

YouTube

Safety Not Guaranteed - Calling Windows APIs Using Unsafe and Syscall

Gopher Academy via YouTube

Overview

Save Big on Coursera Plus. 7,000+ courses at $160 off. Limited Time Only!
Explore Windows API integration in Go without relying on CGO in this GopherCon 2020 talk. Learn to leverage the unsafe and syscall packages for calling Windows APIs, loading DLLs, mapping C structs to Go, converting Win32 API function results, and avoiding unsafe package pitfalls. Dive into topics like pointer arithmetic, finding DLL call signatures, memory management, and designing for unmanaged memory. Gain practical insights through examples such as CreateJobObject, credential enumeration, and GetExtendedTcpTable, with full code available for reference.

Syllabus

Intro
Windows Containers 2016
No Syscalls on Windows
Pointer Arithmetic
Pointer Rules
Bad Pointers
Finding DLL and Call Signatures
Loading a DLL Procedure
Calling Windows APIs Mapping C Types
Primitive C-Type mappings
Mapping Parameters
Go string to string
Struct Types
Inspecting Return Value
CreateJobObject
Locking memory down during syscall
mkwinsyscall - source
Memory Management
Example: Designing For Unmanged Memory - Free
Example: Designing For Unmanged Memory- Iterating
Improvement - Copy & Free
Example: Copy & Free Design - Cred Enumerate
Example: Copy & Free Design - Credential/Attribute
Managed Memory: Generic Example
Example: GetExtendedTcp Table - Syscall Loop
Example: GetExtendedTcp Table - Table to Rows
Full Code Available

Taught by

Gopher Academy

Reviews

Start your review of Safety Not Guaranteed - Calling Windows APIs Using Unsafe and Syscall

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.