Security Descriptor
-
Hallo!
Bräuchte Hilfe von 'nem C++ Guru, der sich mit der Windowsprogrammierung auskennt. Meine Kenntnisse sind, was dieses ganze Security und Access Rights betrifft, recht beschränkt.
Es geht um Folgendes:
Ich öffne einen seriellen Port so:
m_hCom = CreateFile(m_sComPort, GENERIC_READ | GENERIC_WRITE, 0, // Exclusive access 0, // security OPEN_EXISTING, FILE_FLAG_OVERLAPPED, // Non-Overlapped I/O NULL); // Null templatespäter versuche ich darauf zu schreiben:
bWriteRC = WriteFile(m_hCom, sSend,iFrameLength,&iBytesWritten,&ola);die overlapped Struktur ola sieht folgendermaßen aus:
SECURITY_DESCRIPTOR * pSd; SECURITY_DESCRIPTOR sd; pSd = &sd; InitializeSecurityDescriptor( pSd, SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl( pSd, TRUE, NULL, FALSE); PSID sid = NULL; SID_IDENTIFIER_AUTHORITY sid_auth = {SECURITY_WORLD_SID_AUTHORITY }; AllocateAndInitializeSid( &sid_auth, 1, 0, 0, 0, 0, 0, 0, 0, 0, &sid); SetSecurityDescriptorOwner(pSd, &sid, FALSE); SECURITY_ATTRIBUTES * pSa; SECURITY_ATTRIBUTES sa; sa.nLength = sizeof(sa); sa.bInheritHandle = 1; sa.lpSecurityDescriptor = pSd; pSa = &sa; ola.hEvent = CreateEvent( pSa, // security attributes ALL ACCESS TRUE, // manual reset event FALSE, // not signaled NULL // no name ;Jetzt bekomme ich aber beim WriteFile einen Error 1337 - Invalid SID
und weiß nicht warum. Wenn ich die Initialisierung des SID weglasse, bekomme ich später bei einem WaitCommEvent()bReadRC = WaitCommEvent (m_hCom, &dwCommModemStatus, &ola);einen Error 5 - Access Denied
Hat irgendjemand eine Ahnung, was ich da falsch mache? Wie gesagt, C++ unter Windows ist neu für mich. Danke
Markus
P.S.: WaitCommEvent ohne Overlapped geht, aber das brauch ich für die Applikation leider nicht (kein Rücksprung vor Eventvorkommen)