Php 什么是';模块编号';作为zend_寄存器_列表_析构函数_ex的参数

Php 什么是';模块编号';作为zend_寄存器_列表_析构函数_ex的参数,php,c,php-extension,Php,C,Php Extension,我正在编写一个php扩展,需要注册一个资源。我一直在阅读如何实现这一点,以及我看到的所有传递变量的示例 module_number 作为 zend_register_list_destructors_ex(NULL, NULL, DESCRIPTOR_NAME, module_number); 我找到的所有文件都没有解释“模块编号”是什么。我试图在调用函数时使用该变量名,但出现以下错误: ext\niklos\niklos.c(132) : error C2065: 'module_numb

我正在编写一个php扩展,需要注册一个资源。我一直在阅读如何实现这一点,以及我看到的所有传递变量的示例

module_number
作为

zend_register_list_destructors_ex(NULL, NULL, DESCRIPTOR_NAME, module_number);
我找到的所有文件都没有解释“模块编号”是什么。我试图在调用函数时使用该变量名,但出现以下错误:

ext\niklos\niklos.c(132) : error C2065: 'module_number' : undeclared identifier
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\
VC\Bin\cl.exe"' : return code '0x2'
Stop.

函数调用的最后一个参数应该是什么,或者像所有其他示例一样使用的“module_number”是什么?提前感谢。

zend\u register\u list\u destructor\u ex必须在扩展注册的PHP\u MINIT函数中调用

如果您查看PHP_MINIT的宏定义,它将扩展为

int zm_启动_35;#模块(int类型,int模块编号TSRMLS_DC)

其中##module是模块的字符串名称

模块_编号是由引擎传递到启动函数的整数

该模块号是PHP在内部保留的id,用于在注册扩展时标识扩展

shmop扩展是使用资源的简单扩展的一个很好的例子

这是调用zend_register_list_析构函数_ex的实现


这里是MINIT函数的注册位置

谢谢亲爱的!那太好了。