comptrassign.asm
来自「这是一个数字图像处理的matlab仿真程序」· 汇编 代码 · 共 60 行
ASM
60 行
;-------------------------------------------------------------------------------
; colibrary procedure ComPtrAssign
;
; -------------------------------------------------------
; This procedure was written by Ernest Murphy 9/27/00
;
; revised 1/10/01 to add S_OK retval
;
; Copyright (c) 9/28/00 Ernest Murphy
; For educational use only. Any commercial re-use only by written license
;
; -------------------------------------------------------
.NOLIST
.386
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
include mini_win.inc
include \masm32\COM\include\oaidl.inc
.code
;-------------------------------------------------------------------------------
ComPtrAssign PROC PUBLIC pp:DWORD, lp:DWORD
;-------------------------------------------------------------------------------
; COM 'smart' pointer assignment
; (we can't do smart pointers, but this routine is handy none the less)
;
; performes pp <== lp
;
; first releases any existing pointer in pp
; performs the AddRef on lp
;
; EXAMPLE:
; invoke ComPtrAssign, ADDR pointerB, ADDR pointerA
;
; Uses: eax, ecx, edx
;
;
;-------------------------------------------------------------------------------
.IF lp
coinvoke lp, IUnknown, AddRef
.ENDIF
mov ecx, pp
mov ecx, [ecx]
.IF ecx
coinvoke ecx, IUnknown, Release
.ENDIF
mov eax, lp
mov ecx, pp
mov [ecx], eax
xor eax, eax ; return S_OK
ret
ComPtrAssign ENDP
;-------------------------------------------------------------------------------
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?