need help with Windows CreateNamedPipe Security attributes process with undefined symbols at compile time

Jonathan Villa via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Nov 30 20:10:54 PST 2015


Hi,

I've been trying to create a NamedPipe with security attributes 
but at compile time throws:
Error 42: Symbol Undefined _InitializeSecurityDescriptor at 8
Error 42: Symbol Undefined _SetSecurityDescriptorDacl at 16

This is my code, I'm trying to do it using a class:


module asi.pipe;

import core.sys.windows.windows;
import core.sys.windows.winbase;
import core.stdc.stdlib;

class Pipe
{
	private HANDLE hPipe;
	private SECURITY_ATTRIBUTES sa;

	this(string name)
	{
		CreatePipe(name);
	}

	private void CreatePipe(string pipename)
	{

		sa.lpSecurityDescriptor = malloc(SECURITY_DESCRIPTOR.sizeof);
		InitializeSecurityDescriptor(cast(PSECURITY_DESCRIPTOR)sa.lpSecurityDescriptor, 1);
		SetSecurityDescriptorDacl(cast(PSECURITY_DESCRIPTOR)sa.lpSecurityDescriptor, TRUE, cast(ACL*)0, FALSE);
		sa.nLength = sa.sizeof;
		sa.bInheritHandle = TRUE;

		CreateNamedPipeA(cast(char*)pipename,
						 PIPE_ACCESS_DUPLEX,
						 (PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT),
						 PIPE_UNLIMITED_INSTANCES,
						 4096,
						 1536,
						 0,
						 &sa);
	}
}


Additional Info:
The installer came with just a few files to handle with Windows, 
comparing the the huge files that are in the repository of 
druntime: 
https://github.com/D-Programming-Language/druntime/tree/master/src/core/sys/windows
So I renamed the old import to Windows2 and copied this whole 
github/windows folder there and used its winbase.d because there 
are the functions definitions that I needed.

This functions that throw me errors belongs to the advapi32.dll 
file. I tried to add pragma(lib "advapi32"); but it didn't work.

I'm new/noob dealing with D and I would appreciate any help.

thanks.


More information about the Digitalmars-d-learn mailing list