var rgsFilenamesType = ctypes.ArrayType(ctypes.char.ptr);
var rgsFilenames = new rgsFilenamesType(1);
rgsFilenames[0] = 'rawr'; //OS.Path.join(OS.Constants.Path.profileDir, 'parent.lock');
但它不断告诉我:
Exception: expected type pointer, got "rawr"
我的目标是要在这里传递给这个函式:
dwError = RmRegisterResources(dwSession, rgsFilenames.length, rgsFilenames, 0, null, 0, null);
声明此功能:
/* http://msdn.microsoft.com/en-us/library/windows/desktop/aa373663%28v=vs.85%29.aspx
* DWORD WINAPI RmRegisterResources(
* __in_ DWORD dwSessionHandle,
* __in_ UINT nFiles,
* __in_opt_ LPCWSTR rgsFilenames[ ],
* __in_ UINT nApplications,
* __in_opt_ RM_UNIQUE_PROCESS rgApplications[ ],
* __in_ UINT nServices,
* __in_opt_ LPCWSTR rgsServiceNames[ ]
*);
*/
var RmRegisterResources = lib.rstrtmgr.declare('RmRegisterResources', ctypes.winapi_abi, ctypes.unsigned_long, // DWORD
ctypes.uint32_t, // DWORD
ctypes.unsigned_int, // UINT
ctypes.ArrayType(ctypes.char.ptr, 1), // LPCWSTR
ctypes.unsigned_int, // UINT
ctypes.ArrayType(struct_RM_UNIQUE_PROCESS, 1), // RM_UNIQUE_PROCESS
ctypes.unsigned_int, // UINT
ctypes.ArrayType(ctypes.char.ptr, 1) // LPCWSTR
);