Command line args

  argc argv env on stack.
  LPTSTR WINAPI GetCommandLine(void);

Exit code

  exit syscall or int 80.
  ExitProcess or ret.

Library

dlopen : filename — handle

  void *dlopen(const char *filename, int flag);

  Returns NULL on error.
  HMODULE WINAPI LoadLibrary(
    _in_  LPCTSTR lpFileName);

  Returns NULL on error.

dlsym : symbol handle — addr

  void *dlsym(void *handle, const char* symbol);

  NULL doesn't indicate error (clear dlerror before call and compare).
  FARPROC WINAPI GetProcAddress(
    _in_  HMODULE hModule,
    _in_  LPCSTR  lpProcName);

  Returns NULL on error (GetLastError).

dlclose : handle — flag

  int dlclose(void *handle);

  Returns nonzero on error.
  BOOL WINAPI CloseHandle(
    _in_ HANDLE hObject);

  Returns 0 on error (GetLastError).

dlerror : — n

  char *dlerror(void);

  Returns message or NULL.
  DWORD WINAPI GetLastError(void);

  Returns last error code.

Memory

malloc : size — handle

  void *malloc(size_t size);

  Returns NULL on error.
  LPVOID WINAPI VirtualAlloc(
    _in_opt_  LPVOID  lpAddress,
    _in_      SIZE_T  dwSize,
    _in_      DWORD   flAllocationType,
    _in_      DWORD   flProtect);

  Returns NULL on error (GetLastError).

mfree : handle — flag

  void free(void *ptr);

  Returns nothing.
  BOOL WINAPI VirtualFree(
    _in_  LPVOID  lpAddress,
    _in_  SIZE_T  dwSize,
    _in_  DWORD   dwFreeType);

  Returns 0 on error (GetLastError).

mprot : prot count addr — flag

  int mprotect(void *addr, size_t len, int prot);

  Returns -1 on error (errno).
  BOOL WINAPI VirtualProtect(
    _in_ LPVOID lpAddress,
    _in_  SIZE_T  dwSize,
    _in_  DWORD   flNewProtect,
    _out_ DWORD   lpflOldProtect);

  Returns 0 on error (GetLastError).

File

fopen : mode filename — handle | -1

  int open(const char *pathname, int flags);

  Returns -1 on error (errno).
  HANDLE WINAPI CreateFile(
    _in_      LPCTSTR               lpFileName,
    _in_      DWORD                 dwDesiredAccess,
    _in_      DWORD                 dwShareMode,
    _in_opt_  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    _in_      DWORD                 dwCreationDisposition,
    _in_      DWORD                 dwFlagsAndAttributes,
    _in_opt_  HANDLE                hTemplateFile);

  Returns INVALID_HANDLE_VALUE on error (GetLastError).

fread : count buffer handle — n | -1

  ssize_t read(int fd, void *buf, size_t count);

  Returns -1 on error (errno), n bytes read (0 on EOF).
  BOOL WINAPI ReadFile(
    _in_        HANDLE        hFile, 
    _out_       LPVOID        lpBuffer, 
    _in_        DWORD         nNumberOfBytesToRead, 
    _out_opt_   LPDWORD       lpNumberOfBytesRead, 
    _inout_opt_ LPOVERLAPPED  lpOverlapped);

  Returns 0 on error (GetLastError).

fwrite : count buffer handle — n | -1

  ssize_t write(int fd, void *buf, size_t count);

  Returns -1 on error (errno), n bytes written.
  BOOL WINAPI WriteFile(
    _in_        HANDLE        hFile, 
    _out_       LPVOID        lpBuffer, 
    _in_        DWORD         nNumberOfBytesToWrite, 
    _out_opt_   LPDWORD       lpNumberOfBytesWritten, 
    _inout_opt_ LPOVERLAPPED  lpOverlapped);

  Returns 0 on error (GetLastError).

fclose : handle — flag

  int close(int fd);

  Returns -1 on error (errno).
  BOOL WINAPI CloseHandle(
    _in_ HANDLE hObject);

  Returns 0 on error (GetLastError).